From 12f64307786ab0cf4b7ee1f193cdb20143741439 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Wed, 3 Aug 2016 01:09:11 +0200 Subject: [PATCH] Did some API cleaning up --- .../api/recipe/CrusherRecipe.java | 77 +------------------ .../api/recipe/LensConversionRecipe.java | 60 +-------------- .../mod/blocks/BlockCrystal.java | 1 - .../mod/booklet/page/PageCrusherRecipe.java | 23 +++--- .../mod/booklet/page/PageReconstructor.java | 9 +-- .../mod/items/lens/LensRecipeHandler.java | 2 +- .../jei/crusher/CrusherRecipeCategory.java | 7 +- .../mod/jei/crusher/CrusherRecipeWrapper.java | 9 ++- .../ReconstructorRecipeCategory.java | 5 +- .../ReconstructorRecipeWrapper.java | 5 +- .../mod/misc/MethodHandler.java | 5 +- .../mod/recipe/CrusherRecipeRegistry.java | 7 +- .../mod/util/RecipeUtil.java | 50 ++++++++++++ 13 files changed, 95 insertions(+), 165 deletions(-) diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/recipe/CrusherRecipe.java b/src/main/java/de/ellpeck/actuallyadditions/api/recipe/CrusherRecipe.java index 530b892cd..6eaeb1a2f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/api/recipe/CrusherRecipe.java +++ b/src/main/java/de/ellpeck/actuallyadditions/api/recipe/CrusherRecipe.java @@ -25,9 +25,9 @@ public class CrusherRecipe{ public int outputOneAmount; public String outputTwo; public int outputTwoAmount; - private ItemStack inputStack; - private ItemStack outputOneStack; - private ItemStack outputTwoStack; + public ItemStack inputStack; + public ItemStack outputOneStack; + public ItemStack outputTwoStack; public CrusherRecipe(ItemStack input, String outputOne, int outputOneAmount){ this.inputStack = input; @@ -51,75 +51,4 @@ public class CrusherRecipe{ this.outputTwoChance = outputTwoChance; } - public List getRecipeOutputOnes(){ - if(this.outputOneStack != null){ - return Collections.singletonList(this.outputOneStack.copy()); - } - - if(this.outputOne == null || this.outputOne.isEmpty()){ - return null; - } - - List stacks = OreDictionary.getOres(this.outputOne, false); - if(stacks != null && !stacks.isEmpty()){ - List stacksCopy = new ArrayList(); - for(ItemStack stack : stacks){ - if(stack != null){ - ItemStack stackCopy = stack.copy(); - stackCopy.stackSize = this.outputOneAmount; - stacksCopy.add(stackCopy); - } - } - return stacksCopy; - } - return null; - } - - public List getRecipeOutputTwos(){ - if(this.outputTwoStack != null){ - return Collections.singletonList(this.outputTwoStack.copy()); - } - - if(this.outputTwo == null || this.outputTwo.isEmpty()){ - return null; - } - - List stacks = OreDictionary.getOres(this.outputTwo, false); - if(stacks != null && !stacks.isEmpty()){ - List stacksCopy = new ArrayList(); - for(ItemStack stack : stacks){ - if(stack != null){ - ItemStack stackCopy = stack.copy(); - stackCopy.stackSize = this.outputTwoAmount; - stacksCopy.add(stackCopy); - } - } - return stacksCopy; - } - return null; - } - - public List getRecipeInputs(){ - if(this.inputStack != null){ - return Collections.singletonList(this.inputStack.copy()); - } - - if(this.input == null || this.input.isEmpty()){ - return null; - } - - List stacks = OreDictionary.getOres(this.input, false); - if(stacks != null && !stacks.isEmpty()){ - List stacksCopy = new ArrayList(); - for(ItemStack stack : stacks){ - if(stack != null){ - ItemStack stackCopy = stack.copy(); - stackCopy.stackSize = 1; - stacksCopy.add(stackCopy); - } - } - return stacksCopy; - } - return null; - } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/recipe/LensConversionRecipe.java b/src/main/java/de/ellpeck/actuallyadditions/api/recipe/LensConversionRecipe.java index 43edbcc13..fbcdbab74 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/api/recipe/LensConversionRecipe.java +++ b/src/main/java/de/ellpeck/actuallyadditions/api/recipe/LensConversionRecipe.java @@ -12,20 +12,15 @@ package de.ellpeck.actuallyadditions.api.recipe; import de.ellpeck.actuallyadditions.api.lens.LensConversion; import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.OreDictionary; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; public class LensConversionRecipe{ public final int energyUse; public final LensConversion type; - private String input; - private String output; - private ItemStack inputStack; - private ItemStack outputStack; + public String input; + public String output; + public ItemStack inputStack; + public ItemStack outputStack; public LensConversionRecipe(ItemStack input, ItemStack output, int energyUse, LensConversion type){ this.inputStack = input; @@ -41,51 +36,4 @@ public class LensConversionRecipe{ this.type = type; } - public List getOutputs(){ - if(this.outputStack != null){ - return Collections.singletonList(this.outputStack.copy()); - } - - if(this.output == null || this.output.isEmpty()){ - return null; - } - - List stacks = OreDictionary.getOres(this.output, false); - if(stacks != null && !stacks.isEmpty()){ - List stacksCopy = new ArrayList(); - for(ItemStack stack : stacks){ - if(stack != null){ - ItemStack stackCopy = stack.copy(); - stackCopy.stackSize = 1; - stacksCopy.add(stackCopy); - } - } - return stacksCopy; - } - return null; - } - - public List getInputs(){ - if(this.inputStack != null){ - return Collections.singletonList(this.inputStack.copy()); - } - - if(this.input == null || this.input.isEmpty()){ - return null; - } - - List stacks = OreDictionary.getOres(this.input, false); - if(stacks != null && !stacks.isEmpty()){ - List stacksCopy = new ArrayList(); - for(ItemStack stack : stacks){ - if(stack != null){ - ItemStack stackCopy = stack.copy(); - stackCopy.stackSize = 1; - stacksCopy.add(stackCopy); - } - } - return stacksCopy; - } - return null; - } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCrystal.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCrystal.java index f7165ced5..03f0e4da8 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCrystal.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/BlockCrystal.java @@ -83,7 +83,6 @@ public class BlockCrystal extends BlockBase{ this.setMaxDamage(0); } - @Override public String getUnlocalizedName(ItemStack stack){ return stack.getItemDamage() >= ALL_CRYSTALS.length ? StringUtil.BUGGED_ITEM_NAME : this.getUnlocalizedName()+ALL_CRYSTALS[stack.getItemDamage()].name; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrusherRecipe.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrusherRecipe.java index b2e9df9fd..d15c7d07e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrusherRecipe.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrusherRecipe.java @@ -14,16 +14,14 @@ import de.ellpeck.actuallyadditions.api.internal.IBookletGui; import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe; import de.ellpeck.actuallyadditions.mod.booklet.GuiBooklet; import de.ellpeck.actuallyadditions.mod.proxy.ClientProxy; -import de.ellpeck.actuallyadditions.mod.util.AssetUtil; -import de.ellpeck.actuallyadditions.mod.util.ModUtil; -import de.ellpeck.actuallyadditions.mod.util.StringUtil; -import de.ellpeck.actuallyadditions.mod.util.Util; +import de.ellpeck.actuallyadditions.mod.util.*; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import java.util.ArrayList; import java.util.List; @@ -69,19 +67,21 @@ public class PageCrusherRecipe extends BookletPageAA{ Minecraft.getMinecraft().fontRendererObj.drawString(this.recipe.outputTwoChance+"%", gui.getGuiLeft()+37+62, gui.getGuiTop()+20+33, 0); } - if(this.recipe.getRecipeOutputOnes() != null){ + List outputOnes = RecipeUtil.getCrusherRecipeOutputOnes(this.recipe); + if(outputOnes != null){ for(int i = 0; i < 2; i++){ for(int j = 0; j < 3; j++){ ItemStack stack; switch(j){ case 0: - stack = this.recipe.getRecipeInputs().get(Math.min(this.recipe.getRecipeInputs().size()-1, this.recipePos)); + List inputs = RecipeUtil.getCrusherRecipeInputs(this.recipe); + stack = inputs.get(Math.min(inputs.size()-1, this.recipePos)); break; case 1: - stack = this.recipe.getRecipeOutputOnes().get(Math.min(this.recipe.getRecipeOutputOnes().size()-1, this.recipePos)); + stack = outputOnes.get(Math.min(outputOnes.size()-1, this.recipePos)); break; default: - List outputTwos = this.recipe.getRecipeOutputTwos(); + List outputTwos = RecipeUtil.getCrusherRecipeOutputTwos(this.recipe); stack = outputTwos == null ? null : outputTwos.get(Math.min(outputTwos.size()-1, this.recipePos)); break; } @@ -114,8 +114,8 @@ public class PageCrusherRecipe extends BookletPageAA{ @SideOnly(Side.CLIENT) public void updateScreen(int ticksElapsed){ if(ticksElapsed%10 == 0){ - List outputTwos = this.recipe.getRecipeOutputTwos(); - if(this.recipePos+1 >= Math.max(this.recipe.getRecipeInputs().size(), Math.max(this.recipe.getRecipeOutputOnes().size(), outputTwos == null ? 0 : outputTwos.size()))){ + List outputTwos = RecipeUtil.getCrusherRecipeOutputTwos(this.recipe); + if(this.recipePos+1 >= Math.max(RecipeUtil.getCrusherRecipeInputs(this.recipe).size(), Math.max(RecipeUtil.getCrusherRecipeOutputOnes(this.recipe).size(), outputTwos == null ? 0 : outputTwos.size()))){ this.recipePos = 0; } else{ @@ -126,6 +126,7 @@ public class PageCrusherRecipe extends BookletPageAA{ @Override public ItemStack[] getItemStacksForPage(){ - return this.recipe == null ? new ItemStack[0] : this.recipe.getRecipeOutputOnes().toArray(new ItemStack[this.recipe.getRecipeOutputOnes().size()]); + List outputOnes = RecipeUtil.getCrusherRecipeOutputOnes(this.recipe); + return this.recipe == null ? new ItemStack[0] : outputOnes.toArray(new ItemStack[outputOnes.size()]); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageReconstructor.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageReconstructor.java index 5dafb1c49..3bdf37019 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageReconstructor.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageReconstructor.java @@ -15,10 +15,7 @@ import de.ellpeck.actuallyadditions.api.recipe.LensConversionRecipe; import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks; import de.ellpeck.actuallyadditions.mod.booklet.GuiBooklet; import de.ellpeck.actuallyadditions.mod.proxy.ClientProxy; -import de.ellpeck.actuallyadditions.mod.util.AssetUtil; -import de.ellpeck.actuallyadditions.mod.util.ModUtil; -import de.ellpeck.actuallyadditions.mod.util.StringUtil; -import de.ellpeck.actuallyadditions.mod.util.Util; +import de.ellpeck.actuallyadditions.mod.util.*; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; @@ -73,7 +70,7 @@ public class PageReconstructor extends BookletPageAA{ AssetUtil.renderStackToGui(new ItemStack(InitBlocks.blockAtomicReconstructor), gui.getGuiLeft()+37+22, gui.getGuiTop()+20+21, 1.0F); for(int i = 0; i < 2; i++){ for(int x = 0; x < 2; x++){ - List stacks = x == 0 ? recipe.getInputs() : recipe.getOutputs(); + List stacks = x == 0 ? RecipeUtil.getConversionLensInputs(recipe) : RecipeUtil.getConversionLensOutputs(recipe); if(stacks != null && !stacks.isEmpty()){ ItemStack stack = stacks.get(0); @@ -117,7 +114,7 @@ public class PageReconstructor extends BookletPageAA{ ArrayList stacks = new ArrayList(); for(LensConversionRecipe recipe : this.recipes){ if(recipe != null){ - stacks.addAll(recipe.getOutputs()); + stacks.addAll(RecipeUtil.getConversionLensOutputs(recipe)); } } return stacks.toArray(new ItemStack[stacks.size()]); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/items/lens/LensRecipeHandler.java b/src/main/java/de/ellpeck/actuallyadditions/mod/items/lens/LensRecipeHandler.java index 44e94a84a..e0807b644 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/items/lens/LensRecipeHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/items/lens/LensRecipeHandler.java @@ -115,7 +115,7 @@ public final class LensRecipeHandler{ public static ArrayList getRecipesFor(ItemStack input){ ArrayList possibleRecipes = new ArrayList(); for(LensConversionRecipe recipe : ActuallyAdditionsAPI.RECONSTRUCTOR_LENS_CONVERSION_RECIPES){ - if(ItemUtil.contains(recipe.getInputs(), input, true)){ + if(ItemUtil.contains(RecipeUtil.getConversionLensInputs(recipe), input, true)){ possibleRecipes.add(recipe); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/jei/crusher/CrusherRecipeCategory.java b/src/main/java/de/ellpeck/actuallyadditions/mod/jei/crusher/CrusherRecipeCategory.java index b94999ecd..f75df6832 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/jei/crusher/CrusherRecipeCategory.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/jei/crusher/CrusherRecipeCategory.java @@ -11,6 +11,7 @@ package de.ellpeck.actuallyadditions.mod.jei.crusher; import de.ellpeck.actuallyadditions.mod.util.AssetUtil; +import de.ellpeck.actuallyadditions.mod.util.RecipeUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; @@ -66,12 +67,12 @@ public class CrusherRecipeCategory implements IRecipeCategory{ CrusherRecipeWrapper wrapper = (CrusherRecipeWrapper)recipeWrapper; recipeLayout.getItemStacks().init(0, true, 19, 7); - recipeLayout.getItemStacks().set(0, wrapper.theRecipe.getRecipeInputs()); + recipeLayout.getItemStacks().set(0, RecipeUtil.getCrusherRecipeInputs(wrapper.theRecipe)); recipeLayout.getItemStacks().init(1, true, 7, 55); - recipeLayout.getItemStacks().set(1, wrapper.theRecipe.getRecipeOutputOnes()); + recipeLayout.getItemStacks().set(1, RecipeUtil.getCrusherRecipeOutputOnes(wrapper.theRecipe)); - List outputTwos = wrapper.theRecipe.getRecipeOutputTwos(); + List outputTwos = RecipeUtil.getCrusherRecipeOutputTwos(wrapper.theRecipe); if(outputTwos != null && !outputTwos.isEmpty()){ recipeLayout.getItemStacks().init(2, true, 31, 55); recipeLayout.getItemStacks().set(2, outputTwos); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/jei/crusher/CrusherRecipeWrapper.java b/src/main/java/de/ellpeck/actuallyadditions/mod/jei/crusher/CrusherRecipeWrapper.java index da896422a..daec714fc 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/jei/crusher/CrusherRecipeWrapper.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/jei/crusher/CrusherRecipeWrapper.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe; import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks; import de.ellpeck.actuallyadditions.mod.booklet.BookletUtils; import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton; +import de.ellpeck.actuallyadditions.mod.util.RecipeUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil; import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.client.Minecraft; @@ -35,15 +36,15 @@ public class CrusherRecipeWrapper extends RecipeWrapperWithButton implements IRe @Override public List getInputs(){ - return this.theRecipe.getRecipeInputs(); + return RecipeUtil.getCrusherRecipeInputs(this.theRecipe); } @Override public List getOutputs(){ List list = new ArrayList(); - list.addAll(this.theRecipe.getRecipeOutputOnes()); + list.addAll(RecipeUtil.getCrusherRecipeOutputOnes(this.theRecipe)); - List outputTwos = this.theRecipe.getRecipeOutputTwos(); + List outputTwos = RecipeUtil.getCrusherRecipeOutputTwos(this.theRecipe); if(outputTwos != null && !outputTwos.isEmpty()){ list.addAll(outputTwos); } @@ -65,7 +66,7 @@ public class CrusherRecipeWrapper extends RecipeWrapperWithButton implements IRe public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY){ this.updateButton(minecraft, mouseX, mouseY); - List outputTwos = this.theRecipe.getRecipeOutputTwos(); + List outputTwos = RecipeUtil.getCrusherRecipeOutputTwos(this.theRecipe); if(outputTwos != null && !outputTwos.isEmpty()){ minecraft.fontRendererObj.drawString(this.theRecipe.outputTwoChance+"%", 60, 60, StringUtil.DECIMAL_COLOR_GRAY_TEXT, false); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/jei/reconstructor/ReconstructorRecipeCategory.java b/src/main/java/de/ellpeck/actuallyadditions/mod/jei/reconstructor/ReconstructorRecipeCategory.java index 695f579fa..fb44f6067 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/jei/reconstructor/ReconstructorRecipeCategory.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/jei/reconstructor/ReconstructorRecipeCategory.java @@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.jei.reconstructor; import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks; import de.ellpeck.actuallyadditions.mod.util.AssetUtil; +import de.ellpeck.actuallyadditions.mod.util.RecipeUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil; import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; @@ -66,10 +67,10 @@ public class ReconstructorRecipeCategory implements IRecipeCategory{ ReconstructorRecipeWrapper wrapper = (ReconstructorRecipeWrapper)recipeWrapper; recipeLayout.getItemStacks().init(0, true, 4, 18); - recipeLayout.getItemStacks().set(0, wrapper.theRecipe.getInputs()); + recipeLayout.getItemStacks().set(0, RecipeUtil.getConversionLensInputs(wrapper.theRecipe)); recipeLayout.getItemStacks().init(1, true, 66, 18); - recipeLayout.getItemStacks().set(1, wrapper.theRecipe.getOutputs()); + recipeLayout.getItemStacks().set(1, RecipeUtil.getConversionLensOutputs(wrapper.theRecipe)); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/jei/reconstructor/ReconstructorRecipeWrapper.java b/src/main/java/de/ellpeck/actuallyadditions/mod/jei/reconstructor/ReconstructorRecipeWrapper.java index 2da33022c..d9d564f1f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/jei/reconstructor/ReconstructorRecipeWrapper.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/jei/reconstructor/ReconstructorRecipeWrapper.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.api.recipe.LensConversionRecipe; import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks; import de.ellpeck.actuallyadditions.mod.booklet.BookletUtils; import de.ellpeck.actuallyadditions.mod.jei.RecipeWrapperWithButton; +import de.ellpeck.actuallyadditions.mod.util.RecipeUtil; import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; @@ -34,12 +35,12 @@ public class ReconstructorRecipeWrapper extends RecipeWrapperWithButton implemen @Override public List getInputs(){ - return this.theRecipe.getInputs(); + return RecipeUtil.getConversionLensInputs(this.theRecipe); } @Override public List getOutputs(){ - return this.theRecipe.getOutputs(); + return RecipeUtil.getConversionLensOutputs(this.theRecipe); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java index 8ec7f781b..afbd2871c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java @@ -24,6 +24,7 @@ import de.ellpeck.actuallyadditions.mod.booklet.page.PagePicture; import de.ellpeck.actuallyadditions.mod.booklet.page.PageTextOnly; import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; import de.ellpeck.actuallyadditions.mod.items.lens.LensRecipeHandler; +import de.ellpeck.actuallyadditions.mod.util.RecipeUtil; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.item.EntityItem; @@ -141,7 +142,7 @@ public class MethodHandler implements IMethodHandler{ List recipes = LensRecipeHandler.getRecipesFor(new ItemStack(state.getBlock(), 1, state.getBlock().getMetaFromState(state))); for(LensConversionRecipe recipe : recipes){ if(recipe != null && recipe.type == tile.getLens() && tile.getEnergy() >= recipe.energyUse){ - List outputs = recipe.getOutputs(); + List outputs = RecipeUtil.getConversionLensOutputs(recipe); if(outputs != null && !outputs.isEmpty()){ ItemStack output = outputs.get(0); if(output.getItem() instanceof ItemBlock){ @@ -171,7 +172,7 @@ public class MethodHandler implements IMethodHandler{ List recipes = LensRecipeHandler.getRecipesFor(stack); for(LensConversionRecipe recipe : recipes){ if(recipe != null && recipe.type == tile.getLens() && tile.getEnergy() >= recipe.energyUse){ - List outputs = recipe.getOutputs(); + List outputs = RecipeUtil.getConversionLensOutputs(recipe); if(outputs != null && !outputs.isEmpty()){ ItemStack outputCopy = outputs.get(0).copy(); outputCopy.stackSize = stack.stackSize; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/recipe/CrusherRecipeRegistry.java b/src/main/java/de/ellpeck/actuallyadditions/mod/recipe/CrusherRecipeRegistry.java index 9d9772cb0..3987e6543 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/recipe/CrusherRecipeRegistry.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/recipe/CrusherRecipeRegistry.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe; import de.ellpeck.actuallyadditions.mod.config.values.ConfigStringListValues; import de.ellpeck.actuallyadditions.mod.util.ItemUtil; import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import de.ellpeck.actuallyadditions.mod.util.RecipeUtil; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; @@ -82,12 +83,12 @@ public final class CrusherRecipeRegistry{ public static List getOutputOnes(ItemStack input){ CrusherRecipe recipe = getRecipeFromInput(input); - return recipe == null ? null : recipe.getRecipeOutputOnes(); + return recipe == null ? null : RecipeUtil.getCrusherRecipeOutputOnes(recipe); } public static CrusherRecipe getRecipeFromInput(ItemStack input){ for(CrusherRecipe recipe : ActuallyAdditionsAPI.CRUSHER_RECIPES){ - if(ItemUtil.contains(recipe.getRecipeInputs(), input, true)){ + if(ItemUtil.contains(RecipeUtil.getCrusherRecipeInputs(recipe), input, true)){ return recipe; } } @@ -96,7 +97,7 @@ public final class CrusherRecipeRegistry{ public static List getOutputTwos(ItemStack input){ CrusherRecipe recipe = getRecipeFromInput(input); - return recipe == null ? null : recipe.getRecipeOutputTwos(); + return recipe == null ? null : RecipeUtil.getCrusherRecipeOutputTwos(recipe); } public static int getOutputTwoChance(ItemStack input){ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/util/RecipeUtil.java b/src/main/java/de/ellpeck/actuallyadditions/mod/util/RecipeUtil.java index 084b5d91c..d71a1c804 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/util/RecipeUtil.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/util/RecipeUtil.java @@ -11,11 +11,17 @@ package de.ellpeck.actuallyadditions.mod.util; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; +import de.ellpeck.actuallyadditions.api.lens.LensConversion; import de.ellpeck.actuallyadditions.api.recipe.CrusherRecipe; +import de.ellpeck.actuallyadditions.api.recipe.EmpowererRecipe; import de.ellpeck.actuallyadditions.api.recipe.LensConversionRecipe; +import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; +import net.minecraftforge.oredict.OreDictionary; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; public final class RecipeUtil{ @@ -35,4 +41,48 @@ public final class RecipeUtil{ Object recipe = list.get(list.size()-1); return recipe instanceof IRecipe ? (IRecipe)recipe : null; } + + public static List getCrusherRecipeOutputOnes(CrusherRecipe recipe){ + return doRecipeOrWhatever(recipe.outputOneStack, recipe.outputOne, recipe.outputOneAmount); + } + + public static List getCrusherRecipeOutputTwos(CrusherRecipe recipe){ + return doRecipeOrWhatever(recipe.outputTwoStack, recipe.outputTwo, recipe.outputTwoAmount); + } + + public static List getCrusherRecipeInputs(CrusherRecipe recipe){ + return doRecipeOrWhatever(recipe.inputStack, recipe.input, 1); + } + + public static List getConversionLensInputs(LensConversionRecipe recipe){ + return doRecipeOrWhatever(recipe.inputStack, recipe.input, 1); + } + + public static List getConversionLensOutputs(LensConversionRecipe recipe){ + return doRecipeOrWhatever(recipe.outputStack, recipe.output, 1); + } + + private static List doRecipeOrWhatever(ItemStack stack, String oredict, int amount){ + if(stack != null){ + return Collections.singletonList(stack.copy()); + } + + if(oredict == null || oredict.isEmpty()){ + return null; + } + + List stacks = OreDictionary.getOres(oredict, false); + if(stacks != null && !stacks.isEmpty()){ + List stacksCopy = new ArrayList(); + for(ItemStack aStack : stacks){ + if(aStack != null){ + ItemStack stackCopy = aStack.copy(); + stackCopy.stackSize = amount; + stacksCopy.add(stackCopy); + } + } + return stacksCopy; + } + return null; + } }