diff options
author | minecraft7771 <maxim235@gmx.de> | 2022-08-29 09:50:49 +0200 |
---|---|---|
committer | minecraft7771 <maxim235@gmx.de> | 2022-08-29 09:50:49 +0200 |
commit | c3000dbf6b3adcc53bcbb4b889ed54aed957fd42 (patch) | |
tree | 571f887e375df9f3e81aee8a681200f993452669 /src/main | |
parent | f378f67af591272005e14fdc28db3f003540efff (diff) | |
download | GT5-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
Diffstat (limited to 'src/main')
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; + } } |