From 7947f404352482c8ad624cadc915c1ac5feac98c Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Fri, 4 Apr 2025 08:17:01 +0800 Subject: [PATCH] =?UTF-8?q?perf(bukkit):=20=E4=BC=98=E5=8C=96=20BlockDispl?= =?UTF-8?q?ay=20=E5=AE=9E=E4=BD=93=E7=9A=84=E6=95=B0=E6=8D=AE=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/network/PacketConsumers.java | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 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 42372cd01..b4d9ff905 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 @@ -972,28 +972,31 @@ public class PacketConsumers { Object entity = Reflections.method$EntityLookup$get.invoke(entityLookup, id); if (entity == null) return; Object entityType = Reflections.method$Entity$getType.invoke(entity); - if (entityType != Reflections.instance$EntityType$BLOCK_DISPLAY) return; - List packedItems = (List) Reflections.field$ClientboundSetEntityDataPacket$packedItems.get(packet); - for (int i = 0; i < packedItems.size(); i++) { - Object packedItem = packedItems.get(i); - int entityDataId = (int) Reflections.field$SynchedEntityData$DataValue$id.get(packedItem); - if ((VersionHelper.isVersionNewerThan1_20_2() && entityDataId != 23) - || (!VersionHelper.isVersionNewerThan1_20_2() && entityDataId != 22)) { - continue; + if (entityType == Reflections.instance$EntityType$BLOCK_DISPLAY) { + List packedItems = (List) Reflections.field$ClientboundSetEntityDataPacket$packedItems.get(packet); + for (int i = 0; i < packedItems.size(); i++) { + Object packedItem = packedItems.get(i); + int entityDataId = (int) Reflections.field$SynchedEntityData$DataValue$id.get(packedItem); + if ((VersionHelper.isVersionNewerThan1_20_2() && entityDataId != 23) + || (!VersionHelper.isVersionNewerThan1_20_2() && entityDataId != 22)) { + continue; + } + Object blockState = Reflections.field$SynchedEntityData$DataValue$value.get(packedItem); + Object serializer = Reflections.field$SynchedEntityData$DataValue$serializer.get(packedItem); + int stateId = BlockStateUtils.blockStateToId(blockState); + int newStateId; + if (!user.clientModEnabled()) { + newStateId = remap(stateId); + } else { + newStateId = remapMOD(stateId); + } + packedItems.set(i, Reflections.constructor$SynchedEntityData$DataValue.newInstance( + entityDataId, serializer, BlockStateUtils.idToBlockState(newStateId) + )); + break; } - Object blockState = Reflections.field$SynchedEntityData$DataValue$value.get(packedItem); - Object serializer = Reflections.field$SynchedEntityData$DataValue$serializer.get(packedItem); - int stateId = BlockStateUtils.blockStateToId(blockState); - int newStateId; - if (!user.clientModEnabled()) { - newStateId = remap(stateId); - } else { - newStateId = remapMOD(stateId); - } - packedItems.set(i, Reflections.constructor$SynchedEntityData$DataValue.newInstance( - entityDataId, serializer, BlockStateUtils.idToBlockState(newStateId) - )); } + // todo修改其他实体的物品的方块谓词 } catch (Exception e) { CraftEngine.instance().logger().warn("Failed to handle ClientboundSetEntityDataPacket", e); }