Smarter Logistical Transporter future insert calculation

This commit is contained in:
Aidan Brady 2013-12-04 22:04:51 -05:00
parent 6cc198cf0b
commit b84445c9ea

View file

@ -261,13 +261,15 @@ public class TransporterManager
testInsert(inventory, testInv, side, tStack); testInsert(inventory, testInv, side, tStack);
} }
ItemStack toInsert = itemStack.copy();
if(!(inventory instanceof ISidedInventory)) if(!(inventory instanceof ISidedInventory))
{ {
inventory = InventoryUtils.checkChestInv(inventory); inventory = InventoryUtils.checkChestInv(inventory);
for(int i = 0; i <= inventory.getSizeInventory() - 1; i++) for(int i = 0; i <= inventory.getSizeInventory() - 1; i++)
{ {
if(!inventory.isItemValidForSlot(i, itemStack)) if(!inventory.isItemValidForSlot(i, toInsert))
{ {
continue; continue;
} }
@ -278,18 +280,18 @@ public class TransporterManager
{ {
return null; return null;
} }
else if(inSlot.isItemEqual(itemStack) && inSlot.stackSize < inSlot.getMaxStackSize()) else if(inSlot.isItemEqual(toInsert) && inSlot.stackSize < inSlot.getMaxStackSize())
{ {
if(inSlot.stackSize + itemStack.stackSize <= inSlot.getMaxStackSize()) if(inSlot.stackSize + toInsert.stackSize <= inSlot.getMaxStackSize())
{ {
return null; return null;
} }
else { else {
int rejects = (inSlot.stackSize + itemStack.stackSize) - inSlot.getMaxStackSize(); int rejects = (inSlot.stackSize + toInsert.stackSize) - inSlot.getMaxStackSize();
if(rejects < itemStack.stackSize) if(rejects < toInsert.stackSize)
{ {
return MekanismUtils.size(itemStack, rejects); toInsert = MekanismUtils.size(toInsert, rejects);
} }
} }
} }
@ -310,7 +312,7 @@ public class TransporterManager
{ {
int slotID = slots[get]; int slotID = slots[get];
if(!sidedInventory.isItemValidForSlot(slotID, itemStack) || !sidedInventory.canInsertItem(slotID, itemStack, ForgeDirection.getOrientation(side).getOpposite().ordinal())) if(!sidedInventory.isItemValidForSlot(slotID, toInsert) || !sidedInventory.canInsertItem(slotID, toInsert, ForgeDirection.getOrientation(side).getOpposite().ordinal()))
{ {
continue; continue;
} }
@ -321,18 +323,18 @@ public class TransporterManager
{ {
return null; return null;
} }
else if(inSlot.isItemEqual(itemStack) && inSlot.stackSize < inSlot.getMaxStackSize()) else if(inSlot.isItemEqual(toInsert) && inSlot.stackSize < inSlot.getMaxStackSize())
{ {
if(inSlot.stackSize + itemStack.stackSize <= inSlot.getMaxStackSize()) if(inSlot.stackSize + toInsert.stackSize <= inSlot.getMaxStackSize())
{ {
return null; return null;
} }
else { else {
int rejects = (inSlot.stackSize + itemStack.stackSize) - inSlot.getMaxStackSize(); int rejects = (inSlot.stackSize + toInsert.stackSize) - inSlot.getMaxStackSize();
if(rejects < itemStack.stackSize) if(rejects < toInsert.stackSize)
{ {
return MekanismUtils.size(itemStack, rejects); toInsert = MekanismUtils.size(toInsert, rejects);
} }
} }
} }
@ -340,6 +342,6 @@ public class TransporterManager
} }
} }
return itemStack; return toInsert;
} }
} }