diff --git a/util/inv/IMEAdaptor.java b/util/inv/IMEAdaptor.java index 278296349..26e4d1c7c 100644 --- a/util/inv/IMEAdaptor.java +++ b/util/inv/IMEAdaptor.java @@ -18,6 +18,7 @@ public class IMEAdaptor extends InventoryAdaptor IMEInventory target; BaseActionSource src; + int maxSlots = 0; public IMEAdaptor(IMEInventory input, BaseActionSource src) { target = input; @@ -32,7 +33,7 @@ public class IMEAdaptor extends InventoryAdaptor @Override public Iterator iterator() { - return new IMEAdaptorIterator( getList() ); + return new IMEAdaptorIterator( this, getList() ); } public ItemStack doRemoveItemsFuzzy(int how_many, ItemStack Filter, IInventoryDestination destination, Actionable type, FuzzyMode fuzzyMode) diff --git a/util/inv/IMEAdaptorIterator.java b/util/inv/IMEAdaptorIterator.java index 4f75defa4..c4bdb4743 100644 --- a/util/inv/IMEAdaptorIterator.java +++ b/util/inv/IMEAdaptorIterator.java @@ -11,23 +11,40 @@ public class IMEAdaptorIterator implements Iterator Iterator stack; ItemSlot slot = new ItemSlot(); int offset = 0; + boolean hasNext; - public IMEAdaptorIterator(IItemList availableItems) { + final IMEAdaptor parent; + final int containerSize; + + public IMEAdaptorIterator(IMEAdaptor parent, IItemList availableItems) { stack = availableItems.iterator(); + containerSize = parent.maxSlots; + this.parent = parent; } @Override public boolean hasNext() { - return stack.hasNext(); + hasNext = stack.hasNext(); + return offset < containerSize || hasNext; } @Override public ItemSlot next() { - IAEItemStack item = stack.next(); - slot.setAEItemStack( item ); slot.slot = offset++; + + if ( parent.maxSlots < offset ) + parent.maxSlots = offset; + + if ( hasNext ) + { + IAEItemStack item = stack.next(); + slot.setAEItemStack( item ); + return slot; + } + + slot.setItemStack( null ); return slot; }