diff options
author | Glease <4586901+Glease@users.noreply.github.com> | 2021-06-03 18:08:46 +0800 |
---|---|---|
committer | Glease <4586901+Glease@users.noreply.github.com> | 2021-06-03 18:13:44 +0800 |
commit | 2ef3915c267594a08b15a3615844e514fe5e3843 (patch) | |
tree | 46ec124aa4cf2aa576cc026587aa083db080f60e /src/main/java/gregtech | |
parent | 18143e74690a0efef75c6eaba149d624df566a6c (diff) | |
download | GT5-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.java | 16 |
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); |