From 7fd076c6578792657a46bdc438c84f74315cf9ad Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Sat, 26 Apr 2025 03:03:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(network):=20=E4=BF=AE=E5=A4=8D1.21.5?= =?UTF-8?q?=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/network/PacketConsumers.java | 24 +++++++++++++++++-- 1 file changed, 22 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 03c8d4ce0..1adde1b62 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 @@ -169,7 +169,19 @@ public class PacketConsumers { int chunkX = buf.readInt(); int chunkZ = buf.readInt(); // ClientboundLevelChunkPacketData - Tag heightmaps = buf.readNbt(false); + int heightmapsCount = 0; + Map heightmapsMap = new HashMap<>(); + Tag heightmaps = null; + if (VersionHelper.isVersionNewerThan1_21_5()) { + heightmapsCount = buf.readVarInt(); + for (int i = 0; i < heightmapsCount; i++) { + int key = buf.readVarInt(); + long[] value = buf.readLongArray(); + heightmapsMap.put(key, value); + } + } else { + heightmaps = buf.readNbt(false); + } int varInt = buf.readVarInt(); byte[] buffer = new byte[varInt]; buf.readBytes(buffer); @@ -250,7 +262,15 @@ public class PacketConsumers { buf.writeVarInt(event.packetID()); buf.writeInt(chunkX); buf.writeInt(chunkZ); - buf.writeNbt(heightmaps, false); + if (VersionHelper.isVersionNewerThan1_21_5()) { + buf.writeVarInt(heightmapsCount); + for (Map.Entry entry : heightmapsMap.entrySet()) { + buf.writeVarInt(entry.getKey()); + buf.writeLongArray(entry.getValue()); + } + } else { + buf.writeNbt(heightmaps, false); + } buf.writeVarInt(buffer.length); buf.writeBytes(buffer); buf.writeVarInt(blockEntitiesDataCount);