1
0
mirror of https://github.com/GeyserMC/Floodgate.git synced 2025-12-30 20:29:30 +00:00

Temp fix to make 1.13+ instant Skin updating work

This commit is contained in:
Tim203
2020-11-22 22:20:07 +01:00
parent 5d3acdebff
commit 1e1f46f6fc
5 changed files with 27 additions and 10 deletions

View File

@@ -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();

View File

@@ -66,6 +66,7 @@ public abstract class SkinHandler {
logger.info(uploadResult.getResponse().toString());
messageHandler.sendSkinResponse(
player.getJavaUniqueId(), uploadResult.getResponse().toString());
applySkin(player, uploadResult);
});
}

View File

@@ -45,7 +45,7 @@
<properties>
<geyser.version>1.2.0-SNAPSHOT</geyser.version>
<spigot.version>1.12-R0.1-SNAPSHOT</spigot.version>
<spigot.version>1.13-R0.1-SNAPSHOT</spigot.version>
<bungee.version>1.15-SNAPSHOT</bungee.version>
<velocity.version>1.1.0</velocity.version>

View File

@@ -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;

View File

@@ -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);
}
}
});
}
}
}