From 1bb15d9551dc4ace662525e97621eb0b0411e5d3 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Sat, 28 Jun 2025 14:14:55 +0200 Subject: [PATCH] Fix RPlayer skin data --- .../src/de/steamwar/entity/RPlayer.java | 15 ++++++++++----- .../src/de/steamwar/network/NetworkSender.java | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RPlayer.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RPlayer.java index 5edbbeeb..0c383bfd 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RPlayer.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RPlayer.java @@ -40,7 +40,6 @@ import java.util.UUID; import java.util.function.Consumer; import java.util.function.Function; -@Getter public class RPlayer extends REntity { private static int skinPartsIndex() { @@ -65,7 +64,9 @@ public class RPlayer extends REntity { private static final Object skinPartsDataWatcher = BountifulWrapper.impl.getDataWatcherObject(skinPartsIndex(), Byte.class); + @Getter private final UUID actualUUID; + @Getter private final String name; public RPlayer(REntityServer server, UUID uuid, String name, Location location) { @@ -76,8 +77,8 @@ public class RPlayer extends REntity { } private GameProfile getGameProfile() { - Property skinData = CoreNetworkHandler.SKIN_DATA_PROMISES.computeIfAbsent(uuid, __ -> { - NetworkSender.sendOrQueue(new PlayerSkinRequestPacket(uuid)); + Property skinData = CoreNetworkHandler.SKIN_DATA_PROMISES.computeIfAbsent(actualUUID, __ -> { + NetworkSender.sendOrQueue(new PlayerSkinRequestPacket(actualUUID)); return new Property("textures", null, null); }); if (skinData.getValue() != null) { @@ -89,9 +90,12 @@ public class RPlayer extends REntity { } } + private GameProfile saved; + @Override void list(Consumer packetSink) { - packetSink.accept(ProtocolWrapper.impl.playerInfoPacketConstructor(ProtocolWrapper.PlayerInfoAction.ADD, getGameProfile(), GameMode.CREATIVE)); + saved = getGameProfile(); + packetSink.accept(ProtocolWrapper.impl.playerInfoPacketConstructor(ProtocolWrapper.PlayerInfoAction.ADD, saved, GameMode.CREATIVE)); } @Override @@ -108,7 +112,8 @@ public class RPlayer extends REntity { @Override void delist(Consumer packetSink) { - packetSink.accept(ProtocolWrapper.impl.playerInfoPacketConstructor(ProtocolWrapper.PlayerInfoAction.REMOVE, getGameProfile(), GameMode.CREATIVE)); + if (saved == null) saved = getGameProfile(); + packetSink.accept(ProtocolWrapper.impl.playerInfoPacketConstructor(ProtocolWrapper.PlayerInfoAction.REMOVE, saved, GameMode.CREATIVE)); } private static final Class namedSpawnPacket = Reflection.getClass("net.minecraft.network.protocol.game.ClientboundAddPlayerPacket"); diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/network/NetworkSender.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/network/NetworkSender.java index 8000ff23..197efd64 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/network/NetworkSender.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/network/NetworkSender.java @@ -44,7 +44,7 @@ public class NetworkSender implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { - if (!Bukkit.getOnlinePlayers().isEmpty()) { + if (Bukkit.getOnlinePlayers().size() > 1) { return; } Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> {