public boolean take( int amnt, final boolean note, final Map<Integer, Integer> items, final Map<Integer, Integer> used) { amnt *= getWeight(itemId); if (note && canNote()) { int noteId = getNotedId(); int amntToUse = Math.min(amnt, get(items, noteId) - get(used, noteId)); amnt -= amntToUse; update(used, noteId, amntToUse); } int itemId = getItemId(); int amntToUse = Math.min(amnt, get(items, itemId) - get(used, itemId)); amnt -= amntToUse; update(used, itemId, amntToUse); return amnt <= 0; }