From f7b1eb751f36029c9cc4f8684a0d4ddfa2ef2539 Mon Sep 17 00:00:00 2001 From: halogly Date: Fri, 18 Jul 2025 14:07:15 +0800 Subject: [PATCH] Fix interactable logic and update entity registration Corrects the logic for interactable checks in ItemEventListener to ensure proper event triggering. Removes sneaking check from chiseled bookshelf interaction and updates HAPPY_GHAST entity registration to use valueOf instead of reflection for compatibility with newer versions. --- .../bukkit/item/listener/ItemEventListener.java | 2 +- .../momirealms/craftengine/bukkit/util/InteractUtils.java | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java index 8f2095acf..b0814f7d9 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/listener/ItemEventListener.java @@ -279,7 +279,7 @@ public class ItemEventListener implements Listener { .withParameter(DirectContextParameters.EVENT, dummy) ); CustomItem customItem = optionalCustomItem.get(); - if (!InteractUtils.isInteractable(player, blockData, hitResult, itemInHand) && !player.isSneaking()) { + if (!(InteractUtils.isInteractable(player, blockData, hitResult, itemInHand) && !player.isSneaking())) { customItem.execute(context, EventTrigger.RIGHT_CLICK); } if (dummy.isCancelled()) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java index 54e1aba40..87014ccae 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java @@ -94,7 +94,6 @@ public class InteractUtils { }); registerInteraction(BlockKeys.CHISELED_BOOKSHELF, (player, item, blockState, result) -> { Direction direction = result.getDirection(); - if (player.isSneaking()) return false; if (blockState instanceof ChiseledBookshelf chiseledBookshelf) { Direction facing = DirectionUtils.toDirection(chiseledBookshelf.getFacing()); return facing == direction; @@ -311,11 +310,7 @@ public class InteractUtils { EntityType.GLOW_ITEM_FRAME )); if (VersionHelper.isOrAbove1_21_6()) { - try { - Field happyGhastField = EntityType.class.getField("HAPPY_GHAST"); - EntityType happyGhast = (EntityType) happyGhastField.get(null); - set.add(happyGhast); - } catch (NoSuchFieldException | IllegalAccessException ignored) {} + set.add(EntityType.valueOf("HAPPY_GHAST")); } return Collections.unmodifiableSet(set); }