From 1e1f46f6fc3e23e544443c43e2fe1a16354ff1d0 Mon Sep 17 00:00:00 2001 From: Tim203 Date: Sun, 22 Nov 2020 22:20:07 +0100 Subject: [PATCH] Temp fix to make 1.13+ instant Skin updating work --- .../geysermc/floodgate/FloodgatePlatform.java | 4 ++- .../geysermc/floodgate/skin/SkinHandler.java | 1 + pom.xml | 2 +- .../SpigotPluginMessageHandler.java | 2 +- .../pluginmessage/SpigotSkinHandler.java | 28 ++++++++++++++----- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java b/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java index 3e86f14b..7498b9ad 100644 --- a/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java +++ b/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java @@ -42,6 +42,7 @@ import org.geysermc.floodgate.config.loader.ConfigLoader; import org.geysermc.floodgate.link.PlayerLinkLoader; import org.geysermc.floodgate.module.ConfigLoadedModule; import org.geysermc.floodgate.module.PostInitializeModule; +import org.geysermc.floodgate.platform.pluginmessage.PluginMessageHandler; import org.geysermc.floodgate.util.LanguageManager; public class FloodgatePlatform { @@ -67,7 +68,7 @@ public class FloodgatePlatform { @Inject public void init(@Named("dataDirectory") Path dataDirectory, ConfigLoader configLoader, PlayerLinkLoader playerLinkLoader, HandshakeHandler handshakeHandler, - Injector injector) { + Injector injector, PluginMessageHandler pluginMessageHandler) { if (!Files.isDirectory(dataDirectory)) { try { @@ -89,6 +90,7 @@ public class FloodgatePlatform { guice.injectMembers(languageManager); guice.injectMembers(playerLinkLoader); guice.injectMembers(handshakeHandler); + guice.injectMembers(pluginMessageHandler); PlayerLink link = playerLinkLoader.load(); diff --git a/common/src/main/java/org/geysermc/floodgate/skin/SkinHandler.java b/common/src/main/java/org/geysermc/floodgate/skin/SkinHandler.java index bf76e9f7..adb41ae3 100644 --- a/common/src/main/java/org/geysermc/floodgate/skin/SkinHandler.java +++ b/common/src/main/java/org/geysermc/floodgate/skin/SkinHandler.java @@ -66,6 +66,7 @@ public abstract class SkinHandler { logger.info(uploadResult.getResponse().toString()); messageHandler.sendSkinResponse( player.getJavaUniqueId(), uploadResult.getResponse().toString()); + applySkin(player, uploadResult); }); } diff --git a/pom.xml b/pom.xml index c1f4634d..9cb0aa4c 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 1.2.0-SNAPSHOT - 1.12-R0.1-SNAPSHOT + 1.13-R0.1-SNAPSHOT 1.15-SNAPSHOT 1.1.0 diff --git a/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotPluginMessageHandler.java b/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotPluginMessageHandler.java index b03bd2b8..a9b32024 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotPluginMessageHandler.java +++ b/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotPluginMessageHandler.java @@ -25,8 +25,8 @@ package org.geysermc.floodgate.pluginmessage; +import com.google.common.base.Charsets; import java.util.UUID; -import org.apache.commons.codec.Charsets; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.messaging.Messenger; diff --git a/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotSkinHandler.java b/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotSkinHandler.java index c45c09b7..646366c9 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotSkinHandler.java +++ b/spigot/src/main/java/org/geysermc/floodgate/pluginmessage/SpigotSkinHandler.java @@ -26,15 +26,17 @@ package org.geysermc.floodgate.pluginmessage; import com.google.gson.JsonObject; +import com.google.inject.Inject; import com.mojang.authlib.GameProfile; import com.mojang.authlib.properties.Property; import com.mojang.authlib.properties.PropertyMap; import java.lang.reflect.Method; -import java.util.Collection; import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.geysermc.floodgate.SpigotPlugin; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.api.player.FloodgatePlayer; +import org.geysermc.floodgate.config.FloodgateConfig; import org.geysermc.floodgate.platform.pluginmessage.PluginMessageHandler; import org.geysermc.floodgate.skin.SkinHandler; import org.geysermc.floodgate.skin.SkinUploader.UploadResult; @@ -50,10 +52,19 @@ public class SpigotSkinHandler extends SkinHandler { GET_PROFILE_METHOD = ReflectionUtils.getMethod(craftPlayerClass, "getProfile"); } + private SpigotPlugin plugin; + private FloodgateConfig config; + public SpigotSkinHandler(PluginMessageHandler messageHandler, FloodgateLogger logger) { super(messageHandler, logger); } + @Inject + public void init(SpigotPlugin plugin, FloodgateConfig config) { + this.plugin = plugin; + this.config = config; + } + @Override protected void applySkin(FloodgatePlayer floodgatePlayer, UploadResult result) { Player player = Bukkit.getPlayer(floodgatePlayer.getCorrectUniqueId()); @@ -75,12 +86,15 @@ public class SpigotSkinHandler extends SkinHandler { response.get("signature").getAsString()); properties.put("textures", property); - //todo add config option, because this might cause some issues I guess? - for (Player p : Bukkit.getOnlinePlayers()) { - if (p != player) { - p.hidePlayer(player); - p.showPlayer(player); - } + if (config.isApplySkinDirectly()) { + plugin.getServer().getScheduler().runTask(plugin, () -> { + for (Player p : Bukkit.getOnlinePlayers()) { + if (p != player) { + p.hidePlayer(plugin, player); + p.showPlayer(plugin, player); + } + } + }); } } }