aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLéa Gris <lea.gris@noiraude.net>2021-04-19 02:17:49 +0200
committerLéa Gris <lea.gris@noiraude.net>2021-04-24 13:23:25 +0200
commit6abf79c50fbb3861e152801cbc2b6a6965e2b97c (patch)
tree4a2573c5daa8c3c75354fe059ff60120de5857c7 /src
parent48915ecd042d1c78f126b1c8bbff3a8dba08dca5 (diff)
downloadGT5-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')
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar.java69
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Solar_Steel.java7
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();
}