From 09f5353faa6c4e75db73ef474a17290996ecc207 Mon Sep 17 00:00:00 2001 From: Rseifert Date: Fri, 22 Feb 2013 13:16:00 -0500 Subject: [PATCH] Fixed an item stacking issue with crates Manipulators were not stacking items in crates above the items max stack limit. --- .../assemblyline/common/block/BlockCrate.java | 2 +- .../common/machine/TileEntityManipulator.java | 42 +++++++------------ 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/src/minecraft/assemblyline/common/block/BlockCrate.java b/src/minecraft/assemblyline/common/block/BlockCrate.java index c8ff23ff..13173f7e 100644 --- a/src/minecraft/assemblyline/common/block/BlockCrate.java +++ b/src/minecraft/assemblyline/common/block/BlockCrate.java @@ -331,7 +331,7 @@ public class BlockCrate extends BlockMachine * @param tileEntity * @param itemStack */ - private ItemStack putIn(TileEntityCrate tileEntity, ItemStack itemStack) + public static ItemStack putIn(TileEntityCrate tileEntity, ItemStack itemStack) { ItemStack containingStack = tileEntity.getStackInSlot(0); diff --git a/src/minecraft/assemblyline/common/machine/TileEntityManipulator.java b/src/minecraft/assemblyline/common/machine/TileEntityManipulator.java index a9ac3dcd..e72b4bb8 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityManipulator.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityManipulator.java @@ -17,6 +17,8 @@ import universalelectricity.prefab.implement.IRotatable; import universalelectricity.prefab.multiblock.TileEntityMulti; import universalelectricity.prefab.network.PacketManager; import assemblyline.api.IManipulator; +import assemblyline.common.block.BlockCrate; +import assemblyline.common.block.TileEntityCrate; import assemblyline.common.machine.imprinter.TileEntityFilterable; import cpw.mods.fml.common.network.PacketDispatcher; @@ -87,8 +89,7 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota } /** - * Find items going into the manipulator and input them into an inventory behind this - * manipulator. + * Find items going into the manipulator and input them into an inventory behind this manipulator. */ @Override public void eject() @@ -109,10 +110,7 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota */ if (outputPosition.getTileEntity(this.worldObj) instanceof TileEntityManipulator) { - if (((TileEntityManipulator) outputPosition.getTileEntity(this.worldObj)).getDirection() == this.getDirection().getOpposite()) - { - return; - } + if (((TileEntityManipulator) outputPosition.getTileEntity(this.worldObj)).getDirection() == this.getDirection().getOpposite()) { return; } } AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(inputPosition.x, inputPosition.y, inputPosition.z, inputPosition.x + 1, inputPosition.y + 1, inputPosition.z + 1); @@ -124,8 +122,7 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota continue; /** - * Try top first, then bottom, then the sides to see if it is possible to insert the - * item into a inventory. + * Try top first, then bottom, then the sides to see if it is possible to insert the item into a inventory. */ ItemStack remainingStack = entity.getEntityItem().copy(); @@ -273,6 +270,10 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota } } } + else if (tileEntity instanceof TileEntityCrate) + { + return BlockCrate.putIn((TileEntityCrate) tileEntity, itemStack); + } else if (tileEntity instanceof ISidedInventory) { ISidedInventory inventory = (ISidedInventory) tileEntity; @@ -282,10 +283,7 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota for (int i = startIndex; i < startIndex + inventory.getSizeInventorySide(direction); i++) { itemStack = this.addStackToInventory(i, inventory, itemStack); - if (itemStack == null) - { - return null; - } + if (itemStack == null) { return null; } } } else if (tileEntity instanceof IInventory) @@ -295,18 +293,12 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota for (int i = 0; i < inventory.getSizeInventory(); i++) { itemStack = this.addStackToInventory(i, inventory, itemStack); - if (itemStack == null) - { - return null; - } + if (itemStack == null) { return null; } } } } - if (itemStack.stackSize <= 0) - { - return null; - } + if (itemStack.stackSize <= 0) { return null; } return itemStack; } @@ -320,10 +312,7 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota if (stackInInventory == null) { inventory.setInventorySlotContents(slotIndex, itemStack); - if (inventory.getStackInSlot(slotIndex) == null) - { - return itemStack; - } + if (inventory.getStackInSlot(slotIndex) == null) { return itemStack; } return null; } else if (stackInInventory.isItemEqual(itemStack) && stackInInventory.isStackable()) @@ -337,10 +326,7 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota } } - if (itemStack.stackSize <= 0) - { - return null; - } + if (itemStack.stackSize <= 0) { return null; } return itemStack; }