diff --git a/src/main/java/refinedstorage/container/ContainerSolderer.java b/src/main/java/refinedstorage/container/ContainerSolderer.java index a0077fd64..4bbec007e 100755 --- a/src/main/java/refinedstorage/container/ContainerSolderer.java +++ b/src/main/java/refinedstorage/container/ContainerSolderer.java @@ -3,7 +3,11 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import refinedstorage.RefinedStorageItems; +import refinedstorage.container.slot.IItemValidator; +import refinedstorage.container.slot.SlotFiltered; import refinedstorage.container.slot.SlotOutput; +import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.TileSolderer; public class ContainerSolderer extends ContainerBase { @@ -21,6 +25,15 @@ public class ContainerSolderer extends ContainerBase { addSlotToContainer(new SlotOutput(solderer, 3, 134, 38)); + for (int i = 0; i < 4; ++i) { + addSlotToContainer(new SlotFiltered(solderer.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, 95); } diff --git a/src/main/java/refinedstorage/gui/GuiSolderer.java b/src/main/java/refinedstorage/gui/GuiSolderer.java index 3cfb316f9..3ba9386c6 100755 --- a/src/main/java/refinedstorage/gui/GuiSolderer.java +++ b/src/main/java/refinedstorage/gui/GuiSolderer.java @@ -8,7 +8,7 @@ public class GuiSolderer extends GuiBase { private TileSolderer solderer; public GuiSolderer(ContainerSolderer container, TileSolderer solderer) { - super(container, 176, 177); + super(container, 211, 177); this.solderer = solderer; } @@ -29,7 +29,7 @@ public class GuiSolderer extends GuiBase { drawTexture(x, y, 0, 0, width, height); if (solderer.isWorking()) { - drawTexture(x + 83, y + 40 - 1, 177, 0, solderer.getProgressScaled(22), 15); + drawTexture(x + 83, y + 40 - 1, 212, 0, solderer.getProgressScaled(22), 15); } } diff --git a/src/main/java/refinedstorage/tile/TileSolderer.java b/src/main/java/refinedstorage/tile/TileSolderer.java index e58cc0144..171f309a2 100755 --- a/src/main/java/refinedstorage/tile/TileSolderer.java +++ b/src/main/java/refinedstorage/tile/TileSolderer.java @@ -27,6 +27,7 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven }; private InventorySimple inventory = new InventorySimple("solderer", 4, this); + private InventorySimple upgradesInventory = new InventorySimple("upgrades", 4, this); private ISoldererRecipe recipe; @@ -56,9 +57,9 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven markDirty(); } } else if (working) { - progress++; + progress += getSpeed(); - if (progress == recipe.getDuration()) { + if (progress >= recipe.getDuration()) { if (inventory.getStackInSlot(3) != null) { inventory.getStackInSlot(3).stackSize += recipe.getResult().stackSize; } else { @@ -76,6 +77,18 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven } } + public int getSpeed() { + int speed = 1; + + for (int i = 0; i < upgradesInventory.getSizeInventory(); ++i) { + if (upgradesInventory.getStackInSlot(i) != null) { + speed += 1; + } + } + + return speed; + } + @Override public void onDisconnected() { super.onDisconnected(); @@ -96,6 +109,7 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven super.readFromNBT(nbt); InventoryUtils.restoreInventory(this, 0, nbt); + InventoryUtils.restoreInventory(upgradesInventory, 1, nbt); recipe = SoldererRegistry.getRecipe(inventory); @@ -113,6 +127,7 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven super.writeToNBT(nbt); InventoryUtils.saveInventory(this, 0, nbt); + InventoryUtils.saveInventory(upgradesInventory, 1, nbt); nbt.setBoolean(NBT_WORKING, working); nbt.setInteger(NBT_PROGRESS, progress); @@ -164,6 +179,9 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven } public int getProgressScaled(int i) { + if (progress > duration) { + return i; + } return (int) ((float) progress / (float) duration * (float) i); } @@ -271,4 +289,8 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven public boolean canExtractItem(int slot, ItemStack stack, EnumFacing direction) { return slot == 3; } + + public InventorySimple getUpgradesInventory() { + return upgradesInventory; + } } diff --git a/src/main/resources/assets/refinedstorage/textures/gui/solderer.png b/src/main/resources/assets/refinedstorage/textures/gui/solderer.png index a16fed420..5243c64fb 100755 Binary files a/src/main/resources/assets/refinedstorage/textures/gui/solderer.png and b/src/main/resources/assets/refinedstorage/textures/gui/solderer.png differ