diff options
author | Maxim <maxim235@gmx.de> | 2023-04-12 20:18:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-12 20:18:16 +0200 |
commit | 6cefcfb2b152fa66124b6c0f2443290f1f289ac9 (patch) | |
tree | b3fa2b191aee8ee7f2fd35dc60e03958581ebb97 /src/main/java/gregtech/api | |
parent | 52a1f8b0d028b93b3e3418e43d1c14d382ecfe96 (diff) | |
download | GT5-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/main/java/gregtech/api')
-rw-r--r-- | src/main/java/gregtech/api/util/GT_Single_Recipe_Check.java | 28 |
1 files changed, 22 insertions, 6 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()) { |