diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java b/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java index 6c503f6ce..8850edf6f 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineStrandCaster.java @@ -2,6 +2,9 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotCraftingOutput; import com.hbm.inventory.SlotNonRetarded; +import com.hbm.inventory.SlotUpgrade; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineStrandCaster; import com.hbm.util.InventoryUtil; import net.minecraft.entity.player.EntityPlayer; @@ -27,6 +30,9 @@ public class ContainerMachineStrandCaster extends Container { } } + //unstacking upgrade + this.addSlotToContainer(new SlotUpgrade(this.caster, 7, 57, 25)); + for (int i = 0; i < 3; i++) { for (int j = 0; j < 9; j++) { @@ -48,13 +54,17 @@ public class ContainerMachineStrandCaster extends Container { ItemStack originalStack = slot.getStack(); stack = originalStack.copy(); - if (index <= 6) { - if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 7, this.inventorySlots.size(), true)) { + if (index <= 7) { + if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 8, this.inventorySlots.size(), true)) { return null; } slot.onSlotChange(originalStack, stack); + } else if (stack.getItem() == ModItems.upgrade_unclog) { + // Doesn't matter if it suceeds + this.mergeItemStack(originalStack, 7, 8, false); + return null; } else if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 1, 2, false)) { return null; } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index f14c4b01a..c1f57f7f0 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1849,6 +1849,7 @@ public class ModItems { public static Item upgrade_gc_speed; public static Item upgrade_5g; public static Item upgrade_stack; + public static Item upgrade_unclog; public static Item upgrade_ejector; public static Item ingot_euphemium; @@ -4401,6 +4402,7 @@ public class ModItems { upgrade_gc_speed = new ItemMachineUpgrade().setUnlocalizedName("upgrade_gc_speed").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_gc_speed"); upgrade_5g = new ItemMachineUpgrade().setUnlocalizedName("upgrade_5g").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_5g"); upgrade_stack = new ItemMetaUpgrade(3).setUnlocalizedName("upgrade_stack").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_stack"); + upgrade_unclog = new ItemMachineUpgrade().setUnlocalizedName("upgrade_unclog").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_unclog"); upgrade_ejector = new ItemMetaUpgrade(3).setUnlocalizedName("upgrade_ejector").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_ejector"); wand = new ItemWand().setUnlocalizedName("wand_k").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setFull3D().setTextureName(RefStrings.MODID + ":wand"); @@ -6389,6 +6391,7 @@ public class ModItems { GameRegistry.registerItem(upgrade_gc_speed, upgrade_gc_speed.getUnlocalizedName()); GameRegistry.registerItem(upgrade_5g, upgrade_5g.getUnlocalizedName()); GameRegistry.registerItem(upgrade_stack, upgrade_stack.getUnlocalizedName()); + GameRegistry.registerItem(upgrade_unclog, upgrade_unclog.getUnlocalizedName()); GameRegistry.registerItem(upgrade_ejector, upgrade_ejector.getUnlocalizedName()); //Machine Templates diff --git a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java index 99619f968..9eb813a43 100644 --- a/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java +++ b/src/main/java/com/hbm/items/machine/ItemMachineUpgrade.java @@ -107,6 +107,12 @@ public class ItemMachineUpgrade extends Item { list.add("Allows for total isotopic separation of HEUF6"); list.add(EnumChatFormatting.YELLOW + "also your centrifuge goes sicko mode"); } + + if(this == ModItems.upgrade_unclog) { + list.add(EnumChatFormatting.RED + "Strand Caster Upgrade"); + list.add("Stops the buffer from constantly clogging up"); + list.add("by allowing to periodically drain its contents"); + } } public static enum UpgradeType { diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index cce77298b..9ddedab8e 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -14,6 +14,7 @@ import com.hbm.config.GeneralConfig; import com.hbm.crafting.*; import com.hbm.crafting.handlers.*; import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.material.Mats; @@ -795,6 +796,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 0), new Object[] { " C ", "PUP", " C ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'U', ModItems.upgrade_template }); addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 1), new Object[] { " C ", "PUP", " C ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_HYDRAULIC), 'U', new ItemStack(ModItems.upgrade_stack, 1, 0) }); addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 2), new Object[] { " C ", "PUP", " C ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_ELECTRIC), 'U', new ItemStack(ModItems.upgrade_stack, 1, 1) }); + addRecipeAuto(new ItemStack(ModItems.upgrade_unclog, 1), new Object[] { " B ", "TUT", " B ", 'B', new ItemStack(ModItems.tank_steel), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'U', ModItems.upgrade_template }); addRecipeAuto(new ItemStack(ModItems.upgrade_ejector, 1, 0), new Object[] { " C ", "PUP", " C ", 'C', ModItems.plate_copper, 'P', ModItems.motor, 'U', ModItems.upgrade_template }); addRecipeAuto(new ItemStack(ModItems.upgrade_ejector, 1, 1), new Object[] { " C ", "PUP", " C ", 'C', ModItems.plate_gold, 'P', ModItems.motor, 'U', new ItemStack(ModItems.upgrade_ejector, 1, 0) }); addRecipeAuto(new ItemStack(ModItems.upgrade_ejector, 1, 2), new Object[] { " C ", "PUP", " C ", 'C', ModItems.plate_saturnite, 'P', ModItems.motor, 'U', new ItemStack(ModItems.upgrade_ejector, 1, 1) }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index d27f59aac..b67d2d8bb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -35,6 +35,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase public FluidTank water; public FluidTank steam; + private long lastCastTick = 0; public String getName() { return "container.machineStrandCaster"; @@ -46,7 +47,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } public TileEntityMachineStrandCaster() { - super(7); + super(8); water = new FluidTank(Fluids.WATER, 64_000); steam = new FluidTank(Fluids.SPENTSTEAM, 64_000); } @@ -81,31 +82,41 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase ItemMold.Mold mold = this.getInstalledMold(); if(canProcess()) { - - int itemsCasted = Math.min(amount / mold.getCost(), 9); - - for(int j = 0; j < itemsCasted; j++) { - this.amount -= mold.getCost(); - - ItemStack out = mold.getOutput(type); - - for(int i = 1; i < 7; i++) { - if(slots[i] == null) { - slots[i] = out.copy(); - break; - } - - if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { - slots[i].stackSize += out.stackSize; - break; - } - - } + int minAmount = mold.getCost() * 9; + + // The upgrade makes it flush the buffers after 10 seconds of inactivity + if(slots[7] != null && slots[7].getItem() == ModItems.upgrade_unclog && worldObj.getWorldTime() >= lastCastTick + 200) { + minAmount = mold.getCost(); } - markChanged(); - water.setFill(water.getFill() - getWaterRequired() * itemsCasted); - steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); + if(this.amount >= minAmount) { + int itemsCasted = amount / mold.getCost(); + + for(int j = 0; j < itemsCasted; j++) { + this.amount -= mold.getCost(); + + ItemStack out = mold.getOutput(type); + + for(int i = 1; i < 7; i++) { + if(slots[i] == null) { + slots[i] = out.copy(); + break; + } + + if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { + slots[i].stackSize += out.stackSize; + break; + } + + } + } + markChanged(); + + water.setFill(water.getFill() - getWaterRequired() * itemsCasted); + steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); + + lastCastTick = worldObj.getWorldTime(); + } } } @@ -120,7 +131,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase public boolean canProcess() { ItemMold.Mold mold = this.getInstalledMold(); - if(type != null && mold != null && this.amount >= mold.getCost() * 9 && mold.getOutput(type) != null) { + if(type != null && mold != null && mold.getOutput(type) != null) { for(int i = 1; i < 7; i++) { if(slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill(); @@ -270,6 +281,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase super.writeToNBT(nbt); water.writeToNBT(nbt, "w"); steam.writeToNBT(nbt, "s"); + nbt.setLong("t", lastCastTick); } @Override @@ -277,6 +289,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase super.readFromNBT(nbt); water.readFromNBT(nbt, "w"); steam.readFromNBT(nbt, "s"); + lastCastTick = nbt.getLong("t"); } @Override diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 89177e7b7..fa95fdc2c 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3515,6 +3515,7 @@ item.upgrade_speed_3.name=Geschwindigkeitsupgrade Mk.III item.upgrade_stack_1.name=Stapelupgrade Mk.I item.upgrade_stack_2.name=Stapelupgrade Mk.II item.upgrade_stack_3.name=Stapelupgrade Mk.III +item.upgrade_unclog.name=Unclogging Upgrade item.upgrade_template.name=Maschinenupgrade-Vorlage item.volcanic_pickaxe.name=Geschmolzene Spitzhacke item.wand_d.name=Debug-Zauberstab diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index be8bb0358..b91a80313 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4532,6 +4532,7 @@ item.upgrade_speed_3.name=Speed Upgrade Mk.III item.upgrade_stack_1.name=Stack Ejection Upgrade Mk.I item.upgrade_stack_2.name=Stack Ejection Upgrade Mk.II item.upgrade_stack_3.name=Stack Ejection Upgrade Mk.III +item.upgrade_unclog.name=Unclogging Upgrade item.upgrade_template.name=Machine Upgrade Template item.volcanic_axe.name=Molten Axe item.volcanic_pickaxe.name=Molten Pickaxe diff --git a/src/main/resources/assets/hbm/lang/it_IT.lang b/src/main/resources/assets/hbm/lang/it_IT.lang index 1143e0318..acac9eb4a 100644 --- a/src/main/resources/assets/hbm/lang/it_IT.lang +++ b/src/main/resources/assets/hbm/lang/it_IT.lang @@ -4711,6 +4711,7 @@ item.upgrade_speed_3.name=Speed Upgrade Mk.III item.upgrade_stack_1.name=Stack Ejection Upgrade Mk.I item.upgrade_stack_2.name=Stack Ejection Upgrade Mk.II item.upgrade_stack_3.name=Stack Ejection Upgrade Mk.III +item.upgrade_unclog.name=Unclogging Upgrade item.upgrade_template.name=Machine Upgrade Template item.volcanic_axe.name=Molten Axe item.volcanic_pickaxe.name=Molten Pickaxe diff --git a/src/main/resources/assets/hbm/lang/pl_PL.lang b/src/main/resources/assets/hbm/lang/pl_PL.lang index 1307d0b8b..3cdfabd06 100644 --- a/src/main/resources/assets/hbm/lang/pl_PL.lang +++ b/src/main/resources/assets/hbm/lang/pl_PL.lang @@ -4137,6 +4137,7 @@ item.upgrade_speed_3.name=Speed Upgrade Mk.III item.upgrade_stack_1.name=Stack Ejection Upgrade Mk.I item.upgrade_stack_2.name=Stack Ejection Upgrade Mk.II item.upgrade_stack_3.name=Stack Ejection Upgrade Mk.III +item.upgrade_unclog.name=Unclogging Upgrade item.upgrade_template.name=Machine Upgrade Template item.v1.name=V1 item.volcanic_pickaxe.name=Molten Pickaxe diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 93e77b657..a5b9d9a4a 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -3965,6 +3965,7 @@ item.upgrade_ejector_3.name=Улучшение извлекателя "Скор item.upgrade_stack_1.name=Улучшение извлекателя "Количество стака" I уровня item.upgrade_stack_2.name=Улучшение извлекателя "Количество стака" II уровня item.upgrade_stack_3.name=Улучшение извлекателя "Количество стака" III уровня +item.upgrade_unclog.name=Улучшение машины непрерывного литья "Частичный слив" item.fusion_core.name=Ядерный блок item.energy_core.name=Импровизированный энергоблок diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 3190e942c..511d554b6 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -4407,6 +4407,7 @@ item.upgrade_speed_3=三级红色机器升级 item.upgrade_stack_1=一级堆叠弹出升级 item.upgrade_stack_2=二级堆叠弹出升级 item.upgrade_stack_3=三级堆叠弹出升级 +item.upgrade_unclog.name=Unclogging upgrade item.upgrade_template=机器升级模板 item.volcanic_axe=熔岩斧 item.volcanic_pickaxe=熔岩镐 diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_strand_caster.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_strand_caster.png index 2af67e09e..de357dedd 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_strand_caster.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_strand_caster.png differ diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_unclog.png b/src/main/resources/assets/hbm/textures/items/upgrade_unclog.png new file mode 100644 index 000000000..9ff526c64 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/upgrade_unclog.png differ