From 6ce72c833954ac2b2fb8e0f9182b40359527a08c Mon Sep 17 00:00:00 2001 From: mezz Date: Thu, 31 Dec 2015 01:19:06 -0800 Subject: [PATCH] Fix oreDict support for recipes in JEI --- .../compat/jei/BaseRecipeWrapper.java | 31 +++++++++++++++++-- .../BlastFurnaceRecipeCategory.java | 2 +- .../centrifuge/CentrifugeRecipeCategory.java | 2 +- .../ChemicalReactorRecipeCategory.java | 2 +- .../jei/grinder/GrinderRecipeCategory.java | 5 ++- .../ImplosionCompressorRecipeCategory.java | 2 +- 6 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/main/java/techreborn/compat/jei/BaseRecipeWrapper.java b/src/main/java/techreborn/compat/jei/BaseRecipeWrapper.java index 63a084ed0..21fae338d 100644 --- a/src/main/java/techreborn/compat/jei/BaseRecipeWrapper.java +++ b/src/main/java/techreborn/compat/jei/BaseRecipeWrapper.java @@ -1,24 +1,51 @@ package techreborn.compat.jei; import javax.annotation.Nonnull; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; + import mezz.jei.api.recipe.BlankRecipeWrapper; import techreborn.api.recipe.BaseRecipe; public abstract class BaseRecipeWrapper extends BlankRecipeWrapper { protected final T baseRecipe; + private final List> inputs; public BaseRecipeWrapper(T baseRecipe) { this.baseRecipe = baseRecipe; + + inputs = new ArrayList<>(); + for (ItemStack input : baseRecipe.getInputs()) { + if (baseRecipe.useOreDic()) { + int[] oreIds = OreDictionary.getOreIDs(input); + if (oreIds.length > 0) { + Set itemStackSet = new HashSet<>(); + for (int oreId : oreIds) { + String oreName = OreDictionary.getOreName(oreId); + List ores = OreDictionary.getOres(oreName); + itemStackSet.addAll(ores); + } + inputs.add(new ArrayList<>(itemStackSet)); + } else { + inputs.add(Collections.singletonList(input)); + } + } else { + inputs.add(Collections.singletonList(input)); + } + } } @Override - public List getInputs() { - return baseRecipe.getInputs(); + public List> getInputs() { + return inputs; } @Override diff --git a/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeCategory.java b/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeCategory.java index 0948d9237..858c8f17e 100644 --- a/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeCategory.java +++ b/src/main/java/techreborn/compat/jei/blastFurnace/BlastFurnaceRecipeCategory.java @@ -74,7 +74,7 @@ public class BlastFurnaceRecipeCategory implements IRecipeCategory { if (recipeWrapper instanceof BlastFurnaceRecipeWrapper) { BlastFurnaceRecipeWrapper recipe = (BlastFurnaceRecipeWrapper) recipeWrapper; - List inputs = recipe.getInputs(); + List> inputs = recipe.getInputs(); guiItemStacks.set(INPUT_SLOT_0, inputs.get(0)); if (inputs.size() > 1) { guiItemStacks.set(INPUT_SLOT_1, inputs.get(1)); diff --git a/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeCategory.java b/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeCategory.java index 5bc67ea4f..c01000555 100644 --- a/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeCategory.java +++ b/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeCategory.java @@ -71,7 +71,7 @@ public class CentrifugeRecipeCategory implements IRecipeCategory { if (recipeWrapper instanceof CentrifugeRecipeWrapper) { CentrifugeRecipeWrapper recipe = (CentrifugeRecipeWrapper) recipeWrapper; - List inputs = recipe.getInputs(); + List> inputs = recipe.getInputs(); guiItemStacks.set(INPUT_SLOT, inputs.get(0)); if (inputs.size() > 1) { guiItemStacks.set(EMPTY_CELL_SLOT, inputs.get(1)); diff --git a/src/main/java/techreborn/compat/jei/chemicalReactor/ChemicalReactorRecipeCategory.java b/src/main/java/techreborn/compat/jei/chemicalReactor/ChemicalReactorRecipeCategory.java index 5d7fdfd88..4dc010170 100644 --- a/src/main/java/techreborn/compat/jei/chemicalReactor/ChemicalReactorRecipeCategory.java +++ b/src/main/java/techreborn/compat/jei/chemicalReactor/ChemicalReactorRecipeCategory.java @@ -68,7 +68,7 @@ public class ChemicalReactorRecipeCategory implements IRecipeCategory { if (recipeWrapper instanceof ChemicalReactorRecipeWrapper) { ChemicalReactorRecipeWrapper recipe = (ChemicalReactorRecipeWrapper) recipeWrapper; - List inputs = recipe.getInputs(); + List> inputs = recipe.getInputs(); guiItemStacks.set(INPUT_SLOT_0, inputs.get(0)); if (inputs.size() > 1) { guiItemStacks.set(INPUT_SLOT_1, inputs.get(1)); diff --git a/src/main/java/techreborn/compat/jei/grinder/GrinderRecipeCategory.java b/src/main/java/techreborn/compat/jei/grinder/GrinderRecipeCategory.java index 70d9865d4..985fb66fa 100644 --- a/src/main/java/techreborn/compat/jei/grinder/GrinderRecipeCategory.java +++ b/src/main/java/techreborn/compat/jei/grinder/GrinderRecipeCategory.java @@ -82,11 +82,10 @@ public class GrinderRecipeCategory implements IRecipeCategory { if (recipeWrapper instanceof GrinderRecipeWrapper) { GrinderRecipeWrapper recipe = (GrinderRecipeWrapper) recipeWrapper; - List inputs = recipe.getInputs(); + List> inputs = recipe.getInputs(); for (int i = 0; i < inputs.size() && i < INPUT_SLOTS.length; i++) { int inputSlot = INPUT_SLOTS[i]; - ItemStack input = inputs.get(i); - guiItemStacks.set(inputSlot, input); + guiItemStacks.set(inputSlot, inputs.get(i)); } List outputs = recipe.getOutputs(); diff --git a/src/main/java/techreborn/compat/jei/implosionCompressor/ImplosionCompressorRecipeCategory.java b/src/main/java/techreborn/compat/jei/implosionCompressor/ImplosionCompressorRecipeCategory.java index 90b0e9de7..a41ca705b 100644 --- a/src/main/java/techreborn/compat/jei/implosionCompressor/ImplosionCompressorRecipeCategory.java +++ b/src/main/java/techreborn/compat/jei/implosionCompressor/ImplosionCompressorRecipeCategory.java @@ -74,7 +74,7 @@ public class ImplosionCompressorRecipeCategory implements IRecipeCategory { if (recipeWrapper instanceof ImplosionCompressorRecipeWrapper) { ImplosionCompressorRecipeWrapper recipe = (ImplosionCompressorRecipeWrapper) recipeWrapper; - List inputs = recipe.getInputs(); + List> inputs = recipe.getInputs(); guiItemStacks.set(INPUT_SLOT_0, inputs.get(0)); if (inputs.size() > 1) { guiItemStacks.set(INPUT_SLOT_1, inputs.get(1));