From 3b5a2855ab8793e5518dcb43fb38170c69f1abb9 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 26 Jul 2025 17:43:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E5=8F=96=E8=8E=B7=E5=8F=96=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E7=B1=BB=E5=9E=8B=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../momirealms/craftengine/bukkit/util/EntityUtils.java | 9 +++++++++ .../craftengine/bukkit/util/InteractUtils.java | 9 ++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java index 851c8e41b..a4b87cde2 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java @@ -2,6 +2,8 @@ package net.momirealms.craftengine.bukkit.util; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBuiltInRegistries; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.world.BlockPos; import org.bukkit.Location; @@ -35,4 +37,11 @@ public class EntityUtils { return LegacyEntityUtils.spawnEntity(world, loc, type, function); } } + + public static Key getEntityType(Entity entity) { + Object nmsEntity = FastNMS.INSTANCE.method$CraftEntity$getHandle(entity); + Object entityType = FastNMS.INSTANCE.method$Entity$getType(nmsEntity); + Object id = FastNMS.INSTANCE.method$Registry$getKey(MBuiltInRegistries.ENTITY_TYPE, entityType); + return KeyUtils.resourceLocationToKey(id); + } } \ No newline at end of file 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 47ff02f32..95b2f2acb 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 @@ -4,8 +4,6 @@ import io.papermc.paper.entity.Shearable; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; import net.momirealms.craftengine.bukkit.item.behavior.BlockItemBehavior; import net.momirealms.craftengine.bukkit.item.recipe.BukkitRecipeManager; -import net.momirealms.craftengine.bukkit.nms.FastNMS; -import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBuiltInRegistries; import net.momirealms.craftengine.core.block.BlockKeys; import net.momirealms.craftengine.core.entity.EntityTypeKeys; import net.momirealms.craftengine.core.item.Item; @@ -485,10 +483,7 @@ public class InteractUtils { } public static boolean isEntityInteractable(Player player, Entity entity, @Nullable Item item) { - Object nmsEntity = FastNMS.INSTANCE.method$CraftEntity$getHandle(entity); - Object entityType = FastNMS.INSTANCE.method$Entity$getType(nmsEntity); - Object id = FastNMS.INSTANCE.method$Registry$getKey(MBuiltInRegistries.ENTITY_TYPE, entityType); - TriFunction, Boolean> func = ENTITY_INTERACTIONS.get(KeyUtils.resourceLocationToKey(id)); + TriFunction, Boolean> func = ENTITY_INTERACTIONS.get(EntityUtils.getEntityType(entity)); return func != null && func.apply(player, entity, item); } @@ -507,7 +502,7 @@ public class InteractUtils { } private static boolean canFeed(Entity entity, Item item) { - return entity instanceof Animals animals && item.is(Key.of(animals.getType().toString().toLowerCase() + "_food")); + return entity instanceof Animals && item.is(Key.of(EntityUtils.getEntityType(entity).value() + "_food")); } private static boolean hasSaddle(Player player, Entity entity) {