package com.pahimar.ee3.init; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Map; import com.pahimar.ee3.handler.EquivalencyHandler; import com.pahimar.ee3.util.ItemStackUtils; import com.pahimar.ee3.util.RecipeHelper; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; public class RecipesTransmutationStone { private static ItemStack philStone; private static ItemStack miniumStone; public static List transmutationStones; private static ItemStack anyCoal; private static ItemStack anyWood; private static ItemStack anyPlank; private static ItemStack anySandStone; private static ItemStack dyeBoneMeal; public static void init() { initEquivalencyList(); for (ItemStack stone : RecipesTransmutationStone.transmutationStones) { initTransmutationRecipes(stone); initEquivalenceRecipes(stone); initDestructorRecipes(stone); initPortableSmeltingRecipes(stone); } } public static void initTransmutationRecipes(ItemStack transmutationStone) { RecipeHelper.addRecipe(Items.flint, transmutationStone, Blocks.cobblestone, Blocks.cobblestone, Blocks.cobblestone, Blocks.cobblestone); RecipeHelper.addRecipe(new ItemStack(Blocks.cobblestone, 4), transmutationStone, Items.flint); RecipeHelper.addRecipe(Blocks.gravel, transmutationStone, Blocks.dirt, Blocks.dirt, Blocks.dirt, Blocks.dirt); RecipeHelper.addRecipe(new ItemStack(Blocks.dirt, 4), transmutationStone, Blocks.gravel); RecipeHelper.addRecipe(new ItemStack(Blocks.sand, 4), transmutationStone, RecipesTransmutationStone.anySandStone); RecipeHelper.addRecipe(Blocks.planks, transmutationStone, Items.stick, Items.stick); RecipeHelper.addRecipe(Blocks.log, transmutationStone, RecipesTransmutationStone.anyPlank, RecipesTransmutationStone.anyPlank, RecipesTransmutationStone.anyPlank, RecipesTransmutationStone.anyPlank); RecipeHelper.addRecipe(Items.clay_ball, transmutationStone, Blocks.gravel, Blocks.gravel, Blocks.gravel, Blocks.gravel); RecipeHelper.addRecipe(Items.clay_ball, transmutationStone, RecipesTransmutationStone.anySandStone, RecipesTransmutationStone.anySandStone, RecipesTransmutationStone.anySandStone, RecipesTransmutationStone.anySandStone); RecipeHelper.addRecipe(Items.clay_ball, transmutationStone, Items.flint, Items.flint, Items.flint, Items.flint); RecipeHelper.addRecipe(new ItemStack(Blocks.gravel, 4), transmutationStone, Items.clay_ball); RecipeHelper.addRecipe(Blocks.obsidian, transmutationStone, RecipesTransmutationStone.anyWood, RecipesTransmutationStone.anyWood); RecipeHelper.addRecipe(new ItemStack(Blocks.log, 2), transmutationStone, Blocks.obsidian); RecipeHelper.addRecipe(new ItemStack(Items.clay_ball, 4), transmutationStone, Blocks.clay); RecipeHelper.addRecipe(Items.iron_ingot, transmutationStone, Blocks.obsidian, Blocks.obsidian, Blocks.obsidian, Blocks.obsidian); RecipeHelper.addRecipe(Items.iron_ingot, transmutationStone, Blocks.clay, Blocks.clay, Blocks.clay, Blocks.clay); RecipeHelper.addRecipe(new ItemStack(Blocks.clay, 4), transmutationStone, Items.iron_ingot); RecipeHelper.addRecipe(Items.gold_ingot, transmutationStone, Items.iron_ingot, Items.iron_ingot, Items.iron_ingot, Items.iron_ingot, Items.iron_ingot, Items.iron_ingot, Items.iron_ingot, Items.iron_ingot); RecipeHelper.addRecipe(new ItemStack(Items.iron_ingot, 8), transmutationStone, Items.gold_ingot); RecipeHelper.addRecipe(Items.diamond, transmutationStone, Items.gold_ingot, Items.gold_ingot, Items.gold_ingot, Items.gold_ingot); RecipeHelper.addRecipe(new ItemStack(Items.gold_ingot, 4), transmutationStone, Items.diamond); RecipeHelper.addRecipe(Blocks.gold_block, transmutationStone, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block); RecipeHelper.addRecipe(new ItemStack(Blocks.iron_block, 8), transmutationStone, Blocks.gold_block); RecipeHelper.addRecipe(Blocks.diamond_block, transmutationStone, Blocks.gold_block, Blocks.gold_block, Blocks.gold_block, Blocks.gold_block); RecipeHelper.addRecipe(new ItemStack(Blocks.gold_block, 4), transmutationStone, Blocks.diamond_block); RecipeHelper.addRecipe(Items.ender_pearl, transmutationStone, Items.iron_ingot, Items.iron_ingot, Items.iron_ingot, Items.iron_ingot); RecipeHelper.addRecipe(new ItemStack(Items.iron_ingot, 4), transmutationStone, Items.ender_pearl); } public static void initEquivalenceRecipes(ItemStack stone) { for (ArrayList itemStackList : EquivalencyHandler.instance().getAllLists()) { ItemStack[] currentList = new ItemStack[itemStackList.size()]; currentList = itemStackList.toArray(currentList); for (int i = 0; i < currentList.length; ++i) { int outputI = (i == currentList.length - 1) ? 0 : (i + 1); RecipeHelper.addRecipe(currentList[outputI], stone, ItemStackUtils.convertSingleStackToPluralStacks(currentList[i])); } } } public static void initReconstructiveRecipes(ItemStack stone) { RecipeHelper.addRecipe(Items.bone, stone, RecipesTransmutationStone.dyeBoneMeal, RecipesTransmutationStone.dyeBoneMeal, RecipesTransmutationStone.dyeBoneMeal); RecipeHelper.addRecipe(Items.blaze_rod, stone, Items.blaze_powder, Items.blaze_powder); } public static void initDestructorRecipes(ItemStack stone) { RecipeHelper.addRecipe(Blocks.cobblestone, stone, Blocks.stone); RecipeHelper.addRecipe(Blocks.sand, stone, Blocks.glass); RecipeHelper.addRecipe(new ItemStack(Items.glowstone_dust, 4), stone, Blocks.glowstone); RecipeHelper.addRecipe(new ItemStack(Items.brick, 4), stone, Blocks.brick_block); } public static void initPortableSmeltingRecipes(ItemStack stone) { Map furnaceMap = FurnaceRecipes.smelting().getSmeltingList(); Iterator iterFurnaceKeyMap = furnaceMap.keySet().iterator(); while (iterFurnaceKeyMap.hasNext()) { ItemStack furnaceMapKey = iterFurnaceKeyMap.next(); RecipeHelper.addSmeltingRecipe(furnaceMapKey, stone, RecipesTransmutationStone.anyCoal); } } protected static void initEquivalencyList() { EquivalencyHandler.instance().addObjects(Blocks.sand, Blocks.dirt, Blocks.cobblestone, Blocks.grass); EquivalencyHandler.instance().addObjects(Blocks.yellow_flower, Blocks.red_flower); EquivalencyHandler.instance().addObjects(Blocks.red_mushroom, Blocks.brown_mushroom); EquivalencyHandler.instance().addObjects(Items.pumpkin_seeds, Items.melon_seeds); EquivalencyHandler.instance().addObjects(Blocks.pumpkin, Blocks.melon_block); EquivalencyHandler.instance().addObjects(Blocks.spruce_stairs, Blocks.birch_stairs, Blocks.jungle_stairs); EquivalencyHandler.instance().addObjects(new ItemStack(Items.paper, 3), new ItemStack(Items.reeds, 3)); EquivalencyHandler.instance().addObjects(new ItemStack(Items.flint, 2), new ItemStack(Blocks.gravel, 2), new ItemStack(Blocks.sandstone, 2, 0), new ItemStack(Blocks.sandstone, 2, 1), new ItemStack(Blocks.sandstone, 2, 2)); EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Blocks.planks, 4)); EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Blocks.log, 4)); EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Blocks.wooden_slab, 4)); EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Blocks.sapling, 4)); EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Blocks.leaves, 4)); EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Blocks.tallgrass, 3)); EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Blocks.wool, 16)); EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Blocks.stonebrick, 4)); EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Items.dye, 16, 3, 4, 15)); } static { RecipesTransmutationStone.philStone = new ItemStack(ModItems.stonePhilosophers, 1, 32767); RecipesTransmutationStone.miniumStone = new ItemStack(ModItems.stoneMinium, 1, 32767); RecipesTransmutationStone.transmutationStones = Arrays.asList(RecipesTransmutationStone.miniumStone, RecipesTransmutationStone.philStone); RecipesTransmutationStone.anyCoal = new ItemStack(Items.coal, 1, 32767); RecipesTransmutationStone.anyWood = new ItemStack(Blocks.log, 1, 32767); RecipesTransmutationStone.anyPlank = new ItemStack(Blocks.planks, 1, 32767); RecipesTransmutationStone.anySandStone = new ItemStack(Blocks.sandstone, 1, 32767); RecipesTransmutationStone.dyeBoneMeal = new ItemStack(Items.dye, 1, 15); } }