From 8277189e353790e87560026327517dcfeb22fe6a Mon Sep 17 00:00:00 2001 From: pingwinek <91051771+pingwiniu@users.noreply.github.com> Date: Mon, 26 Jan 2026 22:32:08 +0100 Subject: [PATCH] Filter block entities by version support in ChunkDataPacket Block entities are now filtered to include only those supported by the current protocol version before being written to the buffer. This prevents unsupported block entities from being sent to clients on older versions. (I encountered this issue while trying to paste a schematica file on my server) --- .../limboapi/protocol/packets/s2c/ChunkDataPacket.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugin/src/main/java/net/elytrium/limboapi/protocol/packets/s2c/ChunkDataPacket.java b/plugin/src/main/java/net/elytrium/limboapi/protocol/packets/s2c/ChunkDataPacket.java index c75cee60..f7ea6b02 100644 --- a/plugin/src/main/java/net/elytrium/limboapi/protocol/packets/s2c/ChunkDataPacket.java +++ b/plugin/src/main/java/net/elytrium/limboapi/protocol/packets/s2c/ChunkDataPacket.java @@ -184,8 +184,12 @@ public void encode(ByteBuf buf, Direction direction, ProtocolVersion version) { buf.writeBytes(data); if (version.compareTo(ProtocolVersion.MINECRAFT_1_9_4) >= 0) { List blockEntityEntries = this.chunk.getBlockEntityEntries(); - ProtocolUtils.writeVarInt(buf, blockEntityEntries.size()); - for (VirtualBlockEntity.Entry blockEntityEntry : blockEntityEntries) { + // Filter block entities to only include those supported on this version + List supportedEntries = blockEntityEntries.stream() + .filter(entry -> entry.getBlockEntity().isSupportedOn(version)) + .toList(); + ProtocolUtils.writeVarInt(buf, supportedEntries.size()); + for (VirtualBlockEntity.Entry blockEntityEntry : supportedEntries) { CompoundBinaryTag blockEntityNbt = blockEntityEntry.getNbt(); if (version.compareTo(ProtocolVersion.MINECRAFT_1_18) >= 0) { buf.writeByte(((blockEntityEntry.getPosX() & 15) << 4) | (blockEntityEntry.getPosZ() & 15));