From c83f40c8cf051ea1a2d36b6e51180100d312d7b2 Mon Sep 17 00:00:00 2001 From: Alex 'mcmonkey' Goodwin Date: Mon, 1 Mar 2021 10:05:18 -0800 Subject: [PATCH] fix mixed up script type check in zap/assign --- .../denizen/scripts/commands/core/ZapCommand.java | 2 +- .../denizen/scripts/commands/item/TakeCommand.java | 6 +++--- .../scripts/commands/npc/AssignmentCommand.java | 10 ++-------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/core/ZapCommand.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/core/ZapCommand.java index c6f61e7d43..998d78c540 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/core/ZapCommand.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/core/ZapCommand.java @@ -84,7 +84,7 @@ public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException } else if (!scriptEntry.hasObject("script") && arg.matchesArgumentType(ScriptTag.class) - && arg.asType(ScriptTag.class).getType().equals("interact") + && arg.asType(ScriptTag.class).getContainer() instanceof InteractScriptContainer && !arg.matchesPrefix("step")) { scriptEntry.addObject("script", arg.asType(ScriptTag.class)); } diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/item/TakeCommand.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/item/TakeCommand.java index 931b694da7..2eb2f62d37 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/item/TakeCommand.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/item/TakeCommand.java @@ -179,7 +179,7 @@ else if (!scriptEntry.hasObject("slot") else if (!scriptEntry.hasObject("items") && !scriptEntry.hasObject("type") && arg.matchesArgumentList(ItemTag.class)) { - scriptEntry.addObject("items", ListTag.valueOf(arg.getRawValue().replace("item:", ""), scriptEntry.getContext()).filter(ItemTag.class, scriptEntry)); + scriptEntry.addObject("items", arg.asType(ListTag.class).filter(ItemTag.class, scriptEntry)); } else if (!scriptEntry.hasObject("inventory") && arg.matchesPrefix("f", "from") @@ -225,8 +225,8 @@ public void execute(ScriptEntry scriptEntry) { ElementTag nbtKey = scriptEntry.getElement("nbt_key"); ListTag flagList = scriptEntry.getObjectTag("flag_name"); List materialList = scriptEntry.getObjectTag("material"); - Type type = (Type) scriptEntry.getObject("type"); - List items = (List) scriptEntry.getObject("items"); + Type type = scriptEntry.getObjectTag("type"); + List items = scriptEntry.getObjectTag("items"); if (scriptEntry.dbCallShouldDebug()) { Debug.report(scriptEntry, getName(), ArgumentHelper.debugObj("Type", type.name()) + quantity.debug() diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/AssignmentCommand.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/AssignmentCommand.java index 98bb60c143..9f6ee01407 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/AssignmentCommand.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/AssignmentCommand.java @@ -1,6 +1,7 @@ package com.denizenscript.denizen.scripts.commands.npc; import com.denizenscript.denizen.objects.NPCTag; +import com.denizenscript.denizen.scripts.containers.core.AssignmentScriptContainer; import com.denizenscript.denizen.utilities.Utilities; import com.denizenscript.denizen.utilities.debugging.Debug; import com.denizenscript.denizen.npc.traits.AssignmentTrait; @@ -62,9 +63,7 @@ private enum Action {SET, REMOVE} @Override public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException { - for (Argument arg : scriptEntry.getProcessedArgs()) { - if (arg.matchesEnum(Action.values()) && !scriptEntry.hasObject("action")) { scriptEntry.addObject("action", Action.valueOf(arg.getValue().toUpperCase())); @@ -73,7 +72,7 @@ else if (arg.matchesArgumentType(ScriptTag.class) && !scriptEntry.hasObject("script")) { // Check the type of script.. it must be an assignment-type container if (arg.asType(ScriptTag.class) != null - && arg.asType(ScriptTag.class).getType().equalsIgnoreCase("assignment")) { + && arg.asType(ScriptTag.class).getContainer() instanceof AssignmentScriptContainer) { scriptEntry.addObject("script", arg.asType(ScriptTag.class)); } else { @@ -88,8 +87,6 @@ else if (!scriptEntry.hasObject("npcs") arg.reportUnhandled(); } } - - if (!scriptEntry.hasObject("npcs")) { if (!Utilities.entryHasNPC(scriptEntry)) { throw new InvalidArgumentsException("This command requires a linked NPC!"); @@ -102,7 +99,6 @@ else if (!scriptEntry.hasObject("npcs") if (scriptEntry.getObject("action").equals(Action.SET) && !scriptEntry.hasObject("script")) { throw new InvalidArgumentsException("Script specified was missing or invalid."); } - } @Override @@ -111,14 +107,12 @@ public void execute(ScriptEntry scriptEntry) { ScriptTag script = scriptEntry.getObjectTag("script"); Action action = (Action) scriptEntry.getObject("action"); List npcs = (List) scriptEntry.getObject("npcs"); - if (scriptEntry.dbCallShouldDebug()) { Debug.report(scriptEntry, getName(), ArgumentHelper.debugObj("action", action) + (script != null ? script.debug() : "") + ArgumentHelper.debugList("npc", npcs)); } - for (NPCTag npc : npcs) { if (action.equals(Action.SET)) { npc.getCitizen().getOrAddTrait(AssignmentTrait.class).setAssignment(script.getName(), Utilities.getEntryPlayer(scriptEntry));