From 37b57e31a40fc6a9d4c170b1da1bc151028c952f Mon Sep 17 00:00:00 2001 From: Henry Mao Date: Sat, 2 Feb 2013 15:57:16 +0800 Subject: [PATCH] New Imprinter GUI --- .../assemblyline/textures/gui_imprinter.png | Bin 2314 -> 2391 bytes .../assemblyline/client/gui/GuiImprinter.java | 3 +- .../assemblyline/common/AssemblyLine.java | 2 +- .../machine/imprinter/ContainerImprinter.java | 38 +++++++---- .../imprinter/InventoryImprinterCrafting.java | 14 ++++ .../imprinter/TileEntityImprinter.java | 63 ++++++++++-------- 6 files changed, 76 insertions(+), 44 deletions(-) create mode 100644 src/minecraft/assemblyline/common/machine/imprinter/InventoryImprinterCrafting.java diff --git a/resources/assemblyline/textures/gui_imprinter.png b/resources/assemblyline/textures/gui_imprinter.png index 2988041ebe0224f6a6826bef49b5bf5de2731a33..12a398503392a315ea91ce642fb7604740f30445 100644 GIT binary patch delta 1268 zcmb`Fe>l^50LMSyjmyT8tb3)`tW?6Qc<+|OWb*EBRvlI%Uc%s72KleQM=lyZ-zu!Ne=k>hL5{3vxafHOg z#LUdhf`WpJ7cWYsQiVd%mN14gIw~U2+GEi+km*eTEN((f2aewK#;le3=jB#tK?$U5S0@JY6Hw)UPyq*R%cu1^ElZm1>j4bn^twb)lYk1o-V zns~FA)$IcoX-d>Huk95odtg$kPY{K4kDuu>O;LmFKw+%+``cr>`Q7!&CWzlhy1v53 zv~frIip(B$tWdcL>hvdjfm&Q`O6{et%NbnBNq99`#4AVHp^VM0V|t_j!v@rG`wz!_tpzqz~i5qDbR*4^)% z-jU_Ji28p1cMBo_>+lGqYHYJ9=Ewk7k4HTRXoinhCgwO*fPk3LiO-3 z?y%SL4%mu6G{^UatL*MxYwGL_k(|-J` zCDWYJftHt94e3ZjL|yiiF*QJ}ZkrxF)u!^^YIjbPoc=E^({ak^+B4IRW21TT;O-dGN&C2ep@FZww>M*8aCsI} z*U&fre$|KXO&K0LtTTKe=~ftuIj5AI+nHxKeCD&+r+`2DAut}m6W)sbx?t6u`bz?wn=BX%|W^K<_O D?_)hf delta 1178 zcmbW0eK6a10LH(+UxFZBlF3w$CF-pRjkt5(x<;myxzuQt*d#<*B{MNvbtYeFuBfi_ za%b9cl5Kaalb~MP8i`tjDH)x&nYY=+%er9KYMhtZ_V?~~d;b4C_uTW`Gex{bEKkCe zm6f$-{fbtUTVch&*gCf*U~CaH6#$khq`QLuyec2-E{cf=4Y`n)^t^5(d!2@t{EX@k zH35v`SSH-k%v#*<+v6K^99w?)`dViR@(2(awihXh z6q6h;g~ zOO`+qvDp&ftbbUg5C_pINrc(zJB3--a}OOdf>7)8;^u7LrO_VOt_405OyWjxO0yz& zq&u9;0>4|=*gy_84J^JR%2bFJa=2`eiHkBg$cR4(IXsJXATy+Vnoq?LV2Y zx!!9S`e~{4Tjjc;0n2^)RQuawRq?X2FhJUH(6&F4yL&3Lujf!^RFQY~WSe&<8T01K zy8w9X!V#C2r*2&tFPwF#URAru#e(@003!+Kkx$&9BGpP!5LSb%fO$gY$3h~hq>o(w z(3W9*tx8pNOS`~@dUxZnm|a+O#c&UWTAZQZpGL$(B+xUM5ygqE25&8!=ey?AAB zJ%N0C;OdjnIFJ>_XhcWj)oL+vGzPm=<(`Bqs{NPKU0>;XvTwb;7q?wb1(2q-& z(3r;@?-H^nucq)yFKc%c3z~EN_B6T|ClP2}LO3?zVMMyL!TYg3eISC?86xaNf!|w# zo6~sri?H&TORMtCJ*M#|<{}d^v{ITZVm6US`7lAGe`-YoQriKuxu_3pK6?NsV^9F*?f?`3ClS( z6H6qtp@uWj5u=0Ab*!E4vBOd)dSg{cI+e$3#ZKczt#&EClA}tVVGX+lbW~oaIGhYl zW7W!OOtzEFH{n64r9sURP=&-Ck9+|YXm?@! zg<3fm;HA!C5m9Rxf4jc|B(sY3gvGqMwe5U$|KDv!x~(?p)oP*+a1!{URA(9Kjl0#& zULY!obPz}5UeV35b;F`F+@reAp>MDbtXF#nEx_&=Ecg0RM*$hWV| SEfmI0gCj+pWrZr3T=Ac~3JpR4 diff --git a/src/minecraft/assemblyline/client/gui/GuiImprinter.java b/src/minecraft/assemblyline/client/gui/GuiImprinter.java index 19a9fde2b..52e6550a8 100644 --- a/src/minecraft/assemblyline/client/gui/GuiImprinter.java +++ b/src/minecraft/assemblyline/client/gui/GuiImprinter.java @@ -18,7 +18,7 @@ public class GuiImprinter extends GuiContainer public GuiImprinter(InventoryPlayer par1InventoryPlayer, TileEntityImprinter tileEntity) { super(new ContainerImprinter(par1InventoryPlayer, tileEntity)); - this.ySize = 184; + this.ySize = 201; } /** @@ -28,7 +28,6 @@ public class GuiImprinter extends GuiContainer protected void drawGuiContainerForegroundLayer(int par1, int par2) { this.fontRenderer.drawString(TranslationHelper.getLocal("tile.imprinter.name"), 68, 6, 4210752); - this.fontRenderer.drawString(TranslationHelper.getLocal("assemblyline.gui.crafting") + ":", 20, 54, 4210752); } /** diff --git a/src/minecraft/assemblyline/common/AssemblyLine.java b/src/minecraft/assemblyline/common/AssemblyLine.java index a1b1e18d0..01f11702b 100644 --- a/src/minecraft/assemblyline/common/AssemblyLine.java +++ b/src/minecraft/assemblyline/common/AssemblyLine.java @@ -151,7 +151,7 @@ public class AssemblyLine GameRegistry.addRecipe(new ShapedOreRecipe(itemImprint, new Object[] { "R", "P", "I", 'P', Item.paper, 'R', Item.redstone, 'I', new ItemStack(Item.dyePowder, 1, 0) })); // Imprinter - GameRegistry.addRecipe(new ShapedOreRecipe(blockImprinter, new Object[] { "SIS", "SPS", "WWW", 'S', "ingotSteel", 'W', Block.wood, 'P', Block.pistonStickyBase, 'I', new ItemStack(Item.dyePowder, 1, 0) })); + GameRegistry.addRecipe(new ShapedOreRecipe(blockImprinter, new Object[] { "SIS", "SPS", "WCW", 'S', "ingotSteel", 'C', Block.chest, 'W', Block.workbench, 'P', Block.pistonStickyBase, 'I', new ItemStack(Item.dyePowder, 1, 0) })); // Detector GameRegistry.addRecipe(new ShapedOreRecipe(blockDetector, new Object[] { "SES", "SCS", "SPS", 'S', "ingotSteel", 'C', "basicCircuit", 'E', Item.eyeOfEnder })); diff --git a/src/minecraft/assemblyline/common/machine/imprinter/ContainerImprinter.java b/src/minecraft/assemblyline/common/machine/imprinter/ContainerImprinter.java index 41f2c0eb6..940a208ca 100644 --- a/src/minecraft/assemblyline/common/machine/imprinter/ContainerImprinter.java +++ b/src/minecraft/assemblyline/common/machine/imprinter/ContainerImprinter.java @@ -17,21 +17,31 @@ public class ContainerImprinter extends Container implements ISlotWatcher this.tileEntity = tileEntity; this.inventoryPlayer = inventoryPlayer; - // Paper Input - this.addSlotToContainer(new SlotCustom(this.tileEntity, 0, 33, 22, new ItemStack(AssemblyLine.itemImprint))); - // Item Stamp - this.addSlotToContainer(new Slot(this.tileEntity, 1, 69, 22)); - // Output Filter - this.addSlotToContainer(new SlotImprintResult(this.tileEntity, 2, 127, 22)); - // Crafting Slot - this.addSlotToContainer(new SlotCustom(this.tileEntity, 3, 69, 51, new ItemStack(AssemblyLine.itemImprint))); - // Crafting Output - this.addSlotToContainer(new SlotCraftingResult(this, this.tileEntity, 4, 127, 51)); + /** + * Crafting Matrix + */ + for (int x = 0; x < 3; x++) + { + for (int y = 0; y < 3; y++) + { + this.addSlotToContainer(new Slot(this.tileEntity, y + x, 9 + y * 18, 16 + x * 18)); + } + } + + // Imprint Input for Imprinting + this.addSlotToContainer(new SlotCustom(this.tileEntity, TileEntityImprinter.IMPRINTER_MATRIX_START, 68, 34, new ItemStack(AssemblyLine.itemImprint))); + // Item to be imprinted + this.addSlotToContainer(new Slot(this.tileEntity, TileEntityImprinter.IMPRINTER_MATRIX_START + 1, 92, 34)); + // Result of Crafting/Imprinting + this.addSlotToContainer(new SlotCraftingResult(this, this.tileEntity, TileEntityImprinter.IMPRINTER_MATRIX_START + 2, 148, 34)); // Imprinter Inventory for (int i = 0; i < 9; i++) { - this.addSlotToContainer(new WatchedSlot(this.tileEntity, i + TileEntityImprinter.START_INVENTORY, 8 + i * 18, 80, this)); + for (int ii = 0; ii < 2; ii++) + { + this.addSlotToContainer(new WatchedSlot(this.tileEntity, i + this.tileEntity.imprinterMatrix.length - 1, 8 + i * 18, 80 + ii * 18, this)); + } } // Player Inventory @@ -41,13 +51,13 @@ public class ContainerImprinter extends Container implements ISlotWatcher { for (int var4 = 0; var4 < 9; ++var4) { - this.addSlotToContainer(new WatchedSlot(inventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 102 + var3 * 18, this)); + this.addSlotToContainer(new WatchedSlot(inventoryPlayer, var4 + var3 * 9 + 9, 8 + var4 * 18, 120 + var3 * 18, this)); } } for (var3 = 0; var3 < 9; ++var3) { - this.addSlotToContainer(new WatchedSlot(inventoryPlayer, var3, 8 + var3 * 18, 160, this)); + this.addSlotToContainer(new WatchedSlot(inventoryPlayer, var3, 8 + var3 * 18, 178, this)); } } @@ -83,7 +93,7 @@ public class ContainerImprinter extends Container implements ISlotWatcher { if (!this.mergeItemStack(slotStack, 0, 1, false)) { return null; } } - else if (!this.mergeItemStack(slotStack, this.tileEntity.START_INVENTORY, this.tileEntity.getSizeInventory(), false)) { return null; } + else if (!this.mergeItemStack(slotStack, this.tileEntity.imprinterMatrix.length, this.tileEntity.getSizeInventory(), false)) { return null; } } else if (!this.mergeItemStack(slotStack, this.tileEntity.getSizeInventory(), this.tileEntity.getSizeInventory() + 36, false)) { return null; } diff --git a/src/minecraft/assemblyline/common/machine/imprinter/InventoryImprinterCrafting.java b/src/minecraft/assemblyline/common/machine/imprinter/InventoryImprinterCrafting.java new file mode 100644 index 000000000..44c618fc6 --- /dev/null +++ b/src/minecraft/assemblyline/common/machine/imprinter/InventoryImprinterCrafting.java @@ -0,0 +1,14 @@ +package assemblyline.common.machine.imprinter; + +import net.minecraft.inventory.Container; +import net.minecraft.inventory.InventoryCrafting; + +public class InventoryImprinterCrafting extends InventoryCrafting +{ + + public InventoryImprinterCrafting(Container par1Container, int par2, int par3) + { + super(par1Container, par2, par3); + } + +} diff --git a/src/minecraft/assemblyline/common/machine/imprinter/TileEntityImprinter.java b/src/minecraft/assemblyline/common/machine/imprinter/TileEntityImprinter.java index e5d1a8068..610878eae 100644 --- a/src/minecraft/assemblyline/common/machine/imprinter/TileEntityImprinter.java +++ b/src/minecraft/assemblyline/common/machine/imprinter/TileEntityImprinter.java @@ -27,13 +27,20 @@ import cpw.mods.fml.relauncher.ReflectionHelper; public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInventory, IArmbotUseable { - public static final int START_INVENTORY = 5; - public static final int INVENTORY_LENGTH = 9; + public static final int IMPRINTER_MATRIX_START = 9; + public static final int INVENTORY_START = IMPRINTER_MATRIX_START + 3; /** - * Imprinter slots. 10 extra slots for storing imprints. + * 9 slots for crafting, 1 slot for an imprint, 1 slot for an item */ - private ItemStack[] containingItems = new ItemStack[5 + INVENTORY_LENGTH]; + public InventoryImprinterCrafting craftingMatrix = new InventoryImprinterCrafting(null, 3, 3); + + public ItemStack[] imprinterMatrix = new ItemStack[3]; + + /** + * The Imprinter inventory containing slots. + */ + public ItemStack[] containingItems = new ItemStack[18]; @Override public boolean canUpdate() @@ -46,31 +53,35 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv { if (side == ForgeDirection.UP || side == ForgeDirection.DOWN) return 3; - return START_INVENTORY; + return imprinterMatrix.length; } @Override public int getSizeInventorySide(ForgeDirection side) { if (side == ForgeDirection.UP || side == ForgeDirection.DOWN) { return 1; } - return INVENTORY_LENGTH; + return containingItems.length; } @Override public int getSizeInventory() { - return this.containingItems.length; + return this.imprinterMatrix.length + this.containingItems.length; } @Override public ItemStack getStackInSlot(int slot) { - return this.containingItems[slot]; + if (slot < 9) + { + return this.craftingMatrix.getStackInSlot(slot); + } + else if (slot < 11) { return this.imprinterMatrix[slot - IMPRINTER_MATRIX_START]; } + return this.containingItems[slot - IMPRINTER_MATRIX_START]; } /** - * Removes from an inventory slot (first arg) up to a specified number (second arg) of items and - * returns them in a new stack. + * Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a new stack. */ @Override public ItemStack decrStackSize(int i, int amount) @@ -104,8 +115,7 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv } /** - * When some containers are closed they call this on each slot, then drop whatever it returns as - * an EntityItem - like when you close a workbench GUI. + * When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem - like when you close a workbench GUI. */ @Override public ItemStack getStackInSlotOnClosing(int slot) @@ -123,8 +133,7 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv } /** - * Sets the given item stack to the specified slot in the inventory (can be crafting or armor - * sections). + * Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections). */ @Override public void setInventorySlotContents(int par1, ItemStack par2ItemStack) @@ -304,10 +313,14 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv */ public ArrayList hasResource(Object[] recipeItems) { + /** + * Simulate an imprinter. + */ TileEntityImprinter test = new TileEntityImprinter(); NBTTagCompound cloneData = new NBTTagCompound(); this.writeToNBT(cloneData); test.readFromNBT(cloneData); + /** * The actual amount of resource required. Each ItemStack will only have stacksize of 1. */ @@ -323,7 +336,7 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv if (recipeItem != null) { - for (int i = START_INVENTORY; i < test.getSizeInventory(); i++) + for (int i = imprinterMatrix.length; i < test.getSizeInventory(); i++) { ItemStack checkStack = test.getStackInSlot(i); @@ -355,7 +368,7 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv if (recipeItem != null) { - for (int i = START_INVENTORY; i < test.getSizeInventory(); i++) + for (int i = imprinterMatrix.length; i < test.getSizeInventory(); i++) { ItemStack checkStack = test.getStackInSlot(i); @@ -427,6 +440,12 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv nbt.setTag("Items", var2); } + /** + * Armbot + * @param tileEntity + * @param heldEntity + * @return + */ @Override public boolean onUse(TileEntityArmbot tileEntity, Entity heldEntity) { @@ -435,17 +454,7 @@ public class TileEntityImprinter extends TileEntityAdvanced implements ISidedInv if (heldEntity instanceof EntityItem) { ItemStack stack = ((EntityItem) heldEntity).getEntityItem(); - if (this.getStackInSlot(3) == null && stack != null && stack.itemID == AssemblyLine.itemImprint.itemID) // no - // crafting - // imprint - // and - // stack - // not - // null - // and - // stack - // is - // imprint + if (this.getStackInSlot(3) == null && stack != null && stack.itemID == AssemblyLine.itemImprint.itemID) { this.setInventorySlotContents(3, stack); this.onInventoryChanged();