From d629245f63571d03327426077d1c4e2e3cc23820 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Thu, 17 Apr 2025 22:44:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D1.20.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/plugin/network/PacketConsumers.java | 14 ++++++++++++-- .../craftengine/bukkit/util/Reflections.java | 4 ++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index 26cf532a4..089c62248 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -1164,9 +1164,19 @@ public class PacketConsumers { try { BukkitServerPlayer player = (BukkitServerPlayer) user; String name = (String) Reflections.field$ServerboundHelloPacket$name.get(packet); - UUID uuid = (UUID) Reflections.field$ServerboundHelloPacket$uuid.get(packet); player.setName(name); - player.setUUID(uuid); + if (VersionHelper.isVersionNewerThan1_20_2()) { + UUID uuid = (UUID) Reflections.field$ServerboundHelloPacket$uuid.get(packet); + player.setUUID(uuid); + } else { + @SuppressWarnings("unchecked") + Optional uuid = (Optional) Reflections.field$ServerboundHelloPacket$uuid.get(packet); + if (uuid.isPresent()) { + player.setUUID(uuid.get()); + } else { + player.setUUID(UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(StandardCharsets.UTF_8))); + } + } } catch (Exception e) { CraftEngine.instance().logger().warn("Failed to handle ServerboundHelloPacket", e); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java index 5a4187e4a..bb3b4ba7b 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java @@ -6452,8 +6452,12 @@ public class Reflections { ); public static final Field field$ServerboundHelloPacket$uuid = requireNonNull( + VersionHelper.isVersionNewerThan1_20_2() ? ReflectionUtils.getDeclaredField( clazz$ServerboundHelloPacket, UUID.class, 0 + ) : + ReflectionUtils.getDeclaredField( + clazz$ServerboundHelloPacket, Optional.class, 0 ) );