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 3363e6c80..8e3689233 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 @@ -54,7 +54,7 @@ public class CraftingGridBehavior implements ICraftingGridBehavior { matrix.setInventorySlotContents(i, remainder.get(i).copy()); } } else if (!slot.isEmpty()) { // We don't have a remainder, but the slot is not empty. - if (slot.getCount() == 1 && network != null) { // Attempt to refill the slot with the same item from the network, only if we have a network and only if it's the last item. + if (slot.getCount() == 1 && network != null && grid.isGridActive()) { // Attempt to refill the slot with the same item from the network, only if we have a network and only if it's the last item. ItemStack refill; if (availableItems == null) { // for regular crafting refill = network.extractItem(slot, 1, Action.PERFORM); @@ -94,11 +94,11 @@ public class CraftingGridBehavior implements ICraftingGridBehavior { int amountCrafted = 0; boolean useNetwork = network != null && grid.isGridActive(); - IStackList availableItems = null; + IStackList availableItems = API.instance().createItemStackList(); if (useNetwork) { // We need a modifiable list of the items in storage that are relevant for this craft. // For performance reason we extract these into an extra list - availableItems = createFilteredItemList(network, matrix); + filterDuplicateStacks(network, matrix, availableItems); } //A second list to remember which items have been extracted @@ -141,8 +141,7 @@ public class CraftingGridBehavior implements ICraftingGridBehavior { ForgeHooks.setCraftingPlayer(null); } - private IStackList createFilteredItemList(INetwork network, CraftingInventory matrix) { - IStackList availableItems = API.instance().createItemStackList(); + private void filterDuplicateStacks(INetwork network, CraftingInventory matrix, IStackList availableItems) { for (int i = 0; i < matrix.getSizeInventory(); ++i) { ItemStack stack = network.getItemStorageCache().getList().get(matrix.getStackInSlot(i)); @@ -151,7 +150,6 @@ public class CraftingGridBehavior implements ICraftingGridBehavior { availableItems.add(stack); } } - return availableItems; } @Override