From c2dcaf1902f9289042c1746b09d55cc88840cd7b Mon Sep 17 00:00:00 2001 From: gigabit101 Date: Wed, 11 Nov 2015 21:37:31 +0000 Subject: [PATCH] Fixed Quantum Chest/Digital Chest stored items closes #247 --- .../client/gui/GuiDigitalChest.java | 5 +- .../client/gui/GuiQuantumChest.java | 5 +- .../techreborn/tiles/TileDigitalChest.java | 102 ++++++++++------- .../techreborn/tiles/TileQuantumChest.java | 105 ++++++++++-------- 4 files changed, 125 insertions(+), 92 deletions(-) diff --git a/src/main/java/techreborn/client/gui/GuiDigitalChest.java b/src/main/java/techreborn/client/gui/GuiDigitalChest.java index a0f38c02b..92542e101 100644 --- a/src/main/java/techreborn/client/gui/GuiDigitalChest.java +++ b/src/main/java/techreborn/client/gui/GuiDigitalChest.java @@ -40,7 +40,8 @@ public class GuiDigitalChest extends GuiContainer { this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString("Amount", 10, 20, 16448255); if (tile.storedItem != null) - this.fontRendererObj.drawString(tile.storedItem.stackSize + "", 10, - 30, 16448255); + this.fontRendererObj.drawString(tile.storedItem.stackSize + "", 10, 30, 16448255); + if (tile.storedItem == null && tile.getStackInSlot(1) != null) + this.fontRendererObj.drawString(tile.getStackInSlot(1).stackSize + "", 10, 30, 16448255); } } diff --git a/src/main/java/techreborn/client/gui/GuiQuantumChest.java b/src/main/java/techreborn/client/gui/GuiQuantumChest.java index b6449b30a..4babf77cf 100644 --- a/src/main/java/techreborn/client/gui/GuiQuantumChest.java +++ b/src/main/java/techreborn/client/gui/GuiQuantumChest.java @@ -40,7 +40,8 @@ public class GuiQuantumChest extends GuiContainer { this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString("Amount", 10, 20, 16448255); if (tile.storedItem != null && tile.getStackInSlot(1) != null) - this.fontRendererObj.drawString(tile.storedItem.stackSize + tile.getStackInSlot(1).stackSize + "", 10, - 30, 16448255); + this.fontRendererObj.drawString(tile.storedItem.stackSize + tile.getStackInSlot(1).stackSize + "", 10, 30, 16448255); + if (tile.storedItem == null && tile.getStackInSlot(1) != null) + this.fontRendererObj.drawString(tile.getStackInSlot(1).stackSize + "", 10, 30, 16448255); } } diff --git a/src/main/java/techreborn/tiles/TileDigitalChest.java b/src/main/java/techreborn/tiles/TileDigitalChest.java index 26c6dae6f..2decb5148 100644 --- a/src/main/java/techreborn/tiles/TileDigitalChest.java +++ b/src/main/java/techreborn/tiles/TileDigitalChest.java @@ -30,51 +30,67 @@ public class TileDigitalChest extends TileMachineBase implements IInventory, public ItemStack storedItem; - @Override - public void updateEntity() { - if (!worldObj.isRemote) { - if (storedItem != null) { - ItemStack fakeStack = storedItem.copy(); - fakeStack.stackSize = 1; - setInventorySlotContents(2, fakeStack); - } else { - setInventorySlotContents(2, null); - } + @Override + public void updateEntity() + { + if (!worldObj.isRemote) + { + if (storedItem != null) + { + ItemStack fakeStack = storedItem.copy(); + fakeStack.stackSize = 1; + setInventorySlotContents(2, fakeStack); + } + else if (storedItem == null && getStackInSlot(1) != null) + { + ItemStack fakeStack = getStackInSlot(1).copy(); + fakeStack.stackSize = 1; + setInventorySlotContents(2, fakeStack); + } + else + { + setInventorySlotContents(2, null); + } - if (getStackInSlot(0) != null) { - if (storedItem == null) { - storedItem = getStackInSlot(0); - setInventorySlotContents(0, null); - } else if (ItemUtils.isItemEqual(storedItem, getStackInSlot(0), - true, true)) { - if (storedItem.stackSize <= Integer.MAX_VALUE - - getStackInSlot(0).stackSize) { - storedItem.stackSize += getStackInSlot(0).stackSize; - decrStackSize(0, getStackInSlot(0).stackSize); - } - } - } + if (getStackInSlot(0) != null) + { + if (storedItem == null && getStackInSlot(1) == null) + { + storedItem = getStackInSlot(0); + setInventorySlotContents(0, null); + } + else if (ItemUtils.isItemEqual(storedItem, getStackInSlot(0), true, true)) + { + if (storedItem.stackSize <= storage - getStackInSlot(0).stackSize) + { + storedItem.stackSize += getStackInSlot(0).stackSize; + decrStackSize(0, getStackInSlot(0).stackSize); + } + } + } - if (storedItem != null && getStackInSlot(1) == null) { - ItemStack itemStack = storedItem.copy(); - itemStack.stackSize = itemStack.getMaxStackSize(); - setInventorySlotContents(1, itemStack); - storedItem.stackSize -= itemStack.getMaxStackSize(); - } else if (ItemUtils.isItemEqual(getStackInSlot(1), storedItem, true, - true)) { - int wanted = getStackInSlot(1).getMaxStackSize() - - getStackInSlot(1).stackSize; - if (storedItem.stackSize >= wanted) { - decrStackSize(1, -wanted); - storedItem.stackSize -= wanted; - } else { - decrStackSize(1, -storedItem.stackSize); - storedItem = null; - } - } - } - syncWithAll(); - } + if (storedItem != null && getStackInSlot(1) == null) + { + ItemStack itemStack = storedItem.copy(); + itemStack.stackSize = itemStack.getMaxStackSize(); + setInventorySlotContents(1, itemStack); + storedItem.stackSize -= itemStack.getMaxStackSize(); + } else if (ItemUtils.isItemEqual(getStackInSlot(1), storedItem, true, true)) + { + int wanted = getStackInSlot(1).getMaxStackSize() - getStackInSlot(1).stackSize; + if (storedItem.stackSize >= wanted) + { + decrStackSize(1, -wanted); + storedItem.stackSize -= wanted; + } else + { + decrStackSize(1, -storedItem.stackSize); + storedItem = null; + } + } + } + syncWithAll(); + } public Packet getDescriptionPacket() { NBTTagCompound nbtTag = new NBTTagCompound(); diff --git a/src/main/java/techreborn/tiles/TileQuantumChest.java b/src/main/java/techreborn/tiles/TileQuantumChest.java index 461a5e83a..23bd878e1 100644 --- a/src/main/java/techreborn/tiles/TileQuantumChest.java +++ b/src/main/java/techreborn/tiles/TileQuantumChest.java @@ -26,56 +26,71 @@ public class TileQuantumChest extends TileMachineBase implements IInventory, //TODO use long so we can have 9,223,372,036,854,775,807 items instead of 2,147,483,647 int storage = (int) Double.MAX_VALUE; - public Inventory inventory = new Inventory(3, "TileQuantumChest", - storage); + public Inventory inventory = new Inventory(3, "TileQuantumChest", storage); public ItemStack storedItem; - @Override - public void updateEntity() { - if (!worldObj.isRemote) { - if (storedItem != null) { - ItemStack fakeStack = storedItem.copy(); - fakeStack.stackSize = 1; - setInventorySlotContents(2, fakeStack); - } else { - setInventorySlotContents(2, null); - } + @Override + public void updateEntity() + { + if (!worldObj.isRemote) + { + if (storedItem != null) + { + ItemStack fakeStack = storedItem.copy(); + fakeStack.stackSize = 1; + setInventorySlotContents(2, fakeStack); + } + else if (storedItem == null && getStackInSlot(1) != null) + { + ItemStack fakeStack = getStackInSlot(1).copy(); + fakeStack.stackSize = 1; + setInventorySlotContents(2, fakeStack); + } + else + { + setInventorySlotContents(2, null); + } - if (getStackInSlot(0) != null) { - if (storedItem == null) { - storedItem = getStackInSlot(0); - setInventorySlotContents(0, null); - } else if (ItemUtils.isItemEqual(storedItem, getStackInSlot(0), - true, true)) { - if (storedItem.stackSize <= Integer.MAX_VALUE - - getStackInSlot(0).stackSize) { - storedItem.stackSize += getStackInSlot(0).stackSize; - decrStackSize(0, getStackInSlot(0).stackSize); - } - } - } + if (getStackInSlot(0) != null) + { + if (storedItem == null && getStackInSlot(1) == null) + { + storedItem = getStackInSlot(0); + setInventorySlotContents(0, null); + } + else if (ItemUtils.isItemEqual(storedItem, getStackInSlot(0), true, true)) + { + if (storedItem.stackSize <= storage - getStackInSlot(0).stackSize) + { + storedItem.stackSize += getStackInSlot(0).stackSize; + decrStackSize(0, getStackInSlot(0).stackSize); + } + } + } - if (storedItem != null && getStackInSlot(1) == null) { - ItemStack itemStack = storedItem.copy(); - itemStack.stackSize = itemStack.getMaxStackSize(); - setInventorySlotContents(1, itemStack); - storedItem.stackSize -= itemStack.getMaxStackSize(); - } else if (ItemUtils.isItemEqual(getStackInSlot(1), storedItem, true, - true)) { - int wanted = getStackInSlot(1).getMaxStackSize() - - getStackInSlot(1).stackSize; - if (storedItem.stackSize >= wanted) { - decrStackSize(1, -wanted); - storedItem.stackSize -= wanted; - } else { - decrStackSize(1, -storedItem.stackSize); - storedItem = null; - } - } - } - syncWithAll(); - } + if (storedItem != null && getStackInSlot(1) == null) + { + ItemStack itemStack = storedItem.copy(); + itemStack.stackSize = itemStack.getMaxStackSize(); + setInventorySlotContents(1, itemStack); + storedItem.stackSize -= itemStack.getMaxStackSize(); + } else if (ItemUtils.isItemEqual(getStackInSlot(1), storedItem, true, true)) + { + int wanted = getStackInSlot(1).getMaxStackSize() - getStackInSlot(1).stackSize; + if (storedItem.stackSize >= wanted) + { + decrStackSize(1, -wanted); + storedItem.stackSize -= wanted; + } else + { + decrStackSize(1, -storedItem.stackSize); + storedItem = null; + } + } + } + syncWithAll(); + } public Packet getDescriptionPacket() { NBTTagCompound nbtTag = new NBTTagCompound();