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 fba1cce27a..f9579460b1 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java @@ -2020,23 +2020,45 @@ else if (item != null && item.hasItemMeta() && item.getItemMeta().hasDisplayName } // <--[tag] - // @attribute ]> - // @returns ItemTag + // @attribute |...]> + // @returns ItemTag or ListTag(ItemTag) // @description - // Returns the item in the specified slot. + // If one slot is specified, returns the item in the specified slot. + // If more than what slot is specified, returns a list of the item in each given slot. // --> if (attribute.startsWith("slot") - && attribute.hasContext(1) - && ArgumentHelper.matchesInteger(attribute.getContext(1))) { - int slot = new ElementTag(attribute.getContext(1)).asInt() - 1; - if (slot < 0) { - slot = 0; + && attribute.hasContext(1)) { + ListTag slots = ListTag.getListFor(attribute.getContextObject(1)); + if (slots.size() == 0) { + if (!attribute.hasAlternative()) { + Debug.echoError("Cannot get a list of zero slots."); + } + return null; + } + else if (slots.size() == 1) { + int slot = new ElementTag(attribute.getContext(1)).asInt() - 1; + if (slot < 0) { + slot = 0; + } + else if (slot > getInventory().getSize() - 1) { + slot = getInventory().getSize() - 1; + } + return new ItemTag(getInventory().getItem(slot)).getAttribute(attribute.fulfill(1)); } - else if (slot > getInventory().getSize() - 1) { - slot = getInventory().getSize() - 1; + else { + ListTag result = new ListTag(); + for (String slotText : slots) { + int slot = new ElementTag(slotText).asInt() - 1; + if (slot < 0) { + slot = 0; + } + else if (slot > getInventory().getSize() - 1) { + slot = getInventory().getSize() - 1; + } + result.addObject(new ItemTag(getInventory().getItem(slot))); + } + return result.getAttribute(attribute.fulfill(1)); } - return new ItemTag(getInventory().getItem(slot)) - .getAttribute(attribute.fulfill(1)); } // <--[tag]