@Override public boolean matches(ScriptContainer scriptContainer, String s) { String lower = CoreUtilities.toLowerCase(s); String inv = CoreUtilities.getXthArg(2, lower); if (!inv.equals("inventory") && !inv.equals(CoreUtilities.toLowerCase(inventory.getInventoryType().name()))) { return false; } return true; }
public dInventory getInventoryFrom(dPlayer player, dNPC npc) { dInventory inventory = null; try { if (contains("INVENTORY")) { if (InventoryType.valueOf(getString("INVENTORY")) != null) { inventory = new dInventory(InventoryType.valueOf(getString("INVENTORY"))); inventory.setIdentifiers("script", getName()); } else { dB.echoError("Invalid inventory type specified. Assuming \"CHEST\""); } } if (contains("SIZE")) { if (inventory != null && !getInventoryType().name().equalsIgnoreCase("CHEST")) { dB.echoError("You can only set the size of chest inventories!"); } else { int size = aH.getIntegerFrom(getString("SIZE")); if (size == 0) { dB.echoError("Inventory size can't be 0. Assuming default..."); size = 27; } if (size % 9 != 0) { dB.echoError("Inventory size must be a multiple of 9! Rounding..."); size = Math.round(size / 9) * 9; if (size == 0) size = 9; } if (size < 0) { dB.echoError("Inventory size must be a positive number! Inverting..."); size = size * -1; } inventory = new dInventory(aH.getIntegerFrom(getString("SIZE"))); inventory.setIdentifiers("script", getName()); } } if (contains("SLOTS")) { ItemStack[] finalItems = new ItemStack[getSize()]; int itemsAdded = 0; for (String items : getStringList("SLOTS")) { items = TagManager.tag(player, npc, items); String[] itemsInLine = items.split(" "); for (String item : itemsInLine) { Matcher m = Pattern.compile("(\\[)(.*)(\\])").matcher(item); if (!m.matches()) { dB.echoError("Inventory script \"" + getName() + "\" has an invalid slot item."); return null; } if (contains("DEFINITIONS." + m.group(2)) && dItem.matches(getString("DEFINITIONS." + m.group(2)))) { finalItems[itemsAdded] = dItem.valueOf(getString("DEFINITIONS." + m.group(2))).getItemStack(); } else if (dItem.matches(m.group(2))) { finalItems[itemsAdded] = dItem.valueOf(m.group(2)).getItemStack(); } else { finalItems[itemsAdded] = new ItemStack(Material.AIR); if (!m.group(2).trim().isEmpty()) { dB.echoError( "Inventory script \"" + getName() + "\" has an invalid slot item: [" + m.group(2) + "]... Ignoring it and assuming \"AIR\""); } } itemsAdded++; } } inventory.setContents(finalItems); } } catch (Exception e) { dB.echoError("Woah! An exception has been called with this inventory script!"); dB.echoError(e); inventory = null; } return inventory; }