Storage bus can now update all the way down to zero items for External Storages.

This commit is contained in:
AlgorithmX2 2014-05-03 23:14:30 -05:00
parent e1c6b18399
commit 60d1ecc965
2 changed files with 23 additions and 5 deletions

View file

@ -18,6 +18,7 @@ public class IMEAdaptor extends InventoryAdaptor
IMEInventory<IAEItemStack> target;
BaseActionSource src;
int maxSlots = 0;
public IMEAdaptor(IMEInventory<IAEItemStack> input, BaseActionSource src) {
target = input;
@ -32,7 +33,7 @@ public class IMEAdaptor extends InventoryAdaptor
@Override
public Iterator<ItemSlot> iterator()
{
return new IMEAdaptorIterator( getList() );
return new IMEAdaptorIterator( this, getList() );
}
public ItemStack doRemoveItemsFuzzy(int how_many, ItemStack Filter, IInventoryDestination destination, Actionable type, FuzzyMode fuzzyMode)

View file

@ -11,23 +11,40 @@ public class IMEAdaptorIterator implements Iterator<ItemSlot>
Iterator<IAEItemStack> stack;
ItemSlot slot = new ItemSlot();
int offset = 0;
boolean hasNext;
public IMEAdaptorIterator(IItemList<IAEItemStack> availableItems) {
final IMEAdaptor parent;
final int containerSize;
public IMEAdaptorIterator(IMEAdaptor parent, IItemList<IAEItemStack> 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;
}