diff options
author | Glease <4586901+Glease@users.noreply.github.com> | 2024-04-09 02:14:17 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-08 20:14:17 +0200 |
commit | 7bae638b3022249a048225fbb807948f9840d679 (patch) | |
tree | db4201d088d9950baf0fb3ef26d34925e77b85b7 | |
parent | b08d04847fafcc6f2086326adce653170423babc (diff) | |
download | GT5-Unofficial-7bae638b3022249a048225fbb807948f9840d679.tar.gz GT5-Unofficial-7bae638b3022249a048225fbb807948f9840d679.tar.bz2 GT5-Unofficial-7bae638b3022249a048225fbb807948f9840d679.zip |
improve robustness of me inputs (#2556)
basically, always flush the cached info regardless of whether a GridAccessException has happened. also a bit more checking over whether the ME network is accessible
2 files changed, 27 insertions, 16 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java index 91d1355869..a99ec29822 100644 --- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java +++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_InputBus_ME.java @@ -397,7 +397,7 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch if (aIndex == getCircuitSlot() || aIndex == getManualSlot()) return mInventory[aIndex]; if (mInventory[aIndex] != null) { AENetworkProxy proxy = getProxy(); - if (proxy == null) { + if (proxy == null || !proxy.isActive()) { return null; } try { @@ -495,7 +495,11 @@ public class GT_MetaTileEntity_Hatch_InputBus_ME extends GT_MetaTileEntity_Hatch checkRecipeResult = SimpleCheckRecipeResult .ofFailurePersistOnShutdown("stocking_bus_fail_extraction"); } - } catch (final GridAccessException ignored) {} + } catch (final GridAccessException ignored) { + controller.stopMachine(ShutDownReasonRegistry.CRITICAL_NONE); + checkRecipeResult = SimpleCheckRecipeResult + .ofFailurePersistOnShutdown("stocking_hatch_fail_extraction"); + } } savedStackSizes[i] = 0; shadowInventory[i] = null; diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Input_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Input_ME.java index 20be0f0005..b8a2c78763 100644 --- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Input_ME.java +++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Input_ME.java @@ -234,14 +234,14 @@ public class GT_MetaTileEntity_Hatch_Input_ME extends GT_MetaTileEntity_Hatch_In CheckRecipeResult checkRecipeResult = CheckRecipeResultRegistry.SUCCESSFUL; AENetworkProxy proxy = getProxy(); - try { - IMEMonitor<IAEFluidStack> sg = proxy.getStorage() - .getFluidInventory(); + for (int i = 0; i < SLOT_COUNT; ++i) { + FluidStack oldStack = shadowStoredFluids[i]; + int toExtract = savedStackSizes[i] - (oldStack != null ? oldStack.amount : 0); + if (toExtract <= 0) continue; - for (int i = 0; i < SLOT_COUNT; ++i) { - FluidStack oldStack = shadowStoredFluids[i]; - int toExtract = savedStackSizes[i] - (oldStack != null ? oldStack.amount : 0); - if (toExtract <= 0) continue; + try { + IMEMonitor<IAEFluidStack> sg = proxy.getStorage() + .getFluidInventory(); IAEFluidStack request = AEFluidStack.create(storedFluids[i]); request.setStackSize(toExtract); @@ -254,14 +254,16 @@ public class GT_MetaTileEntity_Hatch_Input_ME extends GT_MetaTileEntity_Hatch_In checkRecipeResult = SimpleCheckRecipeResult .ofFailurePersistOnShutdown("stocking_hatch_fail_extraction"); } - shadowStoredFluids[i] = null; - savedStackSizes[i] = 0; - if (storedInformationFluids[i] != null && storedInformationFluids[i].amount <= 0) { - storedInformationFluids[i] = null; - } + } catch (GridAccessException ignored) { + controller.stopMachine(ShutDownReasonRegistry.CRITICAL_NONE); + checkRecipeResult = SimpleCheckRecipeResult + .ofFailurePersistOnShutdown("stocking_hatch_fail_extraction"); + } + shadowStoredFluids[i] = null; + savedStackSizes[i] = 0; + if (storedInformationFluids[i] != null && storedInformationFluids[i].amount <= 0) { + storedInformationFluids[i] = null; } - } catch (GridAccessException e) { - throw new RuntimeException(e); } processingRecipe = false; @@ -387,6 +389,11 @@ public class GT_MetaTileEntity_Hatch_Input_ME extends GT_MetaTileEntity_Hatch_In public FluidStack getMatchingFluidStack(FluidStack fluidStack) { if (fluidStack == null) return null; + AENetworkProxy proxy = getProxy(); + if (proxy == null || !proxy.isActive()) { + return null; + } + for (int i = 0; i < storedFluids.length; i++) { if (storedFluids[i] == null) { continue; |