Skip to content

Commit 01bd81f

Browse files
authored
Merge pull request #3589 from Darkere/fix/GH-3514/fix-rare-autocrafting-crash
fix: rare autocrafting crash
2 parents ea71488 + 9169408 commit 01bd81f

File tree

4 files changed

+40
-9
lines changed

4 files changed

+40
-9
lines changed

CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
99

1010
### Fixed
1111

12-
- Fixed JEI transfer for larger processing recipes
12+
- Fixed JEI transfer for larger processing recipes
13+
- Fixed rare autocrafting crash
1314

1415
## [1.12.3] - 2023-07-07
1516

src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/CraftingNode.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,20 @@ public void update(INetwork network, int ticks, NodeList nodes, IStorageDisk<Ite
4747

4848
if (interval == 0 || ticks % interval == 0) {
4949
for (int i = 0; i < container.getMaximumSuccessfulCraftingUpdates(); i++) {
50-
if (IoUtil.extractFromInternalItemStorage(requirements.getSingleItemRequirementSet(true), internalStorage, Action.SIMULATE) != null) {
51-
IoUtil.extractFromInternalItemStorage(requirements.getSingleItemRequirementSet(false), internalStorage, Action.PERFORM);
50+
51+
var simulatedRequirements = requirements.getSingleItemRequirementSet(true);
52+
if(simulatedRequirements == null) {
53+
return;
54+
}
55+
56+
if (IoUtil.extractFromInternalItemStorage(simulatedRequirements, internalStorage, Action.SIMULATE) != null) {
57+
58+
var actualRequirements = requirements.getSingleItemRequirementSet(false);
59+
if(actualRequirements == null) {
60+
return;
61+
}
62+
63+
IoUtil.extractFromInternalItemStorage(actualRequirements, internalStorage, Action.PERFORM);
5264

5365
ItemStack output = getPattern().getOutput(recipe, network.getLevel().registryAccess());
5466

src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/NodeRequirements.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public List<ItemStack> getSingleItemRequirementSet(boolean simulate) {
9090
}
9191
}
9292
} else {
93-
throw new IllegalStateException("Bad!");
93+
return null;
9494
}
9595
}
9696

@@ -137,7 +137,7 @@ public List<FluidStack> getSingleFluidRequirementSet(boolean simulate) {
137137
}
138138
}
139139
} else {
140-
throw new IllegalStateException("Bad!");
140+
return null;
141141
}
142142
}
143143

src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/node/ProcessingNode.java

+22-4
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,20 @@ public void update(INetwork network, int ticks, NodeList nodes, IStorageDisk<Ite
121121

122122
boolean hasAllRequirements = false;
123123

124-
List<ItemStack> extractedItems = IoUtil.extractFromInternalItemStorage(requirements.getSingleItemRequirementSet(true), internalStorage, Action.SIMULATE);
124+
var simulatedRequirements = requirements.getSingleItemRequirementSet(true);
125+
if(simulatedRequirements == null) {
126+
return;
127+
}
128+
129+
List<ItemStack> extractedItems = IoUtil.extractFromInternalItemStorage(simulatedRequirements, internalStorage, Action.SIMULATE);
125130
List<FluidStack> extractedFluids = null;
126131
if (extractedItems != null) {
127-
extractedFluids = IoUtil.extractFromInternalFluidStorage(requirements.getSingleFluidRequirementSet(true), internalFluidStorage, Action.SIMULATE);
132+
var simulatedFluidRequirements = requirements.getSingleFluidRequirementSet(true);
133+
if(simulatedFluidRequirements == null) {
134+
return;
135+
}
136+
137+
extractedFluids = IoUtil.extractFromInternalFluidStorage(simulatedFluidRequirements, internalFluidStorage, Action.SIMULATE);
128138
if (extractedFluids != null) {
129139
hasAllRequirements = true;
130140
}
@@ -151,9 +161,17 @@ public void update(INetwork network, int ticks, NodeList nodes, IStorageDisk<Ite
151161
}
152162

153163
this.state = ProcessingState.READY;
164+
var actualRequirements = requirements.getSingleItemRequirementSet(false);
165+
if(actualRequirements == null) {
166+
return;
167+
}
168+
extractedItems = IoUtil.extractFromInternalItemStorage(actualRequirements, internalStorage, Action.PERFORM);
154169

155-
extractedItems = IoUtil.extractFromInternalItemStorage(requirements.getSingleItemRequirementSet(false), internalStorage, Action.PERFORM);
156-
extractedFluids = IoUtil.extractFromInternalFluidStorage(requirements.getSingleFluidRequirementSet(false), internalFluidStorage, Action.PERFORM);
170+
var actualFluidRequirements = requirements.getSingleFluidRequirementSet(false);
171+
if(actualFluidRequirements == null) {
172+
return;
173+
}
174+
extractedFluids = IoUtil.extractFromInternalFluidStorage(actualFluidRequirements, internalFluidStorage, Action.PERFORM);
157175

158176
container.insertItemsIntoInventory(extractedItems, Action.PERFORM);
159177
container.insertFluidsIntoInventory(extractedFluids, Action.PERFORM);

0 commit comments

Comments
 (0)