diff --git a/paper/src/main/java/com/denizenscript/denizen/paper/utilities/PaperAPIToolsImpl.java b/paper/src/main/java/com/denizenscript/denizen/paper/utilities/PaperAPIToolsImpl.java index a385a9d35e..aa2fd93e86 100644 --- a/paper/src/main/java/com/denizenscript/denizen/paper/utilities/PaperAPIToolsImpl.java +++ b/paper/src/main/java/com/denizenscript/denizen/paper/utilities/PaperAPIToolsImpl.java @@ -328,4 +328,9 @@ public String getText(TextDisplay textDisplay) { public void setText(TextDisplay textDisplay, String text) { textDisplay.text(PaperModule.parseFormattedText(text, ChatColor.WHITE)); } + + @Override + public void kickPlayer(Player player, String message) { + player.kick(PaperModule.parseFormattedText(message, ChatColor.WHITE)); + } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/KickCommand.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/KickCommand.java index c7aaa07dff..77973c217d 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/KickCommand.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/KickCommand.java @@ -1,12 +1,9 @@ package com.denizenscript.denizen.scripts.commands.player; -import com.denizenscript.denizencore.utilities.debugging.Debug; +import com.denizenscript.denizen.Denizen; +import com.denizenscript.denizen.utilities.PaperAPITools; +import com.denizenscript.denizencore.scripts.commands.generator.*; import com.denizenscript.denizen.objects.PlayerTag; -import com.denizenscript.denizencore.exceptions.InvalidArgumentsException; -import com.denizenscript.denizencore.objects.Argument; -import com.denizenscript.denizencore.objects.core.ElementTag; -import com.denizenscript.denizencore.objects.core.ListTag; -import com.denizenscript.denizencore.scripts.ScriptEntry; import com.denizenscript.denizencore.scripts.commands.AbstractCommand; import java.util.List; @@ -18,6 +15,7 @@ public KickCommand() { setSyntax("kick [|...] (reason:)"); setRequiredArguments(1, 2); isProcedural = false; + autoCompile(); } // <--[command] @@ -48,33 +46,11 @@ public KickCommand() { // - kick <[player]> "reason:Because I can." // --> - @Override - public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException { - for (Argument arg : scriptEntry) { - if (arg.matchesPrefix("reason")) { - scriptEntry.addObject("reason", arg.asElement()); - } - else if (arg.matchesPrefix("targets", "target", "players") - || arg.matchesArgumentList(PlayerTag.class)) { - scriptEntry.addObject("targets", arg.asType(ListTag.class).filter(PlayerTag.class, scriptEntry)); - } - } - scriptEntry.defaultObject("reason", new ElementTag("Kicked.")); - if (!scriptEntry.hasObject("targets")) { - throw new InvalidArgumentsException("Must specify target(s)."); - } - } - - @Override - public void execute(ScriptEntry scriptEntry) { - ElementTag reason = scriptEntry.getElement("reason"); - List targets = (List) scriptEntry.getObject("targets"); - if (scriptEntry.dbCallShouldDebug()) { - Debug.report(scriptEntry, getName(), db("targets", targets), reason); - } + public static void autoExecute(@ArgName("targets") @ArgLinear @ArgSubType(PlayerTag.class) List targets, + @ArgName("reason") @ArgPrefixed @ArgDefaultText("Kicked.") String reason) { for (PlayerTag player : targets) { if (player.isValid() && player.isOnline()) { - player.getPlayerEntity().kickPlayer(reason.toString()); + PaperAPITools.instance.kickPlayer(player.getPlayerEntity(), reason); } } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/utilities/PaperAPITools.java b/plugin/src/main/java/com/denizenscript/denizen/utilities/PaperAPITools.java index d5e9c575aa..2c8cea4c22 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/utilities/PaperAPITools.java +++ b/plugin/src/main/java/com/denizenscript/denizen/utilities/PaperAPITools.java @@ -174,4 +174,8 @@ public String getText(TextDisplay textDisplay) { public void setText(TextDisplay textDisplay, String text) { textDisplay.setText(text); } + + public void kickPlayer(Player player, String message) { + player.kickPlayer(message); + } }