aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2021-06-03 18:08:46 +0800
committerGlease <4586901+Glease@users.noreply.github.com>2021-06-03 18:13:44 +0800
commit2ef3915c267594a08b15a3615844e514fe5e3843 (patch)
tree46ec124aa4cf2aa576cc026587aa083db080f60e /src/main/java/gregtech
parent18143e74690a0efef75c6eaba149d624df566a6c (diff)
downloadGT5-Unofficial-2ef3915c267594a08b15a3615844e514fe5e3843.tar.gz
GT5-Unofficial-2ef3915c267594a08b15a3615844e514fe5e3843.tar.bz2
GT5-Unofficial-2ef3915c267594a08b15a3615844e514fe5e3843.zip
Prevent integer overflow in solar boiler
Signed-off-by: Glease <4586901+Glease@users.noreply.github.com>
Diffstat (limited to 'src/main/java/gregtech')
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java
index d08df611f7..30c056e089 100644
--- a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java
+++ b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java
@@ -173,13 +173,14 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler {
if (mTemperature < 100) {
return 0;
}
- if (mRunTimeTicks > mConfig.getCalcificationTicks()) {
+ if (mRunTimeTicks > getMaxRuntimeInTicks()) {
+ return mConfig.getMinOutputPerSecond();
+ } else if (mRunTimeTicks > mConfig.getCalcificationTicks()) {
/* When reaching calcification ticks; discount the proportion of run-time spent on calcification
* from the maximum output per second, and return this or the minimum output per second
*/
- return Math.max(mConfig.getMinOutputPerSecond(),
- mConfig.getMaxOutputPerSecond()
- - mConfig.getMaxOutputPerSecond() * (mRunTimeTicks - mConfig.getCalcificationTicks()) / mConfig.getCalcificationTicks());
+ return mConfig.getMaxOutputPerSecond()
+ - mConfig.getMaxOutputPerSecond() * (mRunTimeTicks - mConfig.getCalcificationTicks()) / mConfig.getCalcificationTicks();
} else {
return mConfig.getMaxOutputPerSecond();
}
@@ -258,6 +259,13 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler {
return mRunTimeTicks / 20;
}
+ /**
+ * After which min output is reached.
+ */
+ public int getMaxRuntimeInTicks() {
+ return (mConfig.getMaxOutputPerSecond() - mConfig.getMinOutputPerSecond()) * mConfig.getCalcificationTicks() / mConfig.getMaxOutputPerSecond();
+ }
+
@Override
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
return new GT_MetaTileEntity_Boiler_Solar(mName, mTier, mDescriptionArray, mTextures, mConfig);