From 586774988341fa8cfeb427074ec0059224676a4c Mon Sep 17 00:00:00 2001 From: Darkere Date: Sun, 13 Jun 2021 20:14:04 +0200 Subject: [PATCH] make sure pattern is valid before looking up outputs --- .../network/grid/CraftingGridBehavior.java | 15 +++++++-------- .../integration/jei/IngredientTracker.java | 11 +++++++---- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java index 987bab002..50696a229 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/CraftingGridBehavior.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.apiimpl.network.grid; +import com.refinedmods.refinedstorage.api.autocrafting.ICraftingPattern; import com.refinedmods.refinedstorage.api.network.INetwork; import com.refinedmods.refinedstorage.api.network.grid.GridType; import com.refinedmods.refinedstorage.api.network.grid.ICraftingGridBehavior; @@ -24,7 +25,6 @@ import net.minecraftforge.items.ItemHandlerHelper; import javax.annotation.Nullable; import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; public class CraftingGridBehavior implements ICraftingGridBehavior { @@ -258,7 +258,6 @@ public class CraftingGridBehavior implements ICraftingGridBehavior { } private Comparator compareByItemStackCounts(PlayerEntity player, INetwork network, AtomicReference> playerItems) { - AtomicInteger s = new AtomicInteger(); return Comparator.comparingInt((ItemStack itemStack) -> { ItemStack stack = network.getItemStorageCache().getList().get(itemStack); @@ -272,8 +271,6 @@ public class CraftingGridBehavior implements ICraftingGridBehavior { if (playerItems.get() == null) { playerItems.set(makePlayerInventoryMap(player, network)); - } else { - System.out.println(s.incrementAndGet()); } ItemStack onPlayer = playerItems.get().get(itemStack.getItem()); @@ -290,10 +287,12 @@ public class CraftingGridBehavior implements ICraftingGridBehavior { ItemStack inventoryStack = player.inventory.getStackInSlot(j); if (inventoryStack.getItem() instanceof PatternItem) { - NonNullList patternOutput = PatternItem.fromCache(network.getWorld(), inventoryStack).getOutputs(); - for (ItemStack stack : patternOutput) { - if (!stack.isEmpty()) { - playerItems.put(stack.getItem(), stack); + ICraftingPattern pattern = PatternItem.fromCache(network.getWorld(), inventoryStack); + if (pattern.isValid()) { + for (ItemStack stack : pattern.getOutputs()) { + if (!stack.isEmpty()) { + playerItems.put(stack.getItem(), stack); + } } } } else { diff --git a/src/main/java/com/refinedmods/refinedstorage/integration/jei/IngredientTracker.java b/src/main/java/com/refinedmods/refinedstorage/integration/jei/IngredientTracker.java index cf2b97f3b..34fdb764a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/integration/jei/IngredientTracker.java +++ b/src/main/java/com/refinedmods/refinedstorage/integration/jei/IngredientTracker.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.integration.jei; +import com.refinedmods.refinedstorage.api.autocrafting.ICraftingPattern; import com.refinedmods.refinedstorage.api.util.IComparer; import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.item.PatternItem; @@ -8,7 +9,6 @@ import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.gui.ingredient.IGuiIngredient; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import javax.annotation.Nullable; @@ -36,10 +36,13 @@ public class IngredientTracker { int available = stack.getCount(); if (doTransfer) { if (stack.getItem() instanceof PatternItem) { - NonNullList outputStacks = PatternItem.fromCache(Minecraft.getInstance().world, stack).getOutputs(); - for (ItemStack outputStack : outputStacks) { - storedItems.merge(outputStack.getItem().getRegistryName(), outputStack.getCount(), Integer::sum); + ICraftingPattern pattern = PatternItem.fromCache(Minecraft.getInstance().world, stack); + if (pattern.isValid()) { + for (ItemStack outputStack : pattern.getOutputs()) { + storedItems.merge(outputStack.getItem().getRegistryName(), outputStack.getCount(), Integer::sum); + } } + } else { storedItems.merge(stack.getItem().getRegistryName(), available, Integer::sum); }