diff --git a/CHANGELOG.md b/CHANGELOG.md index f17be577c..559cdd994 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,8 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ### Fixed -- Fixed JEI transfer for larger processing recipes +- Fixed JEI transfer for larger processing recipes +- Fixed rare autocrafting crash ## [1.12.3] - 2023-07-07 diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/CraftingNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/CraftingNode.java index 35fffd406..3dce11270 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/CraftingNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/CraftingNode.java @@ -47,8 +47,20 @@ public class CraftingNode extends Node { if (interval == 0 || ticks % interval == 0) { for (int i = 0; i < container.getMaximumSuccessfulCraftingUpdates(); i++) { - if (IoUtil.extractFromInternalItemStorage(requirements.getSingleItemRequirementSet(true), internalStorage, Action.SIMULATE) != null) { - IoUtil.extractFromInternalItemStorage(requirements.getSingleItemRequirementSet(false), internalStorage, Action.PERFORM); + + var simulatedRequirements = requirements.getSingleItemRequirementSet(true); + if(simulatedRequirements == null) { + return; + } + + if (IoUtil.extractFromInternalItemStorage(simulatedRequirements, internalStorage, Action.SIMULATE) != null) { + + var actualRequirements = requirements.getSingleItemRequirementSet(false); + if(actualRequirements == null) { + return; + } + + IoUtil.extractFromInternalItemStorage(actualRequirements, internalStorage, Action.PERFORM); ItemStack output = getPattern().getOutput(recipe, network.getLevel().registryAccess()); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/NodeRequirements.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/NodeRequirements.java index 67f9b9acf..ec852856b 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/NodeRequirements.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/NodeRequirements.java @@ -90,7 +90,7 @@ public class NodeRequirements { } } } else { - throw new IllegalStateException("Bad!"); + return null; } } @@ -137,7 +137,7 @@ public class NodeRequirements { } } } else { - throw new IllegalStateException("Bad!"); + return null; } } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/ProcessingNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/ProcessingNode.java index f6bdfc041..09b865e4a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/ProcessingNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/ProcessingNode.java @@ -121,10 +121,20 @@ public class ProcessingNode extends Node { boolean hasAllRequirements = false; - List extractedItems = IoUtil.extractFromInternalItemStorage(requirements.getSingleItemRequirementSet(true), internalStorage, Action.SIMULATE); + var simulatedRequirements = requirements.getSingleItemRequirementSet(true); + if(simulatedRequirements == null) { + return; + } + + List extractedItems = IoUtil.extractFromInternalItemStorage(simulatedRequirements, internalStorage, Action.SIMULATE); List extractedFluids = null; if (extractedItems != null) { - extractedFluids = IoUtil.extractFromInternalFluidStorage(requirements.getSingleFluidRequirementSet(true), internalFluidStorage, Action.SIMULATE); + var simulatedFluidRequirements = requirements.getSingleFluidRequirementSet(true); + if(simulatedFluidRequirements == null) { + return; + } + + extractedFluids = IoUtil.extractFromInternalFluidStorage(simulatedFluidRequirements, internalFluidStorage, Action.SIMULATE); if (extractedFluids != null) { hasAllRequirements = true; } @@ -151,9 +161,17 @@ public class ProcessingNode extends Node { } this.state = ProcessingState.READY; + var actualRequirements = requirements.getSingleItemRequirementSet(false); + if(actualRequirements == null) { + return; + } + extractedItems = IoUtil.extractFromInternalItemStorage(actualRequirements, internalStorage, Action.PERFORM); - extractedItems = IoUtil.extractFromInternalItemStorage(requirements.getSingleItemRequirementSet(false), internalStorage, Action.PERFORM); - extractedFluids = IoUtil.extractFromInternalFluidStorage(requirements.getSingleFluidRequirementSet(false), internalFluidStorage, Action.PERFORM); + var actualFluidRequirements = requirements.getSingleFluidRequirementSet(false); + if(actualFluidRequirements == null) { + return; + } + extractedFluids = IoUtil.extractFromInternalFluidStorage(actualFluidRequirements, internalFluidStorage, Action.PERFORM); container.insertItemsIntoInventory(extractedItems, Action.PERFORM); container.insertFluidsIntoInventory(extractedFluids, Action.PERFORM);