From b31105d4d18915baf7b8bbff7f050c02eded30cc Mon Sep 17 00:00:00 2001 From: RosaTryp <98919832+RosaTryp@users.noreply.github.com> Date: Mon, 12 Aug 2024 00:55:26 +0200 Subject: [PATCH 1/3] Added config options to steam turbine --- .../machine/TileEntityMachineTurbine.java | 45 ++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index 94cf03e3b..b7cc59fb7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -1,5 +1,9 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.container.ContainerMachineTurbine; @@ -12,6 +16,7 @@ import com.hbm.inventory.gui.GUIMachineTurbine; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; @@ -39,12 +44,11 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine { private ItemStack slots[]; public long power; - public static final long maxPower = 1000000; public int age = 0; public FluidTank[] tanks; @@ -55,11 +59,40 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS private String customName; protected double[] info = new double[3]; + //Configurable values + public static long maxPower = 1_000_000; + public static int inputTankSize = 64_000; + public static int outputTankSize = 128_000; + public static int maxSteamPerTick = 6_000; + public static double efficiency = 0.85D; + public TileEntityMachineTurbine() { slots = new ItemStack[7]; tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.STEAM, 64000, 0); - tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 128000, 1); + tanks[0] = new FluidTank(Fluids.STEAM, inputTankSize, 0); + tanks[1] = new FluidTank(Fluids.SPENTSTEAM, outputTankSize, 1); + } + @Override + public String getConfigName() { + return "steamturbine"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:maxPower", maxPower); + inputTankSize = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSize); + outputTankSize = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSize); + maxSteamPerTick = IConfigurableMachine.grab(obj, "I:maxSteamPerTick", maxSteamPerTick); + efficiency = IConfigurableMachine.grab(obj, "D:efficiency", efficiency); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:maxPower").value(maxPower); + writer.name("I:inputTankSize").value(inputTankSize); + writer.name("I:outputTankSize").value(outputTankSize); + writer.name("I:maxSteamPerTick").value(maxSteamPerTick); + writer.name("D:efficiency").value(efficiency); } @Override @@ -249,12 +282,12 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS boolean valid = false; if(in.hasTrait(FT_Coolable.class)) { FT_Coolable trait = in.getTrait(FT_Coolable.class); - double eff = trait.getEfficiency(CoolingType.TURBINE) * 0.85D; //small turbine is only 85% efficient + double eff = trait.getEfficiency(CoolingType.TURBINE) * efficiency; //small turbine is only 85% efficient by default if(eff > 0) { tanks[1].setTankType(trait.coolsTo); int inputOps = tanks[0].getFill() / trait.amountReq; int outputOps = (tanks[1].getMaxFill() - tanks[1].getFill()) / trait.amountProduced; - int cap = 6_000 / trait.amountReq; + int cap = maxSteamPerTick / trait.amountReq; int ops = Math.min(inputOps, Math.min(outputOps, cap)); tanks[0].setFill(tanks[0].getFill() - ops * trait.amountReq); tanks[1].setFill(tanks[1].getFill() + ops * trait.amountProduced); From bcdd52246410b92282584b980290af269711a7e1 Mon Sep 17 00:00:00 2001 From: RosaTryp <98919832+RosaTryp@users.noreply.github.com> Date: Mon, 12 Aug 2024 01:26:20 +0200 Subject: [PATCH 2/3] Added config options for industrial steam turbine --- .../TileEntityMachineLargeTurbine.java | 42 ++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 6cb9024f0..3ff9b9f5b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -3,7 +3,10 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; import java.util.Random; +import java.io.IOException; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.blocks.BlockDummyable; import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; @@ -19,6 +22,7 @@ import com.hbm.inventory.gui.GUIMachineLargeTurbine; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; @@ -44,10 +48,9 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine { public long power; - public static final long maxPower = 100000000; public int age = 0; public List list2 = new ArrayList(); public FluidTank[] tanks; @@ -61,17 +64,46 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme private AudioWrapper audio; private float audioDesync; + //Configurable Values + public static long maxPower = 100000000; + public static int inputTankSize = 512_000; + public static int outputTankSize = 10_240_000; + public static double efficiency = 1.0; + + public TileEntityMachineLargeTurbine() { super(7); tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.STEAM, 512000, 0); - tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 10240000, 1); + tanks[0] = new FluidTank(Fluids.STEAM, inputTankSize, 0); + tanks[1] = new FluidTank(Fluids.SPENTSTEAM, outputTankSize, 1); Random rand = new Random(); audioDesync = rand.nextFloat() * 0.05F; } + @Override + public String getConfigName() { + return "steamturbineIndustrial"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:maxPower", maxPower); + inputTankSize = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSize); + outputTankSize = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSize); + efficiency = IConfigurableMachine.grab(obj, "D:efficiency", efficiency); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:maxPower").value(maxPower); + writer.name("INFO").value("industrial steam turbine consumes 20% of availible steam per tick"); + writer.name("I:inputTankSize").value(inputTankSize); + writer.name("I:outputTankSize").value(outputTankSize); + writer.name("D:efficiency").value(efficiency); + } + @Override public String getName() { return "container.machineLargeTurbine"; @@ -106,7 +138,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme boolean valid = false; if(in.hasTrait(FT_Coolable.class)) { FT_Coolable trait = in.getTrait(FT_Coolable.class); - double eff = trait.getEfficiency(CoolingType.TURBINE); //100% efficiency + double eff = trait.getEfficiency(CoolingType.TURBINE) * efficiency; //100% efficiency by default if(eff > 0) { tanks[1].setTankType(trait.coolsTo); int inputOps = (int) Math.floor(tanks[0].getFill() / trait.amountReq); //amount of cycles possible with the entire input buffer From 8e4d4418b60b69fd66782540d40e3a01b32541c5 Mon Sep 17 00:00:00 2001 From: RosaTryp <98919832+RosaTryp@users.noreply.github.com> Date: Mon, 12 Aug 2024 13:56:45 +0200 Subject: [PATCH 3/3] Configuration options for ashpit, leviathan turbine and all condensers --- .../tileentity/machine/TileEntityAshpit.java | 48 ++++++++++++++++--- .../tileentity/machine/TileEntityChungus.java | 43 +++++++++++++++-- .../machine/TileEntityCondenser.java | 34 +++++++++++-- .../machine/TileEntityCondenserPowered.java | 38 +++++++++++++-- .../machine/TileEntityTowerLarge.java | 30 +++++++++++- .../machine/TileEntityTowerSmall.java | 30 +++++++++++- 6 files changed, 200 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java index 183c48ad6..acefaf0f2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java @@ -1,10 +1,15 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.container.ContainerAshpit; import com.hbm.inventory.gui.GUIAshpit; import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ModItems; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -19,7 +24,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine { private int playersUsing = 0; public float doorAngle = 0; @@ -32,10 +37,40 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi public int ashLevelFly; public int ashLevelSoot; + //Configurable values + public static int thresholdWood = 2000; + public static int thresholdCoal = 2000; + public static int thresholdMisc = 2000; + public static int thresholdFly = 2000; + public static int thresholdSoot = 8000; + public TileEntityAshpit() { super(5); } + @Override + public String getConfigName() { + return "ashpit"; + } + + @Override + public void readIfPresent(JsonObject obj) { + thresholdWood = IConfigurableMachine.grab(obj, "I:thresholdWood", thresholdWood); + thresholdCoal = IConfigurableMachine.grab(obj, "I:thresholdCoal", thresholdCoal); + thresholdMisc = IConfigurableMachine.grab(obj, "I:thresholdMisc", thresholdMisc); + thresholdFly = IConfigurableMachine.grab(obj, "I:thresholdFly", thresholdFly); + thresholdSoot = IConfigurableMachine.grab(obj, "I:thresholdSoot", thresholdSoot); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:thresholdWood").value(thresholdWood); + writer.name("I:thresholdCoal").value(thresholdCoal); + writer.name("I:thresholdMisc").value(thresholdMisc); + writer.name("I:thresholdFly").value(thresholdFly); + writer.name("I:thresholdSoot").value(thresholdSoot); + } + @Override public void openInventory() { if(!worldObj.isRemote) this.playersUsing++; @@ -56,13 +91,12 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi if(!worldObj.isRemote) { - int threshold = 2000; - if(processAsh(ashLevelWood, EnumAshType.WOOD, threshold)) ashLevelWood -= threshold; - if(processAsh(ashLevelCoal, EnumAshType.COAL, threshold)) ashLevelCoal -= threshold; - if(processAsh(ashLevelMisc, EnumAshType.MISC, threshold)) ashLevelMisc -= threshold; - if(processAsh(ashLevelFly, EnumAshType.FLY, threshold)) ashLevelFly -= threshold; - if(processAsh(ashLevelSoot, EnumAshType.SOOT, threshold * 4)) ashLevelSoot -= threshold * 4; + if(processAsh(ashLevelWood, EnumAshType.WOOD, thresholdWood)) ashLevelWood -= thresholdWood; + if(processAsh(ashLevelCoal, EnumAshType.COAL, thresholdCoal)) ashLevelCoal -= thresholdCoal; + if(processAsh(ashLevelMisc, EnumAshType.MISC, thresholdMisc)) ashLevelMisc -= thresholdMisc; + if(processAsh(ashLevelFly, EnumAshType.FLY, thresholdFly)) ashLevelFly -= thresholdFly; + if(processAsh(ashLevelSoot, EnumAshType.SOOT, thresholdSoot)) ashLevelSoot -= thresholdSoot; isFull = false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index d993b0ce5..49b3df6ac 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -3,7 +3,10 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; import java.util.Random; +import java.io.IOException; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.blocks.BlockDummyable; import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; @@ -18,6 +21,7 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; @@ -41,10 +45,9 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine { public long power; - public static final long maxPower = 100000000000L; private int turnTimer; public float rotor; public float lastRotor; @@ -57,16 +60,46 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc private AudioWrapper audio; private float audioDesync; + + //Configurable values + public static long maxPower = 100000000000L; + public static int inputTankSize = 1_000_000_000; + public static int outputTankSize = 1_000_000_000; + public static double efficiency = 0.85D; public TileEntityChungus() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.STEAM, 1000000000, 0); - tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 1000000000, 1); + tanks[0] = new FluidTank(Fluids.STEAM, inputTankSize, 0); + tanks[1] = new FluidTank(Fluids.SPENTSTEAM, outputTankSize, 1); Random rand = new Random(); audioDesync = rand.nextFloat() * 0.05F; } + @Override + public String getConfigName() { + return "steamturbineLeviathan"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:maxPower", maxPower); + inputTankSize = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSize); + outputTankSize = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSize); + efficiency = IConfigurableMachine.grab(obj, "D:efficiency", efficiency); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:maxPower").value(maxPower); + writer.name("INFO").value("leviathan steam turbine consumes all availible steam per tick"); + writer.name("I:inputTankSize").value(inputTankSize); + writer.name("I:outputTankSize").value(outputTankSize); + writer.name("D:efficiency").value(efficiency); + } + + + @Override public void updateEntity() { @@ -79,7 +112,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc boolean valid = false; if(in.hasTrait(FT_Coolable.class)) { FT_Coolable trait = in.getTrait(FT_Coolable.class); - double eff = trait.getEfficiency(CoolingType.TURBINE) * 0.85D; //85% efficiency + double eff = trait.getEfficiency(CoolingType.TURBINE) * efficiency; //85% efficiency by default if(eff > 0) { tanks[1].setTankType(trait.coolsTo); int inputOps = tanks[0].getFill() / trait.amountReq; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java index 2a13a059a..8d2730f8b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java @@ -1,8 +1,13 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.saveddata.TomSaveData; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; @@ -12,7 +17,7 @@ import api.hbm.tile.IInfoProviderEC; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.EnumSkyBlock; -public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IInfoProviderEC { +public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IInfoProviderEC, IConfigurableMachine { public int age = 0; public FluidTank[] tanks; @@ -20,11 +25,34 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidS public int waterTimer = 0; protected int throughput; + //Configurable values + public static int inputTankSize = 100; + public static int outputTankSize = 100; + public TileEntityCondenser() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.SPENTSTEAM, 100); - tanks[1] = new FluidTank(Fluids.WATER, 100); + tanks[0] = new FluidTank(Fluids.SPENTSTEAM, inputTankSize); + tanks[1] = new FluidTank(Fluids.WATER, outputTankSize); } + + @Override + public String getConfigName() { + return "condenser"; + } + + @Override + public void readIfPresent(JsonObject obj) { + inputTankSize = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSize); + outputTankSize = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSize); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:inputTankSize").value(inputTankSize); + writer.name("I:outputTankSize").value(outputTankSize); + } + + @Override public void updateEntity() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java index 65fa15e19..9aabea820 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java @@ -1,8 +1,13 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; @@ -16,16 +21,41 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityCondenserPowered extends TileEntityCondenser implements IEnergyReceiverMK2 { public long power; - public static final long maxPower = 10_000_000; public float spin; public float lastSpin; + //Configurable values + public static long maxPower = 10_000_000; + public static int inputTankSizeP = 1_000_000; + public static int outputTankSizeP = 1_000_000; + public static int powerConsumption = 10; + public TileEntityCondenserPowered() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.SPENTSTEAM, 1_000_000); - tanks[1] = new FluidTank(Fluids.WATER, 1_000_000); + tanks[0] = new FluidTank(Fluids.SPENTSTEAM, inputTankSizeP); + tanks[1] = new FluidTank(Fluids.WATER, outputTankSizeP); } + @Override + public String getConfigName() { + return "condenserPowered"; + } + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:maxPower", maxPower); + inputTankSizeP = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSizeP); + outputTankSizeP = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSizeP); + powerConsumption = IConfigurableMachine.grab(obj, "I:powerConsumption", powerConsumption); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:maxPower").value(maxPower); + writer.name("I:inputTankSize").value(inputTankSizeP); + writer.name("I:outputTankSize").value(outputTankSizeP); + writer.name("I:powerConsumption").value(powerConsumption); + } + @Override public void updateEntity() { super.updateEntity(); @@ -63,7 +93,7 @@ public class TileEntityCondenserPowered extends TileEntityCondenser implements I @Override public void postConvert(int convert) { - this.power -= convert * 10; + this.power -= convert * powerConsumption; if(this.power < 0) this.power = 0; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java index 741988067..4e092d01c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java @@ -1,10 +1,15 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IConfigurableMachine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -15,12 +20,33 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityTowerLarge extends TileEntityCondenser { + //Configurable values + public static int inputTankSizeTL = 10_000; + public static int outputTankSizeTL = 10_000; + public TileEntityTowerLarge() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.SPENTSTEAM, 10000); - tanks[1] = new FluidTank(Fluids.WATER, 10000); + tanks[0] = new FluidTank(Fluids.SPENTSTEAM, inputTankSizeTL); + tanks[1] = new FluidTank(Fluids.WATER, outputTankSizeTL); } + @Override + public String getConfigName() { + return "condenserTowerLarge"; + } + + @Override + public void readIfPresent(JsonObject obj) { + inputTankSizeTL = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSizeTL); + outputTankSizeTL = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSizeTL); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:inputTankSize").value(inputTankSizeTL); + writer.name("I:outputTankSize").value(outputTankSizeTL); + } + @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java index d11366f33..6414c1e4e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java @@ -1,11 +1,16 @@ package com.hbm.tileentity.machine; +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IConfigurableMachine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -15,12 +20,33 @@ import net.minecraft.util.AxisAlignedBB; public class TileEntityTowerSmall extends TileEntityCondenser { + //Configurable values + public static int inputTankSizeTS = 1_000; + public static int outputTankSizeTS = 1_000; + public TileEntityTowerSmall() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.SPENTSTEAM, 1000); - tanks[1] = new FluidTank(Fluids.WATER, 1000); + tanks[0] = new FluidTank(Fluids.SPENTSTEAM, inputTankSizeTS); + tanks[1] = new FluidTank(Fluids.WATER, outputTankSizeTS); } + @Override + public String getConfigName() { + return "condenserTowerSmall"; + } + + @Override + public void readIfPresent(JsonObject obj) { + inputTankSizeTS = IConfigurableMachine.grab(obj, "I:inputTankSize", inputTankSizeTS); + outputTankSizeTS = IConfigurableMachine.grab(obj, "I:outputTankSize", outputTankSizeTS); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:inputTankSize").value(inputTankSizeTS); + writer.name("I:outputTankSize").value(outputTankSizeTS); + } + @Override public void updateEntity() { super.updateEntity();