From 21e663b1877b3f8376de4ded28d7427c7586c491 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Tue, 1 Apr 2025 22:02:59 +0800 Subject: [PATCH] fix colliders --- .../bukkit/entity/furniture/BukkitFurnitureManager.java | 1 + .../bukkit/entity/furniture/LoadedFurniture.java | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) 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 4f8b416d7..3066082fb 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 @@ -359,6 +359,7 @@ public class BukkitFurnitureManager implements FurnitureManager { int collisionEntityId = FastNMS.INSTANCE.method$Entity$getId(collisionEntity); this.furnitureByCollisionEntitiesId.put(collisionEntityId, loadedFurniture); } + loadedFurniture.initializeColliders(); return loadedFurniture; } 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 344088114..90841f3e7 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 @@ -138,12 +138,18 @@ public class LoadedFurniture { double z2 = z + offset2.z() - offset.z(); Object aabb = FastNMS.INSTANCE.constructor$AABB(x1, y1, z1, x2, y2, z2); CollisionEntity entity = FastNMS.INSTANCE.createCollisionShulker(world, aabb, x, y, z, collider.canBeHitByProjectile()); - FastNMS.INSTANCE.method$LevelWriter$addFreshEntity(world, entity); this.collisionEntities[i] = entity; } } } + public void initializeColliders() { + Object world = FastNMS.INSTANCE.field$CraftWorld$ServerLevel(this.location.getWorld()); + for (CollisionEntity entity : this.collisionEntities) { + FastNMS.INSTANCE.method$LevelWriter$addFreshEntity(world, entity); + } + } + @NotNull public Object spawnPacket(Player player) { // TODO hasPermission might be slow, can we use a faster way in the future?