From c61982ef18a920dfb6db1d6c6184d63ffb943863 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 5 May 2016 10:43:04 +0200 Subject: [PATCH] Speed upgrade and crafting if needed on constructor --- CHANGELOG.md | 2 +- .../container/ContainerConstructor.java | 14 ++++++++++++++ .../refinedstorage/gui/GuiConstructor.java | 2 +- .../refinedstorage/tile/TileConstructor.java | 16 +++++++++++++++- .../textures/gui/constructor.png | Bin 1815 -> 1979 bytes 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6ae198e9..21ff6b281 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ WIP **TODO** - Saving crafting task state - Cancelling crafting tasks -- "Craft if needed" upgrade on constructor and interface +- "Craft if needed" upgrade on interface - Textures - Update wiki diff --git a/src/main/java/refinedstorage/container/ContainerConstructor.java b/src/main/java/refinedstorage/container/ContainerConstructor.java index bd94f4f61..9107f92fd 100755 --- a/src/main/java/refinedstorage/container/ContainerConstructor.java +++ b/src/main/java/refinedstorage/container/ContainerConstructor.java @@ -1,7 +1,12 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import refinedstorage.RefinedStorageItems; +import refinedstorage.container.slot.IItemValidator; +import refinedstorage.container.slot.SlotFiltered; import refinedstorage.container.slot.SlotSpecimenItemBlock; +import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.TileConstructor; public class ContainerConstructor extends ContainerBase { @@ -11,6 +16,15 @@ public class ContainerConstructor extends ContainerBase { addSlotToContainer(new SlotSpecimenItemBlock(constructor.getInventory(), 0, 80, 20)); + for (int i = 0; i < 4; ++i) { + addSlotToContainer(new SlotFiltered(constructor.getUpgradesInventory(), i, 187, 6 + (i * 18), new IItemValidator() { + @Override + public boolean isValid(ItemStack stack) { + return stack.getItem() == RefinedStorageItems.UPGRADE && (stack.getMetadata() == ItemUpgrade.TYPE_SPEED || stack.getMetadata() == ItemUpgrade.TYPE_CRAFTING); + } + })); + } + addPlayerInventory(8, 55); } } diff --git a/src/main/java/refinedstorage/gui/GuiConstructor.java b/src/main/java/refinedstorage/gui/GuiConstructor.java index 2b53fa43e..e5910e5ac 100755 --- a/src/main/java/refinedstorage/gui/GuiConstructor.java +++ b/src/main/java/refinedstorage/gui/GuiConstructor.java @@ -10,7 +10,7 @@ public class GuiConstructor extends GuiBase { private TileConstructor constructor; public GuiConstructor(ContainerConstructor container, TileConstructor constructor) { - super(container, 176, 137); + super(container, 211, 137); this.constructor = constructor; } diff --git a/src/main/java/refinedstorage/tile/TileConstructor.java b/src/main/java/refinedstorage/tile/TileConstructor.java index 15acf2d47..1260f2fb9 100755 --- a/src/main/java/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/refinedstorage/tile/TileConstructor.java @@ -10,6 +10,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.math.BlockPos; import refinedstorage.container.ContainerConstructor; import refinedstorage.inventory.InventorySimple; +import refinedstorage.tile.autocrafting.CraftingPattern; import refinedstorage.tile.config.ICompareConfig; import refinedstorage.util.InventoryUtils; @@ -19,6 +20,7 @@ public class TileConstructor extends TileMachine implements ICompareConfig { public static final String NBT_COMPARE = "Compare"; private InventorySimple inventory = new InventorySimple("constructor", 1, this); + private InventorySimple upgradesInventory = new InventorySimple("upgrades", 4, this); private int compare = 0; @@ -29,7 +31,7 @@ public class TileConstructor extends TileMachine implements ICompareConfig { @Override public void updateMachine() { - if (ticks % SPEED == 0 && inventory.getStackInSlot(0) != null) { + if (ticks % TileInterface.getSpeed(upgradesInventory) == 0 && inventory.getStackInSlot(0) != null) { BlockPos front = pos.offset(getDirection()); Block tryingToPlace = ((ItemBlock) inventory.getStackInSlot(0).getItem()).getBlock(); @@ -39,6 +41,12 @@ public class TileConstructor extends TileMachine implements ICompareConfig { if (took != null) { worldObj.setBlockState(front, tryingToPlace.getStateFromMeta(took.getItemDamage()), 1 | 2); + } else if (TileInterface.hasCrafting(upgradesInventory)) { + CraftingPattern pattern = controller.getPatternForItem(inventory.getStackInSlot(0).copy(), compare); + + if (pattern != null && !controller.hasCraftingTaskWithPattern(pattern, compare)) { + controller.addCraftingTaskForPattern(pattern); + } } } } @@ -65,6 +73,7 @@ public class TileConstructor extends TileMachine implements ICompareConfig { } InventoryUtils.restoreInventory(inventory, 0, nbt); + InventoryUtils.restoreInventory(upgradesInventory, 1, nbt); } @Override @@ -74,6 +83,7 @@ public class TileConstructor extends TileMachine implements ICompareConfig { nbt.setInteger(NBT_COMPARE, compare); InventoryUtils.saveInventory(inventory, 0, nbt); + InventoryUtils.saveInventory(upgradesInventory, 1, nbt); } @Override @@ -95,6 +105,10 @@ public class TileConstructor extends TileMachine implements ICompareConfig { return ContainerConstructor.class; } + public InventorySimple getUpgradesInventory() { + return upgradesInventory; + } + public IInventory getInventory() { return inventory; } diff --git a/src/main/resources/assets/refinedstorage/textures/gui/constructor.png b/src/main/resources/assets/refinedstorage/textures/gui/constructor.png index ed6758a122563b37a7329615504f725e4fe1f632..d317bac644d41a46f8dee74131932bf18f85598f 100755 GIT binary patch literal 1979 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo{p?&#~tz_78O`%fY(0|PTd zfKP}kP~62^QA&dRf`N&DBm;)v@9e6; zXy+{Oh%9Dc;5!7ujG`J|4M0JO64!{5;QX|b^2DN4hJwV*yb`^<)Di^~Jp(<<9OF7a zV1c6O>Eakt5%+dZZ=RH)1j~BG%Kz@mZt#>p{ISwGM>IPl3f2<$k|?v&{7Ml{?`?SPFyFTQZC6>ESiz0JHm-mMrdRuB1vW5=ENIyEO+>?ik!!_L(GUBWDhzIG z^k>|i;mD90wrkxw2G$zkf)(uz_iwJtNPlLXa6Wnt$4~zTBWMVV$36vEH z@YZ%D^)UCSFzqRvr@OAJnU2eBUgaK-Ed=&eIfzV-h~$5S+XUhfvJsiNA0Expdpr@ z_-+_~$Z5ZmF>A^+W!4QRP92#2b1TB|_jU7qgbJpYFv=@3P1|&tU4_HqYTEYgf4+os z`Ds14@|$tb{WEKrb}a?OcvF5B`WrL=b8AraX(mo_S6CSjP<@SxM_bA Qt3idUr>mdKI;Vst01An5Bme*a literal 1815 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5D>38$lZxy-8q?;Kn_c~qpu?a z!^VE@KZ&di49pAxJ|V6^adUI?(9qEC?(Sp9j{X1tA1E>kMnhnPgh10{aTQRmDGBlm z1}6TI3>bpHv#SE5owL9rvY3H^?=T269?xHq0u+=eag8Vm&QB{TPb^AhC`ioAE78kK zEm1JhGte{p)02Fkfq|*O)5S5QBJS<2*Ivwy0;~^Br+=@1a&<b(S3Vge(|l>x4*r$TF%y(d+B}s-YeWS%rVPKtfq3`VW{}kz#`zl@Gf>50~3b= zgTMR)Abnu(X(0y&MlVJ?IqT1kp27_0_@~;%GBC0{xR=VQ(7?d-;mahJ2jA_48u-0H z3U`!8GI0cO7wr45eSH0o1xpwi_JWk%*{#C}GJKw$0+4Q~o~{bi%5mT_`xTA@_FLAR zd-H0(|1QRg*7B0t?ZRM{NXkIgaD4b4AARrb63K?|daI9>Tfcd=a&jKSzD)Pt_-EJs zKt_XgK^+g$px|(S_MBCd(-`jUUL$q??S|FM{dO__SSD*)H#6Q^5UL*HUa$o~qBg&1 zmESDJG!>x!g7=&17%IN+%BtCadfhy$muwH#pACF0zXhjdx9