diff options
author | Léa Gris <lea.gris@noiraude.net> | 2021-04-19 02:17:49 +0200 |
---|---|---|
committer | Léa Gris <lea.gris@noiraude.net> | 2021-04-24 13:23:25 +0200 |
commit | 6abf79c50fbb3861e152801cbc2b6a6965e2b97c (patch) | |
tree | 4a2573c5daa8c3c75354fe059ff60120de5857c7 /src | |
parent | 48915ecd042d1c78f126b1c8bbff3a8dba08dca5 (diff) | |
download | GT5-Unofficial-6abf79c50fbb3861e152801cbc2b6a6965e2b97c.tar.gz GT5-Unofficial-6abf79c50fbb3861e152801cbc2b6a6965e2b97c.tar.bz2 GT5-Unofficial-6abf79c50fbb3861e152801cbc2b6a6965e2b97c.zip |
fix(solarboilers): fixes and QOL improvements
- Change run-time counter from seconds to ticks since solar boilers are
ticking every 10 ticks, or 0.5 second.
- Prevent run-time counter from overflowing Integer.MAX_VALUE ticks.
- Fix missing check of available steam before pushing to output.
- Fix the cool-down rate that broke in GTNH 2.1.0.6.
- Make the solar boilers entirely configurable.
Diffstat (limited to 'src')
3 files changed, 47 insertions, 31 deletions
diff --git a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler.java b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler.java index ea1af92ed0..7cef8278be 100644 --- a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler.java +++ b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler.java @@ -201,7 +201,7 @@ public abstract class GT_MetaTileEntity_Boiler extends GT_MetaTileEntity_BasicTa protected void produceSteam(int aAmount) { mExcessWater -= aAmount; if (mExcessWater < 0) { - int tWaterToConsume = -mExcessWater / GT_Values.STEAM_PER_WATER + 1; + int tWaterToConsume = -mExcessWater / GT_Values.STEAM_PER_WATER; mFluid.amount -= tWaterToConsume; mExcessWater += GT_Values.STEAM_PER_WATER * tWaterToConsume; } 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 b1501901f6..eb7993a448 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 @@ -20,10 +20,10 @@ import net.minecraftforge.common.util.ForgeDirection; import static gregtech.api.enums.ConfigCategories.machineconfig; - +@SuppressWarnings("unused") public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler { - private static final String LPS_FMT = "%s L/s"; - protected static final String DEFAULT_STR = "Default: "; + public static final String DEFAULT_STR = "Default: "; + public static final String LPS_FMT = "%s L/s"; private static final String localizedDescFormat = GT_LanguageManager.addStringLocalization( "gt.blockmachines.boiler.solar.desc.format", "Steam Power by the Sun%n" + @@ -35,7 +35,7 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler { protected int maxOutputPerSecond; protected int basicTemperatureMod = 5; // Base Celsius gain or loss protected int coolDownTicks; - private int mRunTime = 0; + private int mRunTimeTicks = 0; public GT_MetaTileEntity_Boiler_Solar(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional, new String[0]); @@ -44,9 +44,9 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler { protected void onConfigLoad() { final Configuration config = GregTech_API.sMachineFile.mConfig; - final String configCategory = machineconfig + ".SimpleSolarBoiler"; + final String configCategory = machineconfig + ".boiler.solar.bronze"; - final int defaultCalcificationTicks = 54000; + final int defaultCalcificationTicks = 1080000; // 15 hours final int defaultMinOutputPerSecond = 40; final int defaultMaxOutputPerSecond = 120; final int defaultCoolDownTicks = 45; @@ -60,7 +60,7 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler { maxOutputPerSecond = config.get(configCategory, "MaxOutputPerSecond", defaultMaxOutputPerSecond, DEFAULT_STR + defaultMaxOutputPerSecond).getInt(); coolDownTicks = config.get(configCategory, "CoolDownTicks", defaultCoolDownTicks, - "Number of ticks it takes to loose 1°C.\n" + + "Number of ticks it takes to lose 1°C.\n" + DEFAULT_STR + defaultCoolDownTicks).getInt(); } @@ -74,6 +74,28 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler { onConfigLoad(); } + /** + * for WAILA + */ + public int getBasicOutput() { + return getMaxOutputPerSecond(); + } + + public int getMaxOutputPerSecond() { + return maxOutputPerSecond; + } + + /** + * for WAILA + */ + public int getCalcificationOutput() { + return getMinOutputPerSecond(); + } + + public int getMinOutputPerSecond() { + return minOutputPerSecond; + } + @Override public String[] getDescription() { return String.format(localizedDescFormat, @@ -102,14 +124,6 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler { return rTextures; } - protected long getMaxOutputPerSecond() { - return maxOutputPerSecond; - } - - protected long getMinOutputPerSecond() { - return minOutputPerSecond; - } - @Override public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { return new GT_Container_Boiler(aPlayerInventory, aBaseMetaTileEntity, getCapacity()); @@ -138,23 +152,26 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler { @Override public void saveNBTData(NBTTagCompound aNBT) { super.saveNBTData(aNBT); - aNBT.setInteger("mRunTime", this.mRunTime); + aNBT.setInteger("mRunTime", mRunTimeTicks); } @Override public void loadNBTData(NBTTagCompound aNBT) { super.loadNBTData(aNBT); - this.mRunTime = aNBT.getInteger("mRunTime"); + mRunTimeTicks = aNBT.getInteger("mRunTime"); } @Override protected void produceSteam(int aAmount) { super.produceSteam(aAmount); - mRunTime++; + // produceSteam is getting called every 10 ticks + if (mRunTimeTicks > 0 && mRunTimeTicks < (Integer.MAX_VALUE - 10)) mRunTimeTicks += 10; + else mRunTimeTicks = Integer.MAX_VALUE; // Prevent Integer overflow wrap } @Override protected void pushSteamToInventories(IGregTechTileEntity aBaseMetaTileEntity) { + if (mSteam == null || mSteam.amount == 0) return; pushSteamToSide(aBaseMetaTileEntity, aBaseMetaTileEntity.getFrontFacing()); } @@ -165,15 +182,15 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler { @Override protected int getProductionPerSecond() { - if (this.mTemperature < 100) { + if (mTemperature < 100) { return 0; } - if (mRunTime > calcificationTicks) { + if (mRunTimeTicks > calcificationTicks) { /* 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(minOutputPerSecond, - maxOutputPerSecond - (mRunTime - calcificationTicks) / calcificationTicks * maxOutputPerSecond); + maxOutputPerSecond - (mRunTimeTicks - calcificationTicks) / calcificationTicks * maxOutputPerSecond); } else { return maxOutputPerSecond; } @@ -244,16 +261,16 @@ public class GT_MetaTileEntity_Boiler_Solar extends GT_MetaTileEntity_Boiler { .split("\\R"); } - protected long getHeatCapacityPercent() { - return mTemperature * 100L / maxProgresstime(); + public int getHeatCapacityPercent() { + return mTemperature * 100 / maxProgresstime(); } - protected long getHotTimeSeconds() { - return mRunTime; + public int getHotTimeSeconds() { + return mRunTimeTicks / 20; } @Override public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { - return new GT_MetaTileEntity_Boiler_Solar(this.mName, this.mTier, this.mDescriptionArray, this.mTextures); + return new GT_MetaTileEntity_Boiler_Solar(mName, mTier, mDescriptionArray, mTextures); } } diff --git a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java index c348f2dd27..aab1e2550d 100644 --- a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java +++ b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java @@ -14,7 +14,6 @@ import net.minecraftforge.common.config.Configuration; import static gregtech.api.enums.ConfigCategories.machineconfig; public class GT_MetaTileEntity_Boiler_Solar_Steel extends GT_MetaTileEntity_Boiler_Solar { - private static final int defaultCalcificationTicks = 54000; public GT_MetaTileEntity_Boiler_Solar_Steel(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); @@ -24,9 +23,9 @@ public class GT_MetaTileEntity_Boiler_Solar_Steel extends GT_MetaTileEntity_Boil @Override protected void onConfigLoad() { final Configuration config = GregTech_API.sMachineFile.mConfig; - final String configCategory = machineconfig + ".HighPressureSolarBoiler"; + final String configCategory = machineconfig + ".boiler.solar.steel"; - final int defaultCalcificationTicks = 54000; + final int defaultCalcificationTicks = 1080000; // 15 hours final int defaultMinOutputPerSecond = 120; final int defaultMaxOutputPerSecond = 360; final int defaultCoolDownTicks = 75; @@ -40,7 +39,7 @@ public class GT_MetaTileEntity_Boiler_Solar_Steel extends GT_MetaTileEntity_Boil maxOutputPerSecond = config.get(configCategory, "MaxOutputPerSecond", defaultMaxOutputPerSecond, DEFAULT_STR + defaultMaxOutputPerSecond).getInt(); coolDownTicks = config.get(configCategory, "CoolDownTicks", defaultCoolDownTicks, - "Number of ticks it takes to loose 1°C (Cools down slower than normal boiler).\n" + + "Number of ticks it takes to loose 1°C (Cools down slower than a normal boiler).\n" + DEFAULT_STR + defaultCoolDownTicks).getInt(); } |