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] 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