@Override public void call(MessageRunner runner) { ItemPattern pattern = runner.<ItemPattern>getValue("pattern"); WeightedItemList list = OrbAcquirableItems.idList; int size = list.size(), damageRemoved = 0; for (Iterator<WeightedItem> iter = list.iterator(); iter.hasNext(); ) { Pair<Integer, Boolean> info = iter.next().runBlacklistPattern(pattern); if (info.getRight()) iter.remove(); damageRemoved += info.getLeft(); } size = size - list.size(); if (size == 0 && damageRemoved == 0) MessageLogger.logWarn("Did not find any items to remove."); else if (size == 0) MessageLogger.logOk("Removed $0 damage value(s) from items.", damageRemoved); else MessageLogger.logOk( "Removed $0 item(s) and $1 damage value(s) in total.", size, damageRemoved); if (list.size() == 0) MessageLogger.logWarn("No items left in the list, falling back to generic chest loot."); }