diff --git a/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerPrestartScriptEvent.java b/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerPrestartScriptEvent.java index 562a72b76c..c03f314e42 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerPrestartScriptEvent.java +++ b/plugin/src/main/java/com/denizenscript/denizen/events/server/ServerPrestartScriptEvent.java @@ -41,7 +41,7 @@ public String getName() { public void specialHackRunEvent() { for (WorldScriptContainer container : ScriptEvent.worldContainers) { - if (container.contains("events.on server prestart")) { + if (container.containsScriptSection("events.on server prestart")) { ScriptPath path = new ScriptPath(container, "server prestart", "on server prestart"); clone().run(path); } diff --git a/plugin/src/main/java/com/denizenscript/denizen/npc/actions/ActionHandler.java b/plugin/src/main/java/com/denizenscript/denizen/npc/actions/ActionHandler.java index a7e3eb299e..45d7741ecc 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/npc/actions/ActionHandler.java +++ b/plugin/src/main/java/com/denizenscript/denizen/npc/actions/ActionHandler.java @@ -36,7 +36,7 @@ public String doAction(String actionName, NPCTag npc, PlayerTag player, Assignme return determination; } - if (!assignment.contains("actions.on " + actionName)) { + if (!assignment.containsScriptSection("actions.on " + actionName)) { return determination; } diff --git a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/AssignmentTrait.java b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/AssignmentTrait.java index 32506b04fc..652b2416de 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/AssignmentTrait.java +++ b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/AssignmentTrait.java @@ -34,6 +34,7 @@ import org.bukkit.projectiles.ProjectileSource; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.UUID; @@ -172,7 +173,7 @@ public void describe(CommandSender sender, int page) throws CommandException { boolean entriesPresent = false; paginator.addLine(ChatColor.GRAY + "Interact Scripts:"); paginator.addLine("Key: Priority Name"); - if (assignmentScript.contains("INTERACT SCRIPTS")) { + if (assignmentScript.contains("INTERACT SCRIPTS", List.class)) { entriesPresent = true; for (String scriptEntry : assignmentScript.getStringList("INTERACT SCRIPTS")) { paginator.addLine("" + scriptEntry); @@ -188,25 +189,11 @@ public void describe(CommandSender sender, int page) throws CommandException { } return; } - // Scheduled Activities - entriesPresent = false; - paginator.addLine(ChatColor.GRAY + "Scheduled Scripts:"); - paginator.addLine("Key: Time Name"); - if (assignmentScript.contains("SCHEDULED ACTIVITIES")) { - entriesPresent = true; - for (String scriptEntry : assignmentScript.getStringList("SCHEDULED ACTIVITIES")) { - paginator.addLine("" + scriptEntry.split(" ")[0] + " " + scriptEntry.split(" ", 2)[1]); - } - } - if (!entriesPresent) { - paginator.addLine("No scheduled scripts activities."); - } - paginator.addLine(""); // Actions entriesPresent = false; paginator.addLine(ChatColor.GRAY + "Actions:"); paginator.addLine("Key: Action name Script Size"); - if (assignmentScript.contains("ACTIONS")) { + if (assignmentScript.contains("ACTIONS", Map.class)) { entriesPresent = true; } if (entriesPresent) { diff --git a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/ConstantsTrait.java b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/ConstantsTrait.java index 4349677992..dc3de86071 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/npc/traits/ConstantsTrait.java +++ b/plugin/src/main/java/com/denizenscript/denizen/npc/traits/ConstantsTrait.java @@ -145,7 +145,7 @@ public Map rebuildAssignmentConstants() { } try { - if (ScriptRegistry.getScriptContainer(assignment).contains("DEFAULT CONSTANTS")) { + if (ScriptRegistry.getScriptContainer(assignment).contains("DEFAULT CONSTANTS", Map.class)) { for (StringHolder constant : ScriptRegistry.getScriptContainer(assignment) .getConfigurationSection("DEFAULT CONSTANTS").getKeys(false)) { assignmentConstants.put(CoreUtilities.toLowerCase(constant.str), diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/ColorTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/ColorTag.java index 9a00300629..832ccdb7ec 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/ColorTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/ColorTag.java @@ -30,7 +30,7 @@ public class ColorTag implements ObjectTag { // // Note that a ColorTag is NOT a base dye color (used by wool, etc). That is handled by a separate naming system. // - // Construction a ColorTag also accepts 'random' to pick a random RGB color, or hex code like '#FF00FF'. + // Constructing a ColorTag also accepts 'random' to pick a random RGB color, or hex code like '#FF00FF'. // // A list of accepted color names can be found at // <@link url https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Color.html> diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java index a1c65182f9..c4f02ebf26 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java @@ -2041,7 +2041,7 @@ else if (meta.hasDisplayName() && CoreUtilities.toLowerCase(meta.getDisplayName( // @returns ObjectTag // @description // If one slot is specified, returns the ItemTag in the specified slot. - // If more than what slot is specified, returns a ListTag(ItemTag) of the item in each given slot. + // If more than one slot is specified, returns a ListTag(ItemTag) of the item in each given slot. // --> tagProcessor.registerTag(ObjectTag.class, "slot", (attribute, object) -> { if (!attribute.hasParam()) { diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java index 5e39041693..dac1837f16 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java @@ -361,7 +361,7 @@ public String getScriptName() { } public void setItemScript(ItemScriptContainer script) { - if (script.contains("NO_ID") && Boolean.valueOf(script.getString("NO_ID"))) { + if (script.contains("NO_ID", String.class) && Boolean.valueOf(script.getString("NO_ID"))) { return; } setItemStack(NMSHandler.getItemHelper().addNbtData(getItemStack(), "DenizenItemScript", new StringTag(CoreUtilities.toLowerCase(script.getName())))); diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemEnchantments.java b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemEnchantments.java index 2163cd5ce0..e514032d6d 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemEnchantments.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemEnchantments.java @@ -241,11 +241,13 @@ public void adjust(Mechanism mechanism) { // @input MapTag // @description // Sets the item's enchantments as a map of EnchantmentTags or enchantment names to level. + // For example: - inventory adjust slot:hand enchantments:sharpness=1 // @tags // // --> if (mechanism.matches("enchantments")) { - if (mechanism.getValue().asString().startsWith("map@")) { + String val = mechanism.getValue().asString(); + if (val.startsWith("map@") || val.startsWith("[") || (val.contains("=") && !val.contains(","))) { MapTag map = mechanism.valueAsType(MapTag.class); for (Map.Entry enchantments : map.map.entrySet()) { Enchantment ench = EnchantmentTag.valueOf(enchantments.getKey().low, mechanism.context).enchantment; diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/AssignmentScriptContainer.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/AssignmentScriptContainer.java index 3f20baf755..cdad10d430 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/AssignmentScriptContainer.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/AssignmentScriptContainer.java @@ -4,6 +4,8 @@ import com.denizenscript.denizencore.scripts.containers.ScriptContainer; import com.denizenscript.denizencore.utilities.YamlConfiguration; +import java.util.List; + public class AssignmentScriptContainer extends ScriptContainer { // <--[language] @@ -53,7 +55,7 @@ public class AssignmentScriptContainer extends ScriptContainer { public AssignmentScriptContainer(YamlConfiguration configurationSection, String scriptContainerName) { super(configurationSection, scriptContainerName); - if (contains("interact scripts") && getStringList("interact scripts").size() > 1) { + if (contains("interact scripts", List.class) && getStringList("interact scripts").size() > 1) { Debug.echoError("Assignment script '" + getName() + "' invalid: assignment scripts should only have ONE interact script in modern Denizen, not multiple!"); } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/BookScriptContainer.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/BookScriptContainer.java index 5e42ab9b9a..fb75552f0a 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/BookScriptContainer.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/BookScriptContainer.java @@ -67,22 +67,22 @@ public ItemTag writeBookTo(ItemTag book, TagContext context) { } // Get current ItemMeta from the book BookMeta bookInfo = (BookMeta) book.getItemMeta(); - if (contains("title")) { + if (contains("title", String.class)) { String title = getString("title"); title = TagManager.tag(title, context); bookInfo.setTitle(title); } - if (contains("signed")) { + if (contains("signed", String.class)) { if (getString("signed").equalsIgnoreCase("false")) { book.getItemStack().setType(Material.WRITABLE_BOOK); } } - if (contains("author")) { + if (contains("author", String.class)) { String author = getString("author"); author = TagManager.tag(author, context); bookInfo.setAuthor(author); } - if (contains("text")) { + if (contains("text", List.class)) { List pages = getStringList("text"); for (String page : pages) { page = TagManager.tag(page, context); diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/CommandScriptContainer.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/CommandScriptContainer.java index c1a7e68b1e..34f17ffa54 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/CommandScriptContainer.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/CommandScriptContainer.java @@ -141,10 +141,10 @@ public CommandScriptContainer(YamlConfiguration configurationSection, String scr super(configurationSection, scriptContainerName); CommandScriptHelper.init(); CommandScriptHelper.commandScripts.put(getName(), this); - if (contains("tab complete")) { + if (containsScriptSection("tab complete")) { hasProcStyleTabComplete = true; } - if (contains("tab completions")) { + if (contains("tab completions", Map.class)) { tabCompletionTaggables = new HashMap<>(); YamlConfiguration section = getConfigurationSection("tab completions"); for (StringHolder key : section.getKeys(false)) { @@ -270,7 +270,7 @@ public List runTabCompleteProcedure(PlayerTag player, NPCTag npc, Map strings = mechSection.getKeys(false); for (StringHolder string : strings) { diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InteractScriptContainer.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InteractScriptContainer.java index 2056fa9a96..815d5d4102 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InteractScriptContainer.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InteractScriptContainer.java @@ -86,15 +86,12 @@ public InteractScriptContainer(YamlConfiguration configurationSection, String sc // Find steps/default step in the script Set keys; keys = getConfigurationSection("steps").getKeys(false); - - if (contains("requirements")) { + if (contains("requirements", Object.class)) { Debug.echoError("Interact script '" + getName() + "' is outdated: 'requirements' do not exist in modern Denizen!"); } - if (keys.isEmpty()) { throw new ExceptionInInitializerError("Could not find any STEPS in " + getName() + "! Is the type on this script correct?"); } - for (StringHolder step1 : keys) { String step = step1.str; if (step.contains("*")) { @@ -104,7 +101,6 @@ public InteractScriptContainer(YamlConfiguration configurationSection, String sc set("steps." + step + "*", null); defaultStep = step; } - if (step.equalsIgnoreCase("1")) { defaultStep = step; } @@ -113,17 +109,14 @@ public InteractScriptContainer(YamlConfiguration configurationSection, String sc } steps.add(step); } - } catch (Exception e) { Debug.echoError(e); } - // Make default step the only step if there is only one step if (defaultStep == null && steps.size() == 1) { defaultStep = steps.get(0); } - if (defaultStep == null) { throw new ExceptionInInitializerError("Must specify a default step in '" + getName() + "'!"); } @@ -132,10 +125,6 @@ public InteractScriptContainer(YamlConfiguration configurationSection, String sc private String defaultStep = null; private List steps = new ArrayList<>(); - public List getStepNames() { - return steps; - } - /** *

Gets the name of the default step for this interact script container. Default step * is specified by a '*' character on the end of the step name.

@@ -170,45 +159,7 @@ public String getDefaultStepName() { */ public boolean containsTriggerInStep(String step, Class trigger) { String triggerName = Denizen.getInstance().triggerRegistry.get(trigger).getName(); - return contains("steps." + step + "." + triggerName + " trigger"); - } - - /** - *

Gets a list of ScriptEntries from a Trigger's script key. In order to get the correct - * entries, pass along the id of the exact script for the Trigger, which should be identified - * by using getPossibleTriggersFor(). If no id is specified by passing null, the - * base Script key will be used for the Trigger. If no script matches the trigger or - * trigger/id combination, an empty list is returned.

- *

- * Example: - * - * Example Interact Script:
- * Type: interact
- * Steps:
- * Current Step: <--- checked with Player object
- * Click Trigger: <--- obtained with the Trigger class
- *
- * id: <--- id of the specific trigger script/script options
- * Script:
- * - ... <--- entries obtained if id matches
- * - ...
- *
- * Script: <--- script that is referenced if NO id is specified
- * - ... <--- entries returned
- * - ...
- *
- *

- *

Note: This is handled internally with the parse() method in AbstractTrigger, so for - * basic triggers, you probably don't need to even call this.

- * - * @param trigger the class of the Trigger to use - * @param player the Player involved - * @param npc the NPC involved - * @param id the id of the Trigger Script, optional - * @return a list of ScriptEntries from the script or an empty list if no script was found - */ - public List getEntriesFor(Class trigger, PlayerTag player, NPCTag npc, String id) { - return getEntriesFor(trigger, player, npc, id, false); + return contains("steps." + step + "." + triggerName + " trigger", String.class); } public List getEntriesFor(Class trigger, PlayerTag player, NPCTag npc, String id, boolean quiet) { @@ -217,7 +168,7 @@ public List getEntriesFor(Class trigger, // Check for entries String key = "steps." + InteractScriptHelper.getCurrentStep(player, getName()) + "." + triggerName + " trigger." + (id == null ? "script" : id + ".script"); - if (contains(key)) { + if (containsScriptSection(key)) { // Entries exist, so get them and return the list of ScriptEntries return getEntries(new BukkitScriptEntryData(player, npc), key); // No entries, so just return an empty list to avoid NPEs @@ -261,7 +212,6 @@ public List getEntriesFor(Class trigger, * @param player The Denizen Player object for the player who triggered it * @return A map of options in the trigger's script, excluding a plain 'script' */ - public Map getIdMapFor(Class trigger, PlayerTag player) { // Get the trigger name String triggerName = Denizen.getInstance().triggerRegistry.get(trigger).getName(); @@ -269,7 +219,7 @@ public Map getIdMapFor(Class trigger, String step = InteractScriptHelper.getCurrentStep(player, getName()); // Check for entries String keyBase = "steps." + step + "." + triggerName + " trigger"; - if (contains(keyBase)) { + if (contains(keyBase, Map.class)) { // Trigger exists in Player's current step, get ids. Map idMap = new LinkedHashMap<>(); // Iterate through IDs to build the idMap @@ -291,21 +241,4 @@ public Map getIdMapFor(Class trigger, return Collections.emptyMap(); } } - - public String getTriggerOptionFor(Class trigger, PlayerTag player, String id, String option) { - // Get the trigger name - String triggerName = Denizen.getInstance().triggerRegistry.get(trigger).getName(); - // Get the step - String step = InteractScriptHelper.getCurrentStep(player, getName()); - return getString("steps." + step + "." + triggerName + " trigger" - + (id == null ? "" : "." + id) + "." + option); - } - - public boolean hasTriggerOptionFor(Class trigger, PlayerTag player, String id, String option) { - // Get the trigger name - String triggerName = Denizen.getInstance().triggerRegistry.get(trigger).getName(); - // Get the step - String step = InteractScriptHelper.getCurrentStep(player, getName()); - return contains("steps." + step + "." + triggerName + " trigger" + (id == null ? "" : "." + id) + "." + option); - } } diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InteractScriptHelper.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InteractScriptHelper.java index d6a2ebd9c1..781dba006b 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InteractScriptHelper.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InteractScriptHelper.java @@ -23,7 +23,7 @@ public static InteractScriptContainer getInteractScript(NPCTag npc) { if (assignmentScript == null) { return null; } - if (!assignmentScript.contains("interact scripts")) { + if (!assignmentScript.contains("interact scripts", List.class)) { return null; } List assignedScripts = assignmentScript.getStringList("interact scripts"); diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InventoryScriptContainer.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InventoryScriptContainer.java index 99b57f72a8..1e96a3a45a 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InventoryScriptContainer.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InventoryScriptContainer.java @@ -19,6 +19,7 @@ import org.bukkit.inventory.ItemStack; import java.util.List; +import java.util.Map; public class InventoryScriptContainer extends ScriptContainer { @@ -112,7 +113,7 @@ public InventoryTag getInventoryFrom(TagContext context) { context.debug = context.debug && shouldDebug(); try { InventoryType type = InventoryType.CHEST; - if (contains("inventory")) { + if (contains("inventory", String.class)) { try { type = InventoryType.valueOf(getString("inventory").toUpperCase()); } @@ -128,7 +129,7 @@ public InventoryTag getInventoryFrom(TagContext context) { type = InventoryType.CHEST; } int size = 0; - if (contains("size")) { + if (contains("size", String.class)) { if (type != InventoryType.CHEST) { Debug.echoError(this, "You can only set the size of chest inventories!"); } @@ -154,14 +155,14 @@ public InventoryTag getInventoryFrom(TagContext context) { } } if (size == 0) { - if (contains("slots") && type == InventoryType.CHEST) { + if (contains("slots", List.class) && type == InventoryType.CHEST) { size = getStringList("slots").size() * 9; } else { size = type.getDefaultSize(); } } - String title = contains("title") ? TagManager.tag(getString("title"), context) : null; + String title = contains("title", String.class) ? TagManager.tag(getString("title"), context) : null; if (type == InventoryType.CHEST) { inventory = new InventoryTag(size, title != null ? title : "Chest"); } @@ -176,7 +177,7 @@ public InventoryTag getInventoryFrom(TagContext context) { inventory.idType = "script"; inventory.idHolder = thisScript; boolean[] filledSlots = new boolean[size]; - if (contains("slots")) { + if (contains("slots", List.class)) { ItemStack[] finalItems = new ItemStack[size]; int itemsAdded = 0; for (String items : getStringList("slots")) { @@ -195,7 +196,7 @@ public InventoryTag getInventoryFrom(TagContext context) { continue; } filledSlots[itemsAdded] = true; - if (contains("definitions." + item)) { + if (contains("definitions." + item, String.class)) { ItemTag def = ItemTag.valueOf(TagManager.tag(getString("definitions." + item), context), context); if (def == null) { Debug.echoError(this, "Invalid definition '" + item + "'... Ignoring it and assuming 'AIR'"); @@ -226,12 +227,12 @@ public InventoryTag getInventoryFrom(TagContext context) { } inventory.setContents(finalItems); } - if (contains("procedural items")) { + if (containsScriptSection("procedural items")) { List entries = getEntries(context.getScriptEntryData(), "procedural items"); if (!entries.isEmpty()) { InstantQueue queue = new InstantQueue("INV_SCRIPT_ITEM_PROC"); queue.addEntries(entries); - if (contains("definitions")) { + if (contains("definitions", Map.class)) { YamlConfiguration section = getConfigurationSection("definitions"); for (StringHolder string : section.getKeys(false)) { String definition = string.str; diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptContainer.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptContainer.java index 86fdf72c17..2c58d859fe 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptContainer.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptContainer.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; public class ItemScriptContainer extends ScriptContainer { @@ -233,7 +234,7 @@ public ItemTag getItemFrom(TagContext context) { ItemTag stack; isProcessing = true; try { - if (!contains("material")) { + if (!contains("material", String.class)) { Debug.echoError("Item script '" + getName() + "' does not contain a material. Script cannot function."); return null; } @@ -248,7 +249,7 @@ public ItemTag getItemFrom(TagContext context) { return null; } // Handle listed mechanisms - if (contains("mechanisms")) { + if (contains("mechanisms", Map.class)) { YamlConfiguration mechs = getConfigurationSection("mechanisms"); for (StringHolder key : mechs.getKeys(false)) { ObjectTag obj = CoreUtilities.objectToTagForm(mechs.get(key.low), context, true, true); @@ -256,16 +257,16 @@ public ItemTag getItemFrom(TagContext context) { } } // Set Display Name - if (contains("display name")) { + if (contains("display name", String.class)) { String displayName = TagManager.tag(getString("display name"), context); NMSHandler.getItemHelper().setDisplayName(stack, displayName); } // Set if the object is bound to the player - if (contains("bound")) { + if (contains("bound", String.class)) { Deprecations.boundWarning.warn(context); } // Set Lore - if (contains("lore")) { + if (contains("lore", List.class)) { List lore = NMSHandler.getItemHelper().getLore(stack); if (lore == null) { lore = new ArrayList<>(); @@ -278,12 +279,12 @@ public ItemTag getItemFrom(TagContext context) { NMSHandler.getItemHelper().setLore(stack, lore); } // Set Durability - if (contains("durability")) { + if (contains("durability", String.class)) { short durability = Short.valueOf(getString("durability")); stack.setDurability(durability); } // Set Enchantments - if (contains("enchantments")) { + if (contains("enchantments", List.class)) { for (String enchantment : getStringList("enchantments")) { enchantment = TagManager.tag(enchantment, context); try { @@ -320,17 +321,17 @@ public ItemTag getItemFrom(TagContext context) { } } // Set Color - if (contains("color")) { + if (contains("color", String.class)) { Deprecations.itemScriptColor.warn(context); String color = TagManager.tag(getString("color"), context); LeatherColorer.colorArmor(stack, color); } // Set Book - if (contains("book")) { + if (contains("book", String.class)) { BookScriptContainer book = ScriptRegistry.getScriptContainer(TagManager.tag(getString("book"), context).replace("s@", "")); stack = book.writeBookTo(stack, context); } - if (contains("flags")) { + if (contains("flags", Map.class)) { YamlConfiguration flagSection = getConfigurationSection("flags"); AbstractFlagTracker tracker = stack.getFlagTracker(); for (StringHolder key : flagSection.getKeys(false)) { diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptHelper.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptHelper.java index 1fce416b76..4f18bf379c 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptHelper.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptHelper.java @@ -258,7 +258,7 @@ public void registerSmithingRecipe(ItemScriptContainer container, ItemStack item public void rebuildRecipes() { for (ItemScriptContainer container : item_scripts.values()) { try { - if (container.contains("recipes")) { + if (container.contains("recipes", Map.class)) { YamlConfiguration section = container.getConfigurationSection("recipes"); int id = 0; for (StringHolder key : section.getKeys(false)) { @@ -302,15 +302,15 @@ public void rebuildRecipes() { } } // Old script style - if (container.contains("RECIPE")) { + if (container.contains("RECIPE", List.class)) { Deprecations.oldRecipeScript.warn(container); registerShapedRecipe(container, container.getCleanReference().getItemStack().clone(), container.getStringList("RECIPE"), getIdFor(container, "old_recipe", 0), "custom"); } - if (container.contains("SHAPELESS_RECIPE")) { + if (container.contains("SHAPELESS_RECIPE", String.class)) { Deprecations.oldRecipeScript.warn(container); registerShapelessRecipe(container, container.getCleanReference().getItemStack().clone(), container.getString("SHAPELESS_RECIPE"), getIdFor(container, "old_shapeless", 0), "custom"); } - if (container.contains("FURNACE_RECIPE")) { + if (container.contains("FURNACE_RECIPE", String.class)) { Deprecations.oldRecipeScript.warn(container); registerFurnaceRecipe(container, container.getCleanReference().getItemStack().clone(), container.getString("FURNACE_RECIPE"), 0, 40, "furnace", getIdFor(container, "old_furnace", 0), "custom"); } diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/MapScriptContainer.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/MapScriptContainer.java index ae0daffd6d..69baa9c16d 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/MapScriptContainer.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/MapScriptContainer.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; public class MapScriptContainer extends ScriptContainer { @@ -101,10 +102,10 @@ public MapScriptContainer(YamlConfiguration configurationSection, String scriptC public void applyTo(MapView mapView) { boolean contextual = getString("contextual", "true").equalsIgnoreCase("true"); DenizenMapRenderer renderer = new DenizenMapRenderer(mapView.getRenderers(), getString("auto update", "true").equalsIgnoreCase("true"), contextual); - if (contains("original")) { + if (contains("original", String.class)) { renderer.displayOriginal = getString("original").equalsIgnoreCase("true"); } - if (contains("objects")) { + if (contains("objects", Map.class)) { YamlConfiguration objectsSection = getConfigurationSection("objects"); List objectKeys1 = new ArrayList<>(objectsSection.getKeys(false)); List objectKeys = new ArrayList<>(objectKeys1.size()); diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/triggers/AbstractTrigger.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/triggers/AbstractTrigger.java index 65190e8511..37ee4da403 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/triggers/AbstractTrigger.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/triggers/AbstractTrigger.java @@ -86,7 +86,7 @@ public boolean parse(NPCTag npc, PlayerTag player, InteractScriptContainer scrip Debug.echoDebug(script, DebugElement.Header, "Parsing " + name + " trigger: n@" + npc.getName() + "/p@" + player.getName()); // Create Queue long speedTicks; - if (script.contains("SPEED")) { + if (script.contains("SPEED", String.class)) { speedTicks = DurationTag.valueOf(script.getString("SPEED", "0"), new BukkitTagContext(script)).getTicks(); } else { diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/triggers/core/ProximityTrigger.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/triggers/core/ProximityTrigger.java index ca839db504..d2208e803b 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/triggers/core/ProximityTrigger.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/triggers/core/ProximityTrigger.java @@ -2,7 +2,6 @@ import com.denizenscript.denizen.Denizen; import com.denizenscript.denizen.scripts.containers.core.InteractScriptContainer; -import com.denizenscript.denizen.utilities.debugging.Debug; import com.denizenscript.denizen.npc.traits.TriggerTrait; import com.denizenscript.denizen.objects.NPCTag; import com.denizenscript.denizen.objects.PlayerTag; @@ -150,36 +149,6 @@ && hasExitedProximityOf(bukkitPlayer, npc)) { double exitRadius = triggerTrait.getRadius(name); double moveRadius = triggerTrait.getRadius(name); - // - // If a script was found, it might have custom ranges. - // - if (script != null) { - try { - if (script.hasTriggerOptionFor(ProximityTrigger.class, player, null, "ENTRY RADIUS")) { - entryRadius = Integer.valueOf(script.getTriggerOptionFor(ProximityTrigger.class, player, null, "ENTRY RADIUS")); - } - } - catch (NumberFormatException nfe) { - Debug.echoDebug(script, "Entry Radius was not an integer. Assuming " + entryRadius + " as the radius."); - } - try { - if (script.hasTriggerOptionFor(ProximityTrigger.class, player, null, "EXIT RADIUS")) { - exitRadius = Integer.valueOf(script.getTriggerOptionFor(ProximityTrigger.class, player, null, "EXIT RADIUS")); - } - } - catch (NumberFormatException nfe) { - Debug.echoDebug(script, "Exit Radius was not an integer. Assuming " + exitRadius + " as the radius."); - } - try { - if (script.hasTriggerOptionFor(ProximityTrigger.class, player, null, "MOVE RADIUS")) { - moveRadius = Integer.valueOf(script.getTriggerOptionFor(ProximityTrigger.class, player, null, "MOVE RADIUS")); - } - } - catch (NumberFormatException nfe) { - Debug.echoDebug(script, "Move Radius was not an integer. Assuming " + moveRadius + " as the radius."); - } - } - Location npcLocation = npc.getLocation(); //