From e5c7e6eca4f5d35c7cdab66dc641a8de521757b4 Mon Sep 17 00:00:00 2001 From: repo-alt Date: Sun, 27 Nov 2022 00:53:33 +0300 Subject: fix locked recipe processing for the stocking input bus (#1526) --- .../GT_Single_Recipe_Check_Processing_Array.java | 27 +++++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'src/main/java/gregtech/api/util') diff --git a/src/main/java/gregtech/api/util/GT_Single_Recipe_Check_Processing_Array.java b/src/main/java/gregtech/api/util/GT_Single_Recipe_Check_Processing_Array.java index 585460842d..68db933a4e 100644 --- a/src/main/java/gregtech/api/util/GT_Single_Recipe_Check_Processing_Array.java +++ b/src/main/java/gregtech/api/util/GT_Single_Recipe_Check_Processing_Array.java @@ -155,16 +155,31 @@ public class GT_Single_Recipe_Check_Processing_Array extends GT_Single_Recipe_Ch } /** 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; } + static Map buildItemMapDirect(ItemStack[] inputs) { + Map itemMap = new HashMap<>(); + for (ItemStack itemStack : inputs) { + itemMap.merge(GT_Utility.ItemId.create(itemStack), itemStack.stackSize, Integer::sum); + } + return itemMap; + } + static Map buildFluidMapDirect(FluidStack[] fluids) { + Map fluidMap = new HashMap<>(); + for (FluidStack fluidStack : fluids) { + fluidMap.merge(fluidStack.getFluid(), fluidStack.amount, Integer::sum); + } + return fluidMap; + } + /** 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; } -- cgit