aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorminecraft7771 <maxim235@gmx.de>2022-08-29 09:50:49 +0200
committerminecraft7771 <maxim235@gmx.de>2022-08-29 09:50:49 +0200
commitc3000dbf6b3adcc53bcbb4b889ed54aed957fd42 (patch)
tree571f887e375df9f3e81aee8a681200f993452669
parentf378f67af591272005e14fdc28db3f003540efff (diff)
downloadGT5-Unofficial-c3000dbf6b3adcc53bcbb4b889ed54aed957fd42.tar.gz
GT5-Unofficial-c3000dbf6b3adcc53bcbb4b889ed54aed957fd42.tar.bz2
GT5-Unofficial-c3000dbf6b3adcc53bcbb4b889ed54aed957fd42.zip
Added a timeout to TT MB base so that machines dont stop after a world reload
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java1
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java33
2 files changed, 28 insertions, 6 deletions
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java
index 09995604aa..08eb16dd53 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_computer.java
@@ -189,6 +189,7 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB
super.loadNBTData(aNBT);
if (availableData != null) {
availableData.set(aNBT.getDouble("computation"));
+ eAvailableData = (long)availableData.get();
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java
index b071196b14..8cd1b5a396 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java
@@ -118,6 +118,12 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
// data required to operate
protected long eRequiredData = 0;
+ // Counter for the computation timeout. Will be initialized one to the max time and then only decreased.
+ protected int eComputationTimeout = MAX_COMPUTATION_TIMEOUT;
+
+ // Max timeout of computation in ticks
+ protected static int MAX_COMPUTATION_TIMEOUT = 40;
+
// storage for output EM that will be auto handled in case of failure to finish recipe
// if you succed to use a recipe - be sure to output EM from outputEM to hatches in the output method
protected EMInstanceStackMap[] outputEM;
@@ -1214,20 +1220,24 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
public boolean onRunningTickCheck_EM(ItemStack aStack) {
if (eRequiredData > eAvailableData) {
- if (energyFlowOnRunningTick_EM(aStack, false)) {
- stopMachine();
+ if (!checkComputationTimeout()) {
+ if (energyFlowOnRunningTick_EM(aStack, false)) {
+ stopMachine();
+ }
+ return false;
}
- return false;
}
return energyFlowOnRunningTick_EM(aStack, true);
}
public boolean onRunningTickCheck(ItemStack aStack) {
if (eRequiredData > eAvailableData) {
- if (energyFlowOnRunningTick(aStack, false)) {
- stopMachine();
+ if (!checkComputationTimeout()) {
+ if (energyFlowOnRunningTick(aStack, false)) {
+ stopMachine();
+ }
+ return false;
}
- return false;
}
return energyFlowOnRunningTick(aStack, true);
}
@@ -2881,4 +2891,15 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
return adder;
}
}
+
+ /** Check if the computation timeout is still active
+ *
+ * @return True if the timeout is still active or false if the machine should fail
+ */
+ protected boolean checkComputationTimeout() {
+ if (eComputationTimeout > 0) {
+ return --eComputationTimeout > 0;
+ }
+ return false;
+ }
}