From 690a76fe381e7f51cc8cb719769f5170bdf02565 Mon Sep 17 00:00:00 2001 From: Christian Mesh Date: Wed, 25 Mar 2020 20:38:38 -0400 Subject: [PATCH] Fix drain remainder (ceil and floor are important) --- .../immersiverailroading/entity/LocomotiveSteam.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/cam72cam/immersiverailroading/entity/LocomotiveSteam.java b/src/main/java/cam72cam/immersiverailroading/entity/LocomotiveSteam.java index a536b4553..dca89c4f7 100644 --- a/src/main/java/cam72cam/immersiverailroading/entity/LocomotiveSteam.java +++ b/src/main/java/cam72cam/immersiverailroading/entity/LocomotiveSteam.java @@ -42,6 +42,7 @@ public class LocomotiveSteam extends Locomotive { private final static String BURN_TIME = "BURN_TIME"; private final static String BURN_MAX = "BURN_MAX"; private double driverDiameter; + private float drainRemainder; public LocomotiveSteam() { sync.setFloat(BOILER_PRESSURE, 0f); @@ -642,7 +643,7 @@ public void onTick() { int maxPSI = this.getDefinition().getMaxPSI(gauge); sync.setBoolean(PRESSURE_VALVE, boilerPressure > maxPSI); if (boilerPressure > maxPSI) { - waterUsed += boilerPressure - maxPSI; + waterUsed += boilerPressure - maxPSI; boilerPressure = maxPSI; } } else { @@ -670,13 +671,10 @@ public void onTick() { if (waterUsed != 0) { waterUsed *= Config.ConfigBalance.locoWaterUsage; + waterUsed += drainRemainder; if (waterUsed > 0) { - theTank.drain(new FluidStack(Fluid.WATER, (int) Math.ceil(waterUsed)), false); - waterUsed = waterUsed % 1; - } - // handle remainder - if (Math.random() <= waterUsed) { - theTank.drain(new FluidStack(Fluid.WATER, 1), false); + theTank.drain(new FluidStack(Fluid.WATER, (int) Math.floor(waterUsed)), false); + drainRemainder = waterUsed % 1; } }