diff --git a/BM_src/joshie/alchemicalWizardy/nei/NEIAlchemyRecipeHandler.java b/BM_src/joshie/alchemicalWizardy/nei/NEIAlchemyRecipeHandler.java new file mode 100644 index 00000000..b0d65bfa --- /dev/null +++ b/BM_src/joshie/alchemicalWizardy/nei/NEIAlchemyRecipeHandler.java @@ -0,0 +1,130 @@ +package joshie.alchemicalWizardy.nei; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import WayofTime.alchemicalWizardry.common.alchemy.AlchemyRecipe; +import WayofTime.alchemicalWizardry.common.alchemy.AlchemyRecipeRegistry; +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.TemplateRecipeHandler; + +public class NEIAlchemyRecipeHandler extends TemplateRecipeHandler { + public static ArrayList bloodOrbs; + + public class CachedAlchemyRecipe extends CachedRecipe { + public class BloodOrbs { + public PositionedStack stack; + public BloodOrbs(ItemStack orb) { + this.stack = new PositionedStack(orb, 136, 47, false); + } + } + + ArrayList orbs; + PositionedStack output; + List inputs; + int lp; + + public CachedAlchemyRecipe(AlchemyRecipe recipe) { + List inputs = new ArrayList(); + ItemStack[] stacks = recipe.getRecipe(); + if(stacks.length > 0) + inputs.add(new PositionedStack(stacks[0], 76, 3)); + if(stacks.length > 1) + inputs.add(new PositionedStack(stacks[1], 51, 19)); + if(stacks.length > 2) + inputs.add(new PositionedStack(stacks[2], 101, 19)); + if(stacks.length > 3) + inputs.add(new PositionedStack(stacks[3], 64, 47)); + if(stacks.length > 4) + inputs.add(new PositionedStack(stacks[4], 88, 47)); + this.inputs = inputs; + this.output = new PositionedStack(recipe.getResult(), 76, 25); + this.lp = recipe.getAmountNeeded() * 100; + this.orbs = new ArrayList(); + for(int i = recipe.getOrbLevel(); i < bloodOrbs.size(); i++) { + ItemStack orb = new ItemStack(bloodOrbs.get(i - 1)); + orbs.add(new BloodOrbs(orb)); + } + } + + @Override + public List getIngredients() { + return inputs; + } + + @Override + public PositionedStack getResult() { + return output; + } + + @Override + public PositionedStack getOtherStack() { + return orbs.get((cycleticks/48) % orbs.size()).stack; + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + for(AlchemyRecipe recipe: AlchemyRecipeRegistry.recipes) { + ItemStack output = recipe.getResult(); + if(NEIServerUtils.areStacksSameTypeCrafting(result, recipe.getResult())) { + arecipes.add(new CachedAlchemyRecipe(recipe)); + } + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + for(AlchemyRecipe recipe: AlchemyRecipeRegistry.recipes) { + ItemStack[] stacks = recipe.getRecipe(); + for(ItemStack stack: stacks) { + if(NEIServerUtils.areStacksSameTypeCrafting(stack, ingredient)) { + arecipes.add(new CachedAlchemyRecipe(recipe)); + } + } + + ArrayList orbs = new ArrayList(); + for(int i = recipe.getOrbLevel(); i < bloodOrbs.size(); i++) { + ItemStack orb = new ItemStack(bloodOrbs.get(i - 1)); + if(NEIServerUtils.areStacksSameTypeCrafting(orb, ingredient)) { + arecipes.add(new CachedAlchemyRecipe(recipe)); + } + } + } + } + + @Override + public void drawExtras(int id) { + CachedAlchemyRecipe cache = (CachedAlchemyRecipe) arecipes.get(id); + Minecraft.getMinecraft().fontRenderer.drawString("\u00a77" + cache.lp + "LP", getLPX(cache.lp), 34, 0); + } + + public int getLPX(int lp) { + if(lp < 10) + return 122; + else if (lp < 100) + return 122; + else if (lp < 1000) + return 130; + else if (lp < 10000) + return 127; + else if (lp < 100000) + return 124; + return 122; + } + + @Override + public String getRecipeName() { + return "Alchemic Chemistry Set"; + } + + @Override + public String getGuiTexture() { + return new ResourceLocation("alchemicalwizardry", "gui/nei/alchemy.png").toString(); + } +} diff --git a/BM_src/joshie/alchemicalWizardy/nei/NEIConfig.java b/BM_src/joshie/alchemicalWizardy/nei/NEIConfig.java new file mode 100644 index 00000000..3d2c3726 --- /dev/null +++ b/BM_src/joshie/alchemicalWizardy/nei/NEIConfig.java @@ -0,0 +1,33 @@ +package joshie.alchemicalWizardy.nei; + +import java.util.ArrayList; + +import net.minecraft.item.Item; +import WayofTime.alchemicalWizardry.ModItems; +import codechicken.nei.api.API; +import codechicken.nei.api.IConfigureNEI; + +public class NEIConfig implements IConfigureNEI { + @Override + public void loadConfig() { + API.registerRecipeHandler(new NEIAlchemyRecipeHandler()); + API.registerUsageHandler(new NEIAlchemyRecipeHandler()); + + NEIAlchemyRecipeHandler.bloodOrbs = new ArrayList(); + NEIAlchemyRecipeHandler.bloodOrbs.add(ModItems.weakBloodOrb); + NEIAlchemyRecipeHandler.bloodOrbs.add(ModItems.apprenticeBloodOrb); + NEIAlchemyRecipeHandler.bloodOrbs.add(ModItems.magicianBloodOrb); + NEIAlchemyRecipeHandler.bloodOrbs.add(ModItems.masterBloodOrb); + NEIAlchemyRecipeHandler.bloodOrbs.add(ModItems.archmageBloodOrb); + } + + @Override + public String getName() { + return "Blood Magic NEI"; + } + + @Override + public String getVersion() { + return "1.0"; + } +} diff --git a/resources/assets/alchemicalwizardry/gui/nei/alchemy.png b/resources/assets/alchemicalwizardry/gui/nei/alchemy.png new file mode 100644 index 00000000..70819322 Binary files /dev/null and b/resources/assets/alchemicalwizardry/gui/nei/alchemy.png differ