From c59dc8ed15b0ea52bb0754123be1dd0669a0ac5c Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Tue, 1 Apr 2025 19:06:59 +0800 Subject: [PATCH] test --- .../entity/furniture/BukkitFurnitureManager.java | 8 ++------ .../bukkit/entity/furniture/LoadedFurniture.java | 12 ++++++------ .../entity/furniture/hitbox/ShulkerHitBox.java | 8 +++++--- .../bukkit/plugin/network/PacketConsumers.java | 3 ++- gradle.properties | 2 +- 5 files changed, 16 insertions(+), 17 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 77e8964d3..55dcf71fa 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 @@ -357,12 +357,8 @@ public class BukkitFurnitureManager implements FurnitureManager { this.furnitureByEntityId.put(entityId, loadedFurniture); } for (CollisionEntity collisionEntity : loadedFurniture.collisionEntities()) { - try { - int collisionEntityId = (int) Reflections.method$Entity$getId.invoke(collisionEntity); - this.furnitureByCollisionEntitiesId.put(collisionEntityId, loadedFurniture); - } catch (IllegalAccessException | InvocationTargetException e) { - throw new RuntimeException(e); - } + int collisionEntityId = FastNMS.INSTANCE.method$Entity$getId(collisionEntity); + this.furnitureByCollisionEntitiesId.put(collisionEntityId, loadedFurniture); } 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 7f2f9c3e0..2faa5e889 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 @@ -102,14 +102,14 @@ public class LoadedFurniture { for (int entityId : ids) { fakeEntityIds.add(entityId); mainEntityIds.add(entityId); - hitBox.addSpawnPackets(ids, x, y, z, yaw, conjugated, (packet, canBeMinimized) -> { - packets.add(packet); - if (this.minimized && !canBeMinimized) { - minimizedPackets.add(packet); - } - }); this.hitBoxes.put(entityId, hitBox); } + hitBox.addSpawnPackets(ids, x, y, z, yaw, conjugated, (packet, canBeMinimized) -> { + packets.add(packet); + if (this.minimized && !canBeMinimized) { + minimizedPackets.add(packet); + } + }); } try { this.cachedSpawnPacket = Reflections.constructor$ClientboundBundlePacket.newInstance(packets); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerHitBox.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerHitBox.java index 2c3362f93..105c6305c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerHitBox.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerHitBox.java @@ -45,8 +45,9 @@ public class ShulkerHitBox extends AbstractHitBox { ShulkerData.SharedFlags.addEntityDataIfNotDefaultValue((byte) 0x20, this.cachedShulkerValues); // 不可见 if (this.interactionEntity) { - InteractionEntityData.Height.addEntityDataIfNotDefaultValue(getPeekHeight(peek, scale) + 0.001f, cachedInteractionValues); - InteractionEntityData.Width.addEntityDataIfNotDefaultValue((float) scale + 0.001f, cachedInteractionValues); + // make it a litter bigger + InteractionEntityData.Height.addEntityDataIfNotDefaultValue(getPeekHeight(peek, scale) + 0.01f, cachedInteractionValues); + InteractionEntityData.Width.addEntityDataIfNotDefaultValue((float) scale + 0.01f, cachedInteractionValues); InteractionEntityData.Responsive.addEntityDataIfNotDefaultValue(interactive, cachedInteractionValues); } } @@ -115,8 +116,9 @@ public class ShulkerHitBox extends AbstractHitBox { packets.accept(Reflections.constructor$ClientboundUpdateAttributesPacket0.newInstance(entityIds[1], Collections.singletonList(attributeInstance)), false); } if (this.interactionEntity) { + // make it a litter lower packets.accept(Reflections.constructor$ClientboundAddEntityPacket.newInstance( - entityIds[2], UUID.randomUUID(), x + offset.x, y + offset.y - 0.0005f, z - offset.z, 0, yaw, + entityIds[2], UUID.randomUUID(), x + offset.x, y + offset.y - 0.005f, z - offset.z, 0, yaw, Reflections.instance$EntityType$INTERACTION, 0, Reflections.instance$Vec3$Zero, 0 ), true); packets.accept(Reflections.constructor$ClientboundSetEntityDataPacket.newInstance(entityIds[2], List.copyOf(this.cachedInteractionValues)), true); 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 c3782a22c..439968c87 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 @@ -626,7 +626,7 @@ public class PacketConsumers { } } } else if (entityType == Reflections.instance$EntityType$INTERACTION) { - // 取消服务端碰撞实体 + // Cancel collider entity packet int entityId = (int) Reflections.field$ClientboundAddEntityPacket$entityId.get(packet); LoadedFurniture furniture = BukkitFurnitureManager.instance().getLoadedFurnitureByCollisionEntityId(entityId); if (furniture != null) { @@ -911,6 +911,7 @@ public class PacketConsumers { callback.accept(new String(newCodepoints, 0, newCodepoints.length)); } } + public static final TriConsumer CUSTOM_PAYLOAD = (user, event, packet) -> { try { if (!VersionHelper.isVersionNewerThan1_20_5()) return; diff --git a/gradle.properties b/gradle.properties index 08a87bf87..3d8f43a14 100644 --- a/gradle.properties +++ b/gradle.properties @@ -49,7 +49,7 @@ mojang_brigadier_version=1.0.18 byte_buddy_version=1.15.11 snake_yaml_version=2.3 anti_grief_version=0.13 -nms_helper_version=0.26 +nms_helper_version=0.27 # Ignite Dependencies mixinextras_version=0.4.1 mixin_version=0.15.2+mixin.0.8.7