From e6c86a61db49700ec98c14e9c9ad8a8eb59d5628 Mon Sep 17 00:00:00 2001 From: Goodbird Date: Sat, 20 Jan 2024 12:22:05 +0300 Subject: [PATCH] Created a subcommand triggering scripted command event --- .../java/kamkeel/command/CommandCommand.java | 56 +++++++++++++++++++ .../java/kamkeel/command/CommandKamkeel.java | 1 + 2 files changed, 57 insertions(+) create mode 100644 src/main/java/kamkeel/command/CommandCommand.java diff --git a/src/main/java/kamkeel/command/CommandCommand.java b/src/main/java/kamkeel/command/CommandCommand.java new file mode 100644 index 000000000..81f0aa0ae --- /dev/null +++ b/src/main/java/kamkeel/command/CommandCommand.java @@ -0,0 +1,56 @@ +package kamkeel.command; + +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.math.BlockPos; +import noppes.npcs.EventHooks; +import noppes.npcs.api.IPos; +import noppes.npcs.api.IWorld; +import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.event.CustomNPCsEvent; + +public class CommandCommand extends CommandKamkeelBase { + + @Override + public String getCommandName() { + return "command"; + } + + @Override + public String getDescription() { + return "command CommandID [arg1 arg2 ... argn]"; + } + + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if (args.length < 1) { + sendError(sender, "You must specify the command id"); + return; + } + + int commandId; + try { + commandId = Integer.parseInt(args[0]); + } catch (NumberFormatException ex) { + sendError(sender, "CommandID must be an integer: " + args[0]); + return; + } + + String[] commandArgs = new String[args.length - 1]; + System.arraycopy(args, 1, commandArgs, 0, args.length - 1); + + IWorld senderWorld = NpcAPI.Instance().getIWorld(sender.getEntityWorld()); + + ChunkCoordinates senderCoords = sender.getPlayerCoordinates(); + IPos senderPos = NpcAPI.Instance().getIPos(new BlockPos(senderCoords.posX, senderCoords.posY, senderCoords.posZ)); + + CustomNPCsEvent.ScriptedCommandEvent event = new CustomNPCsEvent.ScriptedCommandEvent(senderWorld, senderPos, sender.getCommandSenderName(), commandId, commandArgs); + EventHooks.onScriptedCommand(event); + + if (!event.replyMessage.isEmpty()) { + sendMessage(sender, event.replyMessage); + } + } +} diff --git a/src/main/java/kamkeel/command/CommandKamkeel.java b/src/main/java/kamkeel/command/CommandKamkeel.java index b2eacc390..8ab279507 100644 --- a/src/main/java/kamkeel/command/CommandKamkeel.java +++ b/src/main/java/kamkeel/command/CommandKamkeel.java @@ -32,6 +32,7 @@ public class CommandKamkeel extends CommandBase{ registerCommand(new ConfigCommand()); registerCommand(new AnimationCommand()); registerCommand(new OverlayCommand()); + registerCommand(new CommandCommand()); } public void registerCommand(CommandKamkeelBase command){