From d320e2bd36c226033125c587acfdaaf36efac2bf Mon Sep 17 00:00:00 2001 From: Aya <31237389+tal5@users.noreply.github.com> Date: Mon, 24 Apr 2023 21:36:49 +0100 Subject: [PATCH] Fix definition parsing in `procedural items` (#2468) --- .../containers/core/InventoryScriptContainer.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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 3924579380..2343a4ac78 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 @@ -1,6 +1,5 @@ package com.denizenscript.denizen.scripts.containers.core; -import com.denizenscript.denizencore.utilities.debugging.Debug; import com.denizenscript.denizen.objects.InventoryTag; import com.denizenscript.denizen.objects.ItemTag; import com.denizenscript.denizencore.objects.ArgumentHelper; @@ -13,6 +12,7 @@ import com.denizenscript.denizencore.tags.TagManager; import com.denizenscript.denizencore.utilities.CoreUtilities; import com.denizenscript.denizencore.utilities.YamlConfiguration; +import com.denizenscript.denizencore.utilities.debugging.Debug; import com.denizenscript.denizencore.utilities.text.StringHolder; import org.bukkit.Material; import org.bukkit.event.inventory.InventoryType; @@ -254,10 +254,13 @@ else if (InventoryScriptHelper.isPersonalSpecialInv(type)) { InstantQueue queue = new InstantQueue(getName()); queue.addEntries(entries); if (contains("definitions", Map.class)) { - YamlConfiguration section = getConfigurationSection("definitions"); - for (StringHolder string : section.getKeys(false)) { - String definition = string.str; - queue.addDefinition(definition, section.getString(definition)); + for (Map.Entry entry : getConfigurationSection("definitions").getMap().entrySet()) { + ItemTag definitionValue = ItemTag.valueOf(TagManager.tag(entry.getValue().toString(), context), context); + if (definitionValue == null) { + Debug.echoError(this, "Invalid item '" + entry.getValue() + "' for definition '" + entry.getKey().str + "'"); + continue; + } + queue.addDefinition(entry.getKey().low, definitionValue); } } queue.procedural = true;