make sure pattern is valid before looking up outputs
This commit is contained in:
@@ -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<ItemStack> compareByItemStackCounts(PlayerEntity player, INetwork network, AtomicReference<Map<Item, ItemStack>> 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,12 +287,14 @@ public class CraftingGridBehavior implements ICraftingGridBehavior {
|
||||
ItemStack inventoryStack = player.inventory.getStackInSlot(j);
|
||||
|
||||
if (inventoryStack.getItem() instanceof PatternItem) {
|
||||
NonNullList<ItemStack> patternOutput = PatternItem.fromCache(network.getWorld(), inventoryStack).getOutputs();
|
||||
for (ItemStack stack : patternOutput) {
|
||||
ICraftingPattern pattern = PatternItem.fromCache(network.getWorld(), inventoryStack);
|
||||
if (pattern.isValid()) {
|
||||
for (ItemStack stack : pattern.getOutputs()) {
|
||||
if (!stack.isEmpty()) {
|
||||
playerItems.put(stack.getItem(), stack);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
playerItems.put(inventoryStack.getItem(), inventoryStack);
|
||||
}
|
||||
|
||||
@@ -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<ItemStack> outputStacks = PatternItem.fromCache(Minecraft.getInstance().world, stack).getOutputs();
|
||||
for (ItemStack outputStack : outputStacks) {
|
||||
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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user