From b504be805edbfe3a659d9025dc87c17aa2e34cfe Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Tue, 1 Apr 2025 09:02:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(furniture):=20=E4=BF=AE=E5=A4=8D=E5=AE=B6?= =?UTF-8?q?=E5=85=B7=E4=BA=92=E5=8A=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/entity/furniture/BukkitFurnitureManager.java | 3 --- .../bukkit/entity/furniture/LoadedFurniture.java | 6 ++++++ .../craftengine/bukkit/plugin/network/PacketConsumers.java | 1 - 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java index 20150b906..de45c5ed7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java @@ -361,9 +361,6 @@ public class BukkitFurnitureManager implements FurnitureManager { int collisionEntityId = (int) Reflections.method$Entity$getId.invoke(collisionEntity); this.furnitureByCollisionEntitiesId.put(collisionEntityId, loadedFurniture); this.furnitureByEntityId.put(collisionEntityId, loadedFurniture); - for (HitBox hitBox : loadedFurniture.placement().hitBoxes()) { - loadedFurniture.hitBoxes().put(collisionEntityId, hitBox); - } } catch (IllegalAccessException | InvocationTargetException e) { throw new RuntimeException(e); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/LoadedFurniture.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/LoadedFurniture.java index 7f2f9c3e0..36b7e93c6 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/LoadedFurniture.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/LoadedFurniture.java @@ -99,6 +99,7 @@ public class LoadedFurniture { } for (HitBox hitBox : placement.hitBoxes()) { int[] ids = hitBox.acquireEntityIds(Reflections.instance$Entity$ENTITY_COUNTER::incrementAndGet); + int lastEntityId = -1; for (int entityId : ids) { fakeEntityIds.add(entityId); mainEntityIds.add(entityId); @@ -109,6 +110,11 @@ public class LoadedFurniture { } }); this.hitBoxes.put(entityId, hitBox); + lastEntityId = entityId; + } + // 预测添加一个CollisionEntity + if (lastEntityId != -1) { + this.hitBoxes.put(lastEntityId + 1, hitBox); } } try { 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 1669ce1c3..c3782a22c 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 @@ -690,7 +690,6 @@ public class PacketConsumers { Object actionType = Reflections.method$ServerboundInteractPacket$Action$getType.invoke(action); if (actionType == null) return; LoadedFurniture furniture = BukkitFurnitureManager.instance().getLoadedFurnitureByEntityId(entityId); - player.sendMessage("Interact with " + entityId + " " + actionType + " " + furniture); if (furniture == null) return; Location location = furniture.baseEntity().getLocation(); BukkitServerPlayer serverPlayer = (BukkitServerPlayer) user;