diff --git a/src/main/java/mods/railcraft/RailcraftConfig.java b/src/main/java/mods/railcraft/RailcraftConfig.java index e5d9061dab..b788980b61 100644 --- a/src/main/java/mods/railcraft/RailcraftConfig.java +++ b/src/main/java/mods/railcraft/RailcraftConfig.java @@ -67,6 +67,8 @@ public static class Server { public final DoubleValue lossMultiplier; public final DoubleValue fuelMultiplier; public final DoubleValue fuelPerSteamMultiplier; + public final DoubleValue turbinePowerMultiplier; + public final DoubleValue turbineEnergyOutputRateMultiplier; public final IntValue cartDispenserDelay; public final BooleanValue changeDungeonLoot; public final ConfigValue> preferredOres; @@ -193,6 +195,12 @@ private Server(Builder builder) { this.lossMultiplier = builder .comment("adjust the losses for the Charge network") .defineInRange("lossMultiplier", 1.0D, 0.2D, 10.0D); + this.turbinePowerMultiplier = builder + .comment("Adjust the amount of power produced in a Turbine") + .defineInRange("turbinePowerMultiplier", 1.0F, 0.1F, 100F); + this.turbineEnergyOutputRateMultiplier = builder + .comment("Adjust the amount of energy output rate in a Turbine") + .defineInRange("turbineEnergyPowerRateMultiplier", 1.0F, 0.1F, 100F); } builder.pop(); diff --git a/src/main/java/mods/railcraft/world/level/block/SteamTurbineBlock.java b/src/main/java/mods/railcraft/world/level/block/SteamTurbineBlock.java index d40cff06db..0b4a2f01ef 100644 --- a/src/main/java/mods/railcraft/world/level/block/SteamTurbineBlock.java +++ b/src/main/java/mods/railcraft/world/level/block/SteamTurbineBlock.java @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; import org.jetbrains.annotations.Nullable; +import mods.railcraft.RailcraftConfig; import mods.railcraft.Translations; import mods.railcraft.api.charge.Charge; import mods.railcraft.api.charge.ChargeBlock; @@ -36,11 +37,6 @@ public class SteamTurbineBlock extends MultiblockBlock implements ChargeBlock { public static final Property ROTATED = BooleanProperty.create("rotated"); - private static final Map CHARGE_SPECS = - Spec.make(Charge.distribution, ChargeBlock.ConnectType.BLOCK, 0, - new ChargeStorage.Spec(ChargeStorage.State.DISABLED, - SteamTurbineModule.CHARGE_OUTPUT, SteamTurbineModule.CHARGE_OUTPUT, 1)); - public SteamTurbineBlock(Properties properties) { super(properties); this.registerDefaultState(this.stateDefinition.any() @@ -74,7 +70,11 @@ public BlockEntityTicker getTicker(Level level, Block @Override public Map getChargeSpecs(BlockState state, ServerLevel level, BlockPos pos) { - return CHARGE_SPECS; + return Spec.make(Charge.distribution, ChargeBlock.ConnectType.BLOCK, 0, + new ChargeStorage.Spec(ChargeStorage.State.DISABLED, + SteamTurbineModule.CHARGE_OUTPUT * RailcraftConfig.SERVER.turbinePowerMultiplier.get().intValue(), + SteamTurbineModule.CHARGE_OUTPUT * RailcraftConfig.SERVER.turbinePowerMultiplier.get().intValue(), + 1)); } @Override diff --git a/src/main/java/mods/railcraft/world/level/block/entity/SteamTurbineBlockEntity.java b/src/main/java/mods/railcraft/world/level/block/entity/SteamTurbineBlockEntity.java index 4b44874439..8bbcfdb001 100644 --- a/src/main/java/mods/railcraft/world/level/block/entity/SteamTurbineBlockEntity.java +++ b/src/main/java/mods/railcraft/world/level/block/entity/SteamTurbineBlockEntity.java @@ -4,6 +4,7 @@ import java.util.function.Predicate; import org.jetbrains.annotations.Nullable; import it.unimi.dsi.fastutil.chars.CharList; +import mods.railcraft.RailcraftConfig; import mods.railcraft.Translations; import mods.railcraft.api.charge.Charge; import mods.railcraft.api.charge.ChargeStorage; @@ -38,23 +39,23 @@ public class SteamTurbineBlockEntity extends MultiblockBlockEntity pattern = - MultiblockPattern.builder(BlockPos.ZERO) - .layer(List.of( - CharList.of('A', 'W', 'B'), - CharList.of('B', 'W', 'A'))) - .layer(List.of( - CharList.of('C', 'X', 'D'), - CharList.of('D', 'X', 'C'))) - .predicate('A', BLOCK_PREDICATE) - .predicate('B', BLOCK_PREDICATE) - .predicate('C', BLOCK_PREDICATE) - .predicate('D', BLOCK_PREDICATE) - .predicate('X', BLOCK_PREDICATE) - .predicate('W', BLOCK_PREDICATE) - .build(); + MultiblockPattern.builder(BlockPos.ZERO) + .layer(List.of( + CharList.of('A', 'W', 'B'), + CharList.of('B', 'W', 'A'))) + .layer(List.of( + CharList.of('C', 'X', 'D'), + CharList.of('D', 'X', 'C'))) + .predicate('A', BLOCK_PREDICATE) + .predicate('B', BLOCK_PREDICATE) + .predicate('C', BLOCK_PREDICATE) + .predicate('D', BLOCK_PREDICATE) + .predicate('X', BLOCK_PREDICATE) + .predicate('W', BLOCK_PREDICATE) + .build(); private static final MultiblockPattern rotatedPattern = pattern.rotateClockwise(); @@ -95,7 +96,8 @@ public static void serverTick(Level level, BlockPos blockPos, BlockState blockSt master.getEnergyStorage() .ifPresent(energyStorage -> EnergyUtil.pushToSides(level, blockPos, energyStorage, - ENERGY_OUTPUT_RATE, filter, Direction.values())); + ENERGY_OUTPUT_RATE * RailcraftConfig.SERVER.turbineEnergyOutputRateMultiplier.get().intValue(), + filter, Direction.values())); master.getFluidHandler().ifPresent(fluidHandler -> { var neighbors = FluidTools.findNeighbors(level, blockPos, filter, diff --git a/src/main/java/mods/railcraft/world/module/SteamTurbineModule.java b/src/main/java/mods/railcraft/world/module/SteamTurbineModule.java index 69c551353a..f1abdeb086 100644 --- a/src/main/java/mods/railcraft/world/module/SteamTurbineModule.java +++ b/src/main/java/mods/railcraft/world/module/SteamTurbineModule.java @@ -1,5 +1,6 @@ package mods.railcraft.world.module; +import mods.railcraft.RailcraftConfig; import mods.railcraft.api.charge.Charge; import mods.railcraft.api.core.CompoundTagKeys; import mods.railcraft.tags.RailcraftTags; @@ -58,13 +59,13 @@ public LazyOptional getFluidHandler() { public void serverTick() { super.serverTick(); var addedEnergy = false; - if (this.energy < CHARGE_OUTPUT) { + if (this.energy < (CHARGE_OUTPUT * RailcraftConfig.SERVER.turbinePowerMultiplier.get().intValue())) { var steam = this.steamTank.internalDrain(STEAM_USAGE, FluidAction.SIMULATE); if (steam.getAmount() >= STEAM_USAGE) { var rotorStack = this.rotorContainer.getItem(0); if (rotorStack.is(RailcraftItems.TURBINE_ROTOR.get())) { addedEnergy = true; - this.energy += CHARGE_OUTPUT; + this.energy += CHARGE_OUTPUT * RailcraftConfig.SERVER.turbinePowerMultiplier.get().intValue(); this.steamTank.internalDrain(STEAM_USAGE, FluidAction.EXECUTE); this.waterTank.internalFill(new FluidStack(Fluids.WATER, 2), FluidAction.EXECUTE); this.rotorContainer.setItem(0, useRotor(rotorStack));