Skip to content

Commit 894bd24

Browse files
committed
Use epsilon to improve scale change check comparisons
1 parent 1ab7f02 commit 894bd24

File tree

10 files changed

+24
-16
lines changed

10 files changed

+24
-16
lines changed

src/generators/java/mekanism/generators/common/content/fission/FissionReactorMultiblockData.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,8 @@ public boolean tick(Level world) {
210210
float coolantScale = MekanismUtils.getScale(prevCoolantScale, fluidCoolantTank);
211211
float fuelScale = MekanismUtils.getScale(prevFuelScale, fuelTank);
212212
float steamScale = MekanismUtils.getScale(prevHeatedCoolantScale, heatedCoolantTank), wasteScale = MekanismUtils.getScale(prevWasteScale, wasteTank);
213-
if (coolantScale != prevCoolantScale || fuelScale != prevFuelScale || steamScale != prevHeatedCoolantScale || wasteScale != prevWasteScale) {
213+
if (MekanismUtils.scaleChanged(coolantScale, prevCoolantScale) || MekanismUtils.scaleChanged(fuelScale, prevFuelScale) ||
214+
MekanismUtils.scaleChanged(steamScale, prevHeatedCoolantScale) || MekanismUtils.scaleChanged(wasteScale, prevWasteScale)) {
214215
needsPacket = true;
215216
prevCoolantScale = coolantScale;
216217
prevFuelScale = fuelScale;

src/generators/java/mekanism/generators/common/content/turbine/TurbineMultiblockData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public boolean tick(Level world) {
188188
needsPacket = true;
189189
}
190190
float scale = MekanismUtils.getScale(prevSteamScale, gasTank);
191-
if (scale != prevSteamScale) {
191+
if (MekanismUtils.scaleChanged(scale, prevSteamScale)) {
192192
needsPacket = true;
193193
prevSteamScale = scale;
194194
}

src/generators/java/mekanism/generators/common/tile/TileEntityBioGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import mekanism.api.Action;
44
import mekanism.api.AutomationType;
55
import mekanism.api.IContentsListener;
6-
import mekanism.api.SerializationConstants;
76
import mekanism.api.RelativeSide;
7+
import mekanism.api.SerializationConstants;
88
import mekanism.api.math.FloatingLong;
99
import mekanism.common.attachments.containers.ContainerType;
1010
import mekanism.common.capabilities.fluid.BasicFluidTank;
@@ -78,7 +78,7 @@ protected boolean onUpdateServer() {
7878
MekanismUtils.logMismatchedStackSize(bioFuelTank.shrinkStack(1, Action.EXECUTE), 1);
7979
getEnergyContainer().insert(MekanismGeneratorsConfig.generators.bioGeneration.get(), Action.EXECUTE, AutomationType.INTERNAL);
8080
float fluidScale = MekanismUtils.getScale(lastFluidScale, bioFuelTank);
81-
if (fluidScale != lastFluidScale) {
81+
if (MekanismUtils.scaleChanged(fluidScale, lastFluidScale)) {
8282
lastFluidScale = fluidScale;
8383
sendUpdatePacket = true;
8484
}

src/main/java/mekanism/common/content/boiler/BoilerMultiblockData.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,12 +197,12 @@ public boolean tick(Level world) {
197197
}
198198
}
199199
float waterScale = MekanismUtils.getScale(prevWaterScale, waterTank);
200-
if (waterScale != prevWaterScale) {
200+
if (MekanismUtils.scaleChanged(waterScale, prevWaterScale)) {
201201
needsPacket = true;
202202
prevWaterScale = waterScale;
203203
}
204204
float steamScale = MekanismUtils.getScale(prevSteamScale, steamTank);
205-
if (steamScale != prevSteamScale) {
205+
if (MekanismUtils.scaleChanged(steamScale, prevSteamScale)) {
206206
needsPacket = true;
207207
prevSteamScale = steamScale;
208208
}

src/main/java/mekanism/common/content/evaporation/EvaporationMultiblockData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public boolean tick(Level world) {
154154
inputInputSlot.fillTank(outputInputSlot);
155155
recipeCacheLookupMonitor.updateAndProcess();
156156
float scale = MekanismUtils.getScale(prevScale, inputTank);
157-
if (scale != prevScale) {
157+
if (!Mth.equal(scale, prevScale)) {
158158
prevScale = scale;
159159
needsPacket = true;
160160
}

src/main/java/mekanism/common/content/tank/TankMultiblockData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public boolean tick(Level world) {
9595
outputSlot.fillChemicalTank(type);
9696
}
9797
float scale = getScale();
98-
if (scale != prevScale) {
98+
if (MekanismUtils.scaleChanged(scale, prevScale)) {
9999
prevScale = scale;
100100
needsPacket = true;
101101
}

src/main/java/mekanism/common/tile/TileEntityEnergyCube.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package mekanism.common.tile;
22

33
import mekanism.api.IContentsListener;
4-
import mekanism.api.SerializationConstants;
54
import mekanism.api.RelativeSide;
5+
import mekanism.api.SerializationConstants;
66
import mekanism.api.providers.IBlockProvider;
77
import mekanism.common.attachments.containers.ContainerType;
88
import mekanism.common.block.attribute.Attribute;
@@ -98,7 +98,7 @@ protected boolean onUpdateServer() {
9898
chargeSlot.drainContainer();
9999
dischargeSlot.fillContainerOrConvert();
100100
float newScale = MekanismUtils.getScale(prevScale, energyContainer);
101-
if (newScale != prevScale) {
101+
if (MekanismUtils.scaleChanged(newScale, prevScale)) {
102102
prevScale = newScale;
103103
sendUpdatePacket = true;
104104
}

src/main/java/mekanism/common/tile/TileEntityFluidTank.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ protected boolean onUpdateServer() {
132132
}
133133

134134
float scale = MekanismUtils.getScale(prevScale, fluidTank);
135-
if (scale != prevScale) {
135+
if (MekanismUtils.scaleChanged(scale, prevScale)) {
136136
if (prevScale == 0 || scale == 0) {
137137
//If it was empty and no longer is, or wasn't empty and now is empty we want to recheck the block lighting
138138
// as the fluid may have changed and have a light value
@@ -291,14 +291,14 @@ public void handleUpdateTag(@NotNull CompoundTag tag, @NotNull HolderLookup.Prov
291291
NBTUtils.setFluidStackIfPresent(provider, tag, SerializationConstants.FLUID, fluid -> fluidTank.setStack(fluid));
292292
NBTUtils.setFluidStackIfPresent(provider, tag, SerializationConstants.VALVE, fluid -> valveFluid = fluid);
293293
NBTUtils.setFloatIfPresent(tag, SerializationConstants.SCALE, scale -> {
294-
if (prevScale != scale) {
294+
if (MekanismUtils.scaleChanged(prevScale, scale)) {
295295
if (prevScale == 0 || scale == 0) {
296296
//If it was empty and no longer is, or wasn't empty and now is empty we want to recheck the block lighting
297297
// as the fluid may have changed and have a light value, mark that the client should update the light value
298298
updateClientLight = true;
299299
}
300-
prevScale = scale;
301300
}
301+
prevScale = scale;
302302
});
303303
}
304304

src/main/java/mekanism/common/tile/machine/TileEntityNutritionalLiquifier.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import java.util.Collections;
44
import java.util.List;
55
import mekanism.api.IContentsListener;
6-
import mekanism.api.SerializationConstants;
76
import mekanism.api.RelativeSide;
7+
import mekanism.api.SerializationConstants;
88
import mekanism.api.fluid.IExtendedFluidTank;
99
import mekanism.api.math.FloatingLong;
1010
import mekanism.api.recipes.ItemStackToFluidRecipe;
@@ -149,7 +149,7 @@ protected boolean onUpdateServer() {
149149
containerFillSlot.drainTank(outputSlot);
150150
recipeCacheLookupMonitor.updateAndProcess();
151151
float pasteScale = MekanismUtils.getScale(lastPasteScale, fluidTank);
152-
if (pasteScale != lastPasteScale) {
152+
if (MekanismUtils.scaleChanged(pasteScale, lastPasteScale)) {
153153
lastPasteScale = pasteScale;
154154
sendUpdatePacket = true;
155155
}

src/main/java/mekanism/common/util/MekanismUtils.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,6 @@ public static float getScale(float prevScale, long stored, long capacity, boolea
219219
return getScale(prevScale, capacity == 0 ? 0 : (float) (stored / (double) capacity), empty, stored == capacity);
220220
}
221221

222-
223222
public static float getScale(float prevScale, IEnergyContainer container) {
224223
float targetScale;
225224
FloatingLong stored = container.getEnergy();
@@ -252,6 +251,14 @@ public static float getScale(float prevScale, float targetScale, boolean empty,
252251
return prevScale;
253252
}
254253

254+
public static boolean scaleChanged(float scale, float prevScale) {
255+
if (Mth.equal(scale, prevScale)) {
256+
//If we max out our scale bounds, force an update regardless
257+
return scale != prevScale && scale == 0 || scale == 1 || prevScale == 1 || prevScale == 0;
258+
}
259+
return true;
260+
}
261+
255262
public static long getBaseUsage(IUpgradeTile tile, int def) {
256263
if (tile.supportsUpgrades()) {
257264
//getGasPerTickMean * required ticks (not rounded)

0 commit comments

Comments
 (0)