From d46f8cbf20775df00cc6179fefac6b60103e8f63 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 5 May 2016 13:16:28 +0200 Subject: [PATCH] Add speed upgrade to destructor --- .../container/ContainerDestructor.java | 14 ++++++ .../refinedstorage/gui/GuiDestructor.java | 2 +- .../refinedstorage/tile/TileConstructor.java | 10 ++--- .../refinedstorage/tile/TileController.java | 40 +++++++++--------- .../refinedstorage/tile/TileDestructor.java | 11 ++++- .../refinedstorage/tile/TileExporter.java | 6 +-- .../refinedstorage/tile/TileInterface.java | 20 +++++---- .../autocrafting/task/BasicCraftingTask.java | 4 +- .../textures/gui/destructor.png | Bin 1807 -> 1987 bytes 9 files changed, 66 insertions(+), 41 deletions(-) diff --git a/src/main/java/refinedstorage/container/ContainerDestructor.java b/src/main/java/refinedstorage/container/ContainerDestructor.java index e97a4af5c..8f188d314 100755 --- a/src/main/java/refinedstorage/container/ContainerDestructor.java +++ b/src/main/java/refinedstorage/container/ContainerDestructor.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.TileDestructor; public class ContainerDestructor extends ContainerBase { @@ -12,6 +17,15 @@ public class ContainerDestructor extends ContainerBase { addSlotToContainer(new SlotSpecimenItemBlock(destructor.getInventory(), i, 8 + (18 * i), 20)); } + for (int i = 0; i < 4; ++i) { + addSlotToContainer(new SlotFiltered(destructor.getUpgradesInventory(), i, 187, 6 + (i * 18), new IItemValidator() { + @Override + public boolean isValid(ItemStack stack) { + return stack.getItem() == RefinedStorageItems.UPGRADE && stack.getMetadata() == ItemUpgrade.TYPE_SPEED; + } + })); + } + addPlayerInventory(8, 55); } } diff --git a/src/main/java/refinedstorage/gui/GuiDestructor.java b/src/main/java/refinedstorage/gui/GuiDestructor.java index 1e19a2fd8..4aedbdce7 100755 --- a/src/main/java/refinedstorage/gui/GuiDestructor.java +++ b/src/main/java/refinedstorage/gui/GuiDestructor.java @@ -11,7 +11,7 @@ public class GuiDestructor extends GuiBase { private TileDestructor destructor; public GuiDestructor(ContainerDestructor container, TileDestructor destructor) { - super(container, 176, 137); + super(container, 211, 137); this.destructor = destructor; } diff --git a/src/main/java/refinedstorage/tile/TileConstructor.java b/src/main/java/refinedstorage/tile/TileConstructor.java index 1260f2fb9..4ec1246e9 100755 --- a/src/main/java/refinedstorage/tile/TileConstructor.java +++ b/src/main/java/refinedstorage/tile/TileConstructor.java @@ -15,7 +15,7 @@ import refinedstorage.tile.config.ICompareConfig; import refinedstorage.util.InventoryUtils; public class TileConstructor extends TileMachine implements ICompareConfig { - public static final int SPEED = 10; + public static final int BASE_SPEED = 20; public static final String NBT_COMPARE = "Compare"; @@ -31,7 +31,7 @@ public class TileConstructor extends TileMachine implements ICompareConfig { @Override public void updateMachine() { - if (ticks % TileInterface.getSpeed(upgradesInventory) == 0 && inventory.getStackInSlot(0) != null) { + if (ticks % TileInterface.getSpeed(upgradesInventory, BASE_SPEED) == 0 && inventory.getStackInSlot(0) != null) { BlockPos front = pos.offset(getDirection()); Block tryingToPlace = ((ItemBlock) inventory.getStackInSlot(0).getItem()).getBlock(); @@ -42,10 +42,10 @@ 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); + CraftingPattern pattern = controller.getPattern(inventory.getStackInSlot(0).copy(), compare); - if (pattern != null && !controller.hasCraftingTaskWithPattern(pattern, compare)) { - controller.addCraftingTaskForPattern(pattern); + if (pattern != null && !controller.hasCraftingTask(pattern, compare)) { + controller.addCraftingTask(pattern); } } } diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 5f7f80a15..d53858986 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -260,7 +260,15 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor craftingTasksToAdd.add(task); } - public int getAmountOfCraftingTasksWithPattern(CraftingPattern pattern, int flags) { + public void addCraftingTask(CraftingPattern pattern) { + if (pattern.isProcessing()) { + addCraftingTask(new ProcessingCraftingTask(pattern)); + } else { + addCraftingTask(new BasicCraftingTask(pattern)); + } + } + + public int getCraftingTaskCount(CraftingPattern pattern, int flags) { int amount = 0; for (int i = 0; i < craftingTasks.size(); ++i) { @@ -272,31 +280,23 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor return amount; } - public boolean hasCraftingTaskWithPattern(CraftingPattern pattern, int flags) { - return getAmountOfCraftingTasksWithPattern(pattern, flags) > 0; - } - - public void addCraftingTaskForPattern(CraftingPattern pattern) { - if (pattern.isProcessing()) { - addCraftingTask(new ProcessingCraftingTask(pattern)); - } else { - addCraftingTask(new BasicCraftingTask(pattern)); - } + public boolean hasCraftingTask(CraftingPattern pattern, int flags) { + return getCraftingTaskCount(pattern, flags) > 0; } public List getPatterns() { return patterns; } - public CraftingPattern getPatternForItem(ItemStack stack) { - return getPatternForItem(stack, InventoryUtils.COMPARE_DAMAGE | InventoryUtils.COMPARE_NBT); + public CraftingPattern getPattern(ItemStack pattern) { + return getPattern(pattern, InventoryUtils.COMPARE_DAMAGE | InventoryUtils.COMPARE_NBT); } - public CraftingPattern getPatternForItem(ItemStack stack, int flags) { - for (CraftingPattern pattern : getPatterns()) { - for (ItemStack output : pattern.getOutputs()) { - if (InventoryUtils.compareStack(output, stack, flags)) { - return pattern; + public CraftingPattern getPattern(ItemStack pattern, int flags) { + for (CraftingPattern craftingPattern : getPatterns()) { + for (ItemStack output : craftingPattern.getOutputs()) { + if (InventoryUtils.compareStack(output, pattern, flags)) { + return craftingPattern; } } } @@ -725,7 +725,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor if (id >= 0 && id < itemGroups.size() && quantity > 0) { ItemStack requested = itemGroups.get(id).toItemStack(); int quantityPerRequest = 0; - CraftingPattern pattern = getPatternForItem(requested); + CraftingPattern pattern = getPattern(requested); for (ItemStack output : pattern.getOutputs()) { if (InventoryUtils.compareStackNoQuantity(requested, output)) { @@ -736,7 +736,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor while (quantity > 0) { if (pattern != null) { - addCraftingTaskForPattern(pattern); + addCraftingTask(pattern); quantity -= quantityPerRequest; } else { diff --git a/src/main/java/refinedstorage/tile/TileDestructor.java b/src/main/java/refinedstorage/tile/TileDestructor.java index df48e48b6..e31453375 100755 --- a/src/main/java/refinedstorage/tile/TileDestructor.java +++ b/src/main/java/refinedstorage/tile/TileDestructor.java @@ -22,9 +22,10 @@ public class TileDestructor extends TileMachine implements ICompareConfig, IMode public static final String NBT_COMPARE = "Compare"; public static final String NBT_MODE = "Mode"; - public static final int SPEED = 10; + public static final int BASE_SPEED = 20; private InventorySimple inventory = new InventorySimple("destructor", 9, this); + private InventorySimple upgradesInventory = new InventorySimple("upgrades", 4, this); private int compare = 0; private int mode = 0; @@ -36,7 +37,7 @@ public class TileDestructor extends TileMachine implements ICompareConfig, IMode @Override public void updateMachine() { - if (ticks % SPEED == 0) { + if (ticks % TileInterface.getSpeed(upgradesInventory, BASE_SPEED) == 0) { BlockPos front = pos.offset(getDirection()); IBlockState frontBlockState = worldObj.getBlockState(front); @@ -108,6 +109,7 @@ public class TileDestructor extends TileMachine implements ICompareConfig, IMode } InventoryUtils.restoreInventory(inventory, 0, nbt); + InventoryUtils.restoreInventory(upgradesInventory, 1, nbt); } @Override @@ -118,6 +120,7 @@ public class TileDestructor extends TileMachine implements ICompareConfig, IMode nbt.setInteger(NBT_MODE, mode); InventoryUtils.saveInventory(inventory, 0, nbt); + InventoryUtils.saveInventory(upgradesInventory, 1, nbt); } @Override @@ -140,6 +143,10 @@ public class TileDestructor extends TileMachine implements ICompareConfig, IMode return ContainerDestructor.class; } + public InventorySimple getUpgradesInventory() { + return upgradesInventory; + } + public IInventory getInventory() { return inventory; } diff --git a/src/main/java/refinedstorage/tile/TileExporter.java b/src/main/java/refinedstorage/tile/TileExporter.java index 9116da565..90d980bb8 100755 --- a/src/main/java/refinedstorage/tile/TileExporter.java +++ b/src/main/java/refinedstorage/tile/TileExporter.java @@ -50,10 +50,10 @@ public class TileExporter extends TileMachine implements ICompareConfig { controller.push(remaining); } } else if (TileInterface.hasCrafting(upgradesInventory)) { - CraftingPattern pattern = controller.getPatternForItem(slot, compare); + CraftingPattern pattern = controller.getPattern(slot, compare); - if (pattern != null && !controller.hasCraftingTaskWithPattern(pattern, compare)) { - controller.addCraftingTaskForPattern(pattern); + if (pattern != null && !controller.hasCraftingTask(pattern, compare)) { + controller.addCraftingTask(pattern); } } } diff --git a/src/main/java/refinedstorage/tile/TileInterface.java b/src/main/java/refinedstorage/tile/TileInterface.java index 8605a6e81..8a134b2dc 100755 --- a/src/main/java/refinedstorage/tile/TileInterface.java +++ b/src/main/java/refinedstorage/tile/TileInterface.java @@ -39,6 +39,10 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided } public static int getSpeed(InventorySimple upgradesInventory) { + return getSpeed(upgradesInventory, 9); + } + + public static int getSpeed(InventorySimple upgradesInventory, int baseSpeed) { int upgrades = 0; for (int i = 0; i < upgradesInventory.getSizeInventory(); ++i) { @@ -47,7 +51,7 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided } } - return 9 - (upgrades * 2); + return baseSpeed - (upgrades * 2); } public static boolean hasCrafting(InventorySimple upgradesInventory) { @@ -86,7 +90,7 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided ItemStack got = inventory.getStackInSlot(i + 9); if (wanted != null) { - boolean ok = false; + boolean mayTake = false; if (got != null) { if (!InventoryUtils.compareStack(wanted, got, compare)) { @@ -94,13 +98,13 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided inventory.setInventorySlotContents(i + 9, null); } } else { - ok = true; + mayTake = true; } } else { - ok = true; + mayTake = true; } - if (ok) { + if (mayTake) { got = inventory.getStackInSlot(i + 9); int needed = got == null ? wanted.stackSize : wanted.stackSize - got.stackSize; @@ -120,13 +124,13 @@ public class TileInterface extends TileMachine implements ICompareConfig, ISided } if (hasCrafting(upgradesInventory)) { - CraftingPattern pattern = controller.getPatternForItem(wanted, compare); + CraftingPattern pattern = controller.getPattern(wanted, compare); if (pattern != null && took == null || took.stackSize != needed) { - int tasksToCreate = needed - controller.getAmountOfCraftingTasksWithPattern(pattern, compare); + int tasksToCreate = needed - controller.getCraftingTaskCount(pattern, compare); for (int j = 0; j < tasksToCreate; ++j) { - controller.addCraftingTaskForPattern(pattern); + controller.addCraftingTask(pattern); } } } diff --git a/src/main/java/refinedstorage/tile/autocrafting/task/BasicCraftingTask.java b/src/main/java/refinedstorage/tile/autocrafting/task/BasicCraftingTask.java index 7b4183d3a..4eadb3c9e 100755 --- a/src/main/java/refinedstorage/tile/autocrafting/task/BasicCraftingTask.java +++ b/src/main/java/refinedstorage/tile/autocrafting/task/BasicCraftingTask.java @@ -33,10 +33,10 @@ public class BasicCraftingTask implements ICraftingTask { if (took != null) { satisfied[i] = true; } else if (!childTasks[i]) { - CraftingPattern pattern = controller.getPatternForItem(input); + CraftingPattern pattern = controller.getPattern(input); if (pattern != null) { - controller.addCraftingTaskForPattern(pattern); + controller.addCraftingTask(pattern); childTasks[i] = true; diff --git a/src/main/resources/assets/refinedstorage/textures/gui/destructor.png b/src/main/resources/assets/refinedstorage/textures/gui/destructor.png index 6de1a9c413ed6a57b51a85e3a57da6600ee8b831..76e785c9d70a841ceb96a4bdf1f2f43e05b8719e 100755 GIT binary patch literal 1987 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 zV1c6P>Eakt5%+dZW8N(X0hd^g|Nl>}`#$4`5c5mN{OGXH^OSlc)?EH^lr6fO|IqDg>%^wED8*a92wcufuw_j_FM&rdjFDh zr_R;Sb2;t97?tw;Q{Lo^P6if*1yl3pp1&S@K>v&Kv6VHfGCx<#F5L5Iv)aW^yBYRw z7Ip@i^L9_0Bhc7}hKQ=LvwJ+Z0PVQMa_3*_N1z!qH5RaOI503pWwN+D-)*nHc3p$= z9px+i66`>W8JKR}QU#I%7rc}i7;ks)Wcu>DMEzr$cxrlvkghRn#>BZt?(V&=c2NlI z%HD^*`2lZuwKkD)UfoVcii6kTC)R-se}%H1C`Swd#!chg-SY|BHZztZz{6 zthPRN?t)5G8rKCS>rU~{*)XrUIqcc>+wq~w1HE@lerin9EH1NKaNNjxos(brEuKqE zbi>!WhI{hMRyAaTLJMe*S=!s%Pkbk_X53#odB^s}Z+Lt+vA*!S?YU=0{A{Qafd+=J z^Voo)0Sr8F;NJ5)x5jf*gA|At@IJGK>%zTk^}_n_o079qxGyX}>-UKLR<IL-x>M|zc1Yqt@yWag}oqmocwmJ ugImA&2u)kV$~0x0f38$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 zEm1JhGtjflF|PAtU|`Ddba4!+h7qt9mvIM62pY$`4N<+dek4zSbJJV>GQ-ZQYO{*n-|ulkO;UKjR|jTj!_N8J z)>uiho!EQ&=7YO_-`*^poY_#5d7jPw*>|A#A)xYoDySF+gEM!ZkfZ*FGEn!Ez0<#n zE0nKKZ~ngf=H}^s%NRdhe|GbM{1#kRJzEEK8c6FdMm=SQ