From 88db4dfcb50405c7575afa3efcb0f69af8aa550b Mon Sep 17 00:00:00 2001 From: blue42u Date: Wed, 7 May 2014 17:48:02 -0500 Subject: [PATCH] Some tweaks for the crafting station. First commit. --- .../blocks/logic/CraftingStationLogic.java | 22 ++++++++++++------- .../inventory/CraftingStationContainer.java | 4 +++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/tconstruct/blocks/logic/CraftingStationLogic.java b/src/main/java/tconstruct/blocks/logic/CraftingStationLogic.java index d631e678..6cfebc4f 100644 --- a/src/main/java/tconstruct/blocks/logic/CraftingStationLogic.java +++ b/src/main/java/tconstruct/blocks/logic/CraftingStationLogic.java @@ -22,6 +22,7 @@ public class CraftingStationLogic extends InventoryLogic implements ISidedInvent public WeakReference furnace; public boolean tinkerTable; public boolean stencilTable; + public boolean doubleFirst; public CraftingStationLogic() { @@ -37,8 +38,10 @@ public class CraftingStationLogic extends InventoryLogic implements ISidedInvent patternChest = null; furnace = null; tinkerTable = false; - for (int yPos = y - 1; yPos <= y + 1; yPos++) + int[] ys = {y, y - 1, y + 1}; + for (byte iy = 0; iy < 3; iy++) { + int yPos = ys[iy]; for (int xPos = x - 1; xPos <= x + 1; xPos++) { for (int zPos = z - 1; zPos <= z + 1; zPos++) @@ -47,10 +50,10 @@ public class CraftingStationLogic extends InventoryLogic implements ISidedInvent if (chest == null && tile instanceof TileEntityChest) { chest = new WeakReference(tile); - checkForChest(world, xPos + 1, yPos, zPos); - checkForChest(world, xPos - 1, yPos, zPos); - checkForChest(world, xPos, yPos, zPos + 1); - checkForChest(world, xPos, yPos, zPos - 1); + checkForChest(world, xPos, yPos, zPos, 1, 0); + checkForChest(world, xPos, yPos, zPos, -1, 0); + checkForChest(world, xPos, yPos, zPos, 0, 1); + checkForChest(world, xPos, yPos, zPos, 0, -1); } else if (patternChest == null && tile instanceof PatternChestLogic) patternChest = new WeakReference(tile); @@ -65,11 +68,14 @@ public class CraftingStationLogic extends InventoryLogic implements ISidedInvent return new CraftingStationContainer(inventoryplayer, this, x, y, z); } - void checkForChest (World world, int x, int y, int z) + void checkForChest (World world, int x, int y, int z, int dx, int dz) { - TileEntity tile = world.getTileEntity(x, y, z); + TileEntity tile = world.getTileEntity(x + dx, y, z + dz); if (tile instanceof TileEntityChest) + { doubleChest = new WeakReference(tile); + doubleFirst = dx + dz < 0; + } } @Override @@ -146,4 +152,4 @@ public class CraftingStationLogic extends InventoryLogic implements ISidedInvent { return false; } -} \ No newline at end of file +} diff --git a/src/main/java/tconstruct/inventory/CraftingStationContainer.java b/src/main/java/tconstruct/inventory/CraftingStationContainer.java index d4263359..e999465b 100644 --- a/src/main/java/tconstruct/inventory/CraftingStationContainer.java +++ b/src/main/java/tconstruct/inventory/CraftingStationContainer.java @@ -71,13 +71,15 @@ public class CraftingStationContainer extends Container { IInventory chest = logic.chest.get(); IInventory doubleChest = logic.doubleChest == null ? null : logic.doubleChest.get(); + IInventory firstChest = (logic.doubleFirst ? doubleChest : chest); + IInventory secondChest = (logic.doubleFirst ? chest : doubleChest); int count = 0; for (column = 0; column < 9; column++) { for (row = 0; row < 6; row++) { int value = count < 27 ? count : count - 27; - this.addSlotToContainer(new Slot(count < 27 ? chest : doubleChest, value, -108 + row * 18, 19 + column * 18)); + this.addSlotToContainer(new Slot(count < 27 ? firstChest : secondChest, value, -108 + row * 18, 19 + column * 18)); count++; if (count >= 27 && doubleChest == null) break;