diff --git a/src/main/java/appeng/crafting/CraftingTreeNode.java b/src/main/java/appeng/crafting/CraftingTreeNode.java index 44cb81ddd..4e5606396 100644 --- a/src/main/java/appeng/crafting/CraftingTreeNode.java +++ b/src/main/java/appeng/crafting/CraftingTreeNode.java @@ -40,6 +40,7 @@ import net.minecraft.world.World; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.LinkedList; import java.util.List; public class CraftingTreeNode { @@ -112,14 +113,16 @@ public class CraftingTreeNode { this.what.setStackSize(l); if (this.getSlot() >= 0 && this.parent != null && this.parent.details.isCraftable()) { - Collection itemList = new ArrayList<>(); + LinkedList itemList = new LinkedList<>(); boolean damageableItem = this.what.getItem().isDamageable() || Platform.isGTDamageableItem(this.what.getItem()); if (this.parent.details.canSubstitute()) { for (IAEItemStack subs : this.parent.details.getSubstituteInputs(this.slot)) { if (damageableItem) { - itemList.addAll(inventoryList.findFuzzy(subs, FuzzyMode.IGNORE_ALL)); + for (IAEItemStack i : inventoryList.findFuzzy(subs, FuzzyMode.IGNORE_ALL)) { + itemList.add(i); + } } subs = inventoryList.findPrecise(subs); if (subs != null) { @@ -128,7 +131,9 @@ public class CraftingTreeNode { } } else { if (damageableItem) { - itemList.addAll(inventoryList.findFuzzy(this.what, FuzzyMode.IGNORE_ALL)); + for (IAEItemStack i : inventoryList.findFuzzy(this.what, FuzzyMode.IGNORE_ALL)) { + itemList.add(i); + } } else { final IAEItemStack item = inventoryList.findPrecise(this.what); if (item != null) { diff --git a/src/main/java/appeng/helpers/PatternHelper.java b/src/main/java/appeng/helpers/PatternHelper.java index 888195676..3c0e2b08d 100644 --- a/src/main/java/appeng/helpers/PatternHelper.java +++ b/src/main/java/appeng/helpers/PatternHelper.java @@ -26,6 +26,8 @@ import appeng.api.storage.data.IAEItemStack; import appeng.container.ContainerNull; import appeng.util.Platform; import appeng.util.item.AEItemStack; +import appeng.util.item.OreHelper; +import appeng.util.item.OreReference; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -37,6 +39,8 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.util.NonNullList; import net.minecraft.world.World; import net.minecraftforge.common.crafting.IShapedRecipe; +import net.minecraftforge.oredict.OreDictionary; +import net.minecraftforge.oredict.ShapedOreRecipe; import java.util.*; @@ -239,6 +243,22 @@ public class PatternHelper implements ICraftingPatternDetails, Comparable