From 9dd3d51012536e2f7d3d7e70eb660503bb53ed47 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 5 Jul 2025 02:46:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0debug=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/command/BukkitCommandManager.java | 1 + .../command/feature/DebugEntityIdCommand.java | 42 +++++++++++++++++++ common-files/src/main/resources/commands.yml | 7 ++++ gradle.properties | 2 +- 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugEntityIdCommand.java diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java index ff38f3b8d..008bb53b8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java @@ -41,6 +41,7 @@ public class BukkitCommandManager extends AbstractCommandManager new DebugGetBlockInternalIdCommand(this, plugin), new DebugAppearanceStateUsageCommand(this, plugin), new DebugClearCooldownCommand(this, plugin), + new DebugEntityIdCommand(this, plugin), new DebugRealStateUsageCommand(this, plugin), new DebugItemDataCommand(this, plugin), new DebugSetBlockCommand(this, plugin), diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugEntityIdCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugEntityIdCommand.java new file mode 100644 index 000000000..2513f665e --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugEntityIdCommand.java @@ -0,0 +1,42 @@ +package net.momirealms.craftengine.bukkit.plugin.command.feature; + +import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager; +import org.bukkit.World; +import org.bukkit.command.CommandSender; +import org.incendo.cloud.Command; +import org.incendo.cloud.CommandManager; +import org.incendo.cloud.bukkit.parser.WorldParser; +import org.incendo.cloud.parser.standard.IntegerParser; + +public class DebugEntityIdCommand extends BukkitCommandFeature { + + public DebugEntityIdCommand(CraftEngineCommandManager commandManager, CraftEngine plugin) { + super(commandManager, plugin); + } + + @Override + public Command.Builder assembleCommand(CommandManager manager, Command.Builder builder) { + return builder + .required("world", WorldParser.worldParser()) + .required("entityId", IntegerParser.integerParser()) + .handler(context -> { + World world = context.get("world"); + int entityId = context.get("entityId"); + Object entityLookup = FastNMS.INSTANCE.method$ServerLevel$getEntityLookup(FastNMS.INSTANCE.field$CraftWorld$ServerLevel(world)); + Object entity = FastNMS.INSTANCE.method$EntityLookup$get(entityLookup, entityId); + if (entity == null) { + context.sender().sendMessage("entity not found"); + return; + } + context.sender().sendMessage(entity.toString()); + }); + } + + @Override + public String getFeatureID() { + return "debug_entity_id"; + } +} \ No newline at end of file diff --git a/common-files/src/main/resources/commands.yml b/common-files/src/main/resources/commands.yml index f46602c17..3ac0d8c5c 100644 --- a/common-files/src/main/resources/commands.yml +++ b/common-files/src/main/resources/commands.yml @@ -196,6 +196,13 @@ debug_is_chunk_persistent_loaded: - /craftengine debug is-chunk-persistent-loaded - /ce debug is-chunk-persistent-loaded +debug_entity_id: + enable: true + permission: ce.command.debug.debug_entity_id + usage: + - /craftengine debug entity-id + - /ce debug entity-id + debug_test: enable: true permission: ce.command.debug.test diff --git a/gradle.properties b/gradle.properties index 99f75c8d9..b5d35bcb7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -50,7 +50,7 @@ byte_buddy_version=1.17.5 ahocorasick_version=0.6.3 snake_yaml_version=2.4 anti_grief_version=0.18 -nms_helper_version=1.0.25 +nms_helper_version=1.0.26 evalex_version=3.5.0 reactive_streams_version=1.0.4 amazon_awssdk_version=2.31.23