aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxim <maxim235@gmx.de>2023-04-12 20:18:16 +0200
committerGitHub <noreply@github.com>2023-04-12 20:18:16 +0200
commit6cefcfb2b152fa66124b6c0f2443290f1f289ac9 (patch)
treeb3fa2b191aee8ee7f2fd35dc60e03958581ebb97 /src
parent52a1f8b0d028b93b3e3418e43d1c14d382ecfe96 (diff)
downloadGT5-Unofficial-6cefcfb2b152fa66124b6c0f2443290f1f289ac9.tar.gz
GT5-Unofficial-6cefcfb2b152fa66124b6c0f2443290f1f289ac9.tar.bz2
GT5-Unofficial-6cefcfb2b152fa66124b6c0f2443290f1f289ac9.zip
Fixed recipe lock not setting difference correctly (#1879)
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/util/GT_Single_Recipe_Check.java28
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeChemicalReactor.java4
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java4
3 files changed, 26 insertions, 10 deletions
diff --git a/src/main/java/gregtech/api/util/GT_Single_Recipe_Check.java b/src/main/java/gregtech/api/util/GT_Single_Recipe_Check.java
index f46159a89f..4470139afa 100644
--- a/src/main/java/gregtech/api/util/GT_Single_Recipe_Check.java
+++ b/src/main/java/gregtech/api/util/GT_Single_Recipe_Check.java
@@ -340,16 +340,16 @@ public class GT_Single_Recipe_Check {
}
/** Call this before inputs are consumed by the recipe. */
- public Builder setBefore() {
- beforeItems = buildItemMap(multiBlockBase);
- beforeFluids = buildFluidMap(multiBlockBase);
+ public Builder setBefore(ItemStack[] inputs, FluidStack[] fluids) {
+ beforeItems = buildItemMapDirect(inputs);
+ beforeFluids = buildFluidMapDirect(fluids);
return this;
}
/** Call this after inputs are consumed by the recipe. */
- public Builder setAfter() {
- afterItems = buildItemMap(multiBlockBase);
- afterFluids = buildFluidMap(multiBlockBase);
+ public Builder setAfter(ItemStack[] inputs, FluidStack[] fluids) {
+ afterItems = buildItemMapDirect(inputs);
+ afterFluids = buildFluidMapDirect(fluids);
return this;
}
@@ -358,6 +358,22 @@ public class GT_Single_Recipe_Check {
return this;
}
+ static Map<GT_Utility.ItemId, Integer> buildItemMapDirect(ItemStack[] inputs) {
+ Map<GT_Utility.ItemId, Integer> itemMap = new HashMap<>();
+ for (ItemStack itemStack : inputs) {
+ itemMap.merge(GT_Utility.ItemId.create(itemStack), itemStack.stackSize, Integer::sum);
+ }
+ return itemMap;
+ }
+
+ static Map<Fluid, Integer> buildFluidMapDirect(FluidStack[] fluids) {
+ Map<Fluid, Integer> fluidMap = new HashMap<>();
+ for (FluidStack fluidStack : fluids) {
+ fluidMap.merge(fluidStack.getFluid(), fluidStack.amount, Integer::sum);
+ }
+ return fluidMap;
+ }
+
public GT_Single_Recipe_Check build() {
ImmutableMap.Builder<GT_Utility.ItemId, Integer> itemCostBuilder = ImmutableMap.builder();
for (Map.Entry<GT_Utility.ItemId, Integer> entry : beforeItems.entrySet()) {
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeChemicalReactor.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeChemicalReactor.java
index ee7821ddb8..de2f0ad24b 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeChemicalReactor.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_LargeChemicalReactor.java
@@ -179,7 +179,7 @@ public class GT_MetaTileEntity_LargeChemicalReactor extends
// We're locked to a single recipe, but haven't built the recipe checker yet.
// Build the checker on next successful recipe.
tSingleRecipeCheckBuilder = GT_Single_Recipe_Check.builder(this)
- .setBefore();
+ .setBefore(inputs, fluids);
}
tRecipe = GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.findRecipe(
@@ -195,7 +195,7 @@ public class GT_MetaTileEntity_LargeChemicalReactor extends
}
if (mLockedToSingleRecipe) {
- mSingleRecipeCheck = tSingleRecipeCheckBuilder.setAfter()
+ mSingleRecipeCheck = tSingleRecipeCheckBuilder.setAfter(inputs, fluids)
.setRecipe(tRecipe)
.build();
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java
index 00b3a1ff10..6a1964df3e 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PyrolyseOven.java
@@ -176,7 +176,7 @@ public class GT_MetaTileEntity_PyrolyseOven
// We're locked to a single recipe, but haven't built the recipe checker yet.
// Build the checker on next successful recipe.
tSingleRecipeCheckBuilder = GT_Single_Recipe_Check.builder(this)
- .setBefore();
+ .setBefore(tInputs, tFluids);
}
tRecipe = GT_Recipe.GT_Recipe_Map.sPyrolyseRecipes
@@ -185,7 +185,7 @@ public class GT_MetaTileEntity_PyrolyseOven
if (tRecipe == null || !tRecipe.isRecipeInputEqual(true, tFluids, tInputs)) return false;
if (mLockedToSingleRecipe) {
- mSingleRecipeCheck = tSingleRecipeCheckBuilder.setAfter()
+ mSingleRecipeCheck = tSingleRecipeCheckBuilder.setAfter(tInputs, tFluids)
.setRecipe(tRecipe)
.build();
}