package com.hbm.inventory; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; public class CyclotronRecipes { private static HashMap lithium = new HashMap(); private static HashMap beryllium = new HashMap(); private static HashMap carbon = new HashMap(); private static HashMap copper = new HashMap(); private static HashMap plutonium = new HashMap(); private static HashMap liAmat = new HashMap(); private static HashMap beAmat = new HashMap(); private static HashMap caAmat = new HashMap(); private static HashMap coAmat = new HashMap(); private static HashMap plAmat = new HashMap(); public static void register() { /// LITHIUM START /// int liA = 50; makeRecipe(lithium, liAmat, "dustNetherQuartz", new ItemStack(ModItems.powder_fire), liA); makeRecipe(lithium, liAmat, "dustPhosphorus", new ItemStack(ModItems.sulfur), liA); makeRecipe(lithium, liAmat, "dustIron", new ItemStack(ModItems.powder_cobalt), liA); makeRecipe(lithium, liAmat, "dustGold", new ItemStack(ModItems.nugget_mercury), liA); makeRecipe(lithium, liAmat, "dustPolonium", new ItemStack(ModItems.powder_astatine), liA); makeRecipe(lithium, liAmat, "dustLanthanium", new ItemStack(ModItems.powder_cerium), liA); makeRecipe(lithium, liAmat, "dustActinium", new ItemStack(ModItems.powder_thorium), liA); makeRecipe(lithium, liAmat, "dustUranium", new ItemStack(ModItems.powder_neptunium), liA); makeRecipe(lithium, liAmat, "dustNeptunium", new ItemStack(ModItems.powder_plutonium), liA); makeRecipe(lithium, liAmat, new ComparableStack(ModItems.powder_reiium), new ItemStack(ModItems.powder_weidanium), liA); /// LITHIUM END /// /// BERYLLIUM START /// int beA = 25; makeRecipe(beryllium, beAmat, "dustNetherQuartz", new ItemStack(ModItems.sulfur), beA); makeRecipe(beryllium, beAmat, "dustTitanium", new ItemStack(ModItems.powder_iron), beA); makeRecipe(beryllium, beAmat, "dustCobalt", new ItemStack(ModItems.powder_copper), beA); makeRecipe(beryllium, beAmat, new ComparableStack(ModItems.powder_strontium), new ItemStack(ModItems.powder_niobium), beA); makeRecipe(beryllium, beAmat, new ComparableStack(ModItems.powder_cerium), new ItemStack(ModItems.powder_neodymium), beA); makeRecipe(beryllium, beAmat, "dustThorium", new ItemStack(ModItems.powder_uranium), beA); makeRecipe(beryllium, beAmat, new ComparableStack(ModItems.powder_weidanium), new ItemStack(ModItems.powder_australium), beA); /// BERYLLIUM END /// /// CARBON START /// int caA = 10; makeRecipe(carbon, caAmat, "dustSulfur", new ItemStack(ModItems.powder_titanium), caA); makeRecipe(carbon, caAmat, "dustTitanium", new ItemStack(ModItems.powder_cobalt), caA); makeRecipe(carbon, caAmat, new ComparableStack(ModItems.powder_caesium), new ItemStack(ModItems.powder_lanthanium), caA); makeRecipe(carbon, caAmat, new ComparableStack(ModItems.powder_neodymium), new ItemStack(ModItems.powder_gold), caA); makeRecipe(carbon, caAmat, new ComparableStack(ModItems.nugget_mercury), new ItemStack(ModItems.powder_polonium), caA); makeRecipe(carbon, caAmat, new ComparableStack(ModItems.powder_astatine), new ItemStack(ModItems.powder_actinium), caA); makeRecipe(carbon, caAmat, new ComparableStack(ModItems.powder_australium), new ItemStack(ModItems.powder_verticium), caA); /// CARBON END /// /// COPPER START /// int coA = 15; makeRecipe(copper, coAmat, "dustBeryllium", new ItemStack(ModItems.powder_quartz), coA); makeRecipe(copper, coAmat, "dustCoal", new ItemStack(ModItems.powder_bromine), coA); makeRecipe(copper, coAmat, "dustTitanium", new ItemStack(ModItems.powder_strontium), coA); makeRecipe(copper, coAmat, "dustIron", new ItemStack(ModItems.powder_niobium), coA); makeRecipe(copper, coAmat, new ComparableStack(ModItems.powder_bromine), new ItemStack(ModItems.powder_iodine), coA); makeRecipe(copper, coAmat, new ComparableStack(ModItems.powder_strontium), new ItemStack(ModItems.powder_neodymium), coA); makeRecipe(copper, coAmat, new ComparableStack(ModItems.powder_niobium), new ItemStack(ModItems.powder_caesium), coA); makeRecipe(copper, coAmat, new ComparableStack(ModItems.powder_iodine), new ItemStack(ModItems.powder_polonium), coA); makeRecipe(copper, coAmat, new ComparableStack(ModItems.powder_caesium), new ItemStack(ModItems.powder_actinium), coA); makeRecipe(copper, coAmat, "dustGold", new ItemStack(ModItems.powder_uranium), coA); makeRecipe(copper, coAmat, new ComparableStack(ModItems.powder_verticium), new ItemStack(ModItems.powder_unobtainium), coA); /// COPPER END /// /// PLUTONIUM START /// int plA = 100; makeRecipe(plutonium, plAmat, "dustPhosphorus", new ItemStack(ModItems.powder_tennessine), plA); makeRecipe(plutonium, plAmat, "dustPlutonium", new ItemStack(ModItems.powder_tennessine), plA); makeRecipe(plutonium, plAmat, new ComparableStack(ModItems.powder_tennessine), new ItemStack(ModItems.powder_reiium), plA); makeRecipe(plutonium, plAmat, new ComparableStack(ModItems.pellet_charged), new ItemStack(ModItems.nugget_schrabidium), 200); makeRecipe(plutonium, plAmat, new ComparableStack(ModItems.powder_unobtainium), new ItemStack(ModItems.powder_daffergon), plA); makeRecipe(plutonium, plAmat, new ComparableStack(ModItems.cell_antimatter), new ItemStack(ModItems.cell_anti_schrabidium), 0); /// PLUTONIUM END /// ///TODO: fictional elements } private static void makeRecipe(HashMap map, HashMap aMap, Object in, ItemStack out, int amat) { map.put(in, out); aMap.put(in, amat); } public static Object[] getOutput(ItemStack stack, ItemStack box) { if(stack == null || stack.getItem() == null || box == null) return null; HashMap pool = null; HashMap aPool = null; if(box.getItem() == ModItems.part_lithium) { pool = lithium; aPool = liAmat; } else if(box.getItem() == ModItems.part_beryllium) { pool = beryllium; aPool = beAmat; } else if(box.getItem() == ModItems.part_carbon) { pool = carbon; aPool = caAmat; } else if(box.getItem() == ModItems.part_copper) { pool = copper; aPool = coAmat; } else if(box.getItem() == ModItems.part_plutonium) { pool = plutonium; aPool = plAmat; } if(pool == null) return null; ComparableStack comp = new ComparableStack(stack.getItem(), 1, stack.getItemDamage()); if(pool.containsKey(comp)) return new Object[] {pool.get(comp).copy(), aPool.get(comp)}; String[] dictKeys = comp.getDictKeys(); for(String key : dictKeys) { if(pool.containsKey(key)) return new Object[] {pool.get(key).copy(), aPool.get(key)}; } return null; } public static Map getRecipes() { Map recipes = new HashMap(); addRecipes(recipes, lithium, ModItems.part_lithium); addRecipes(recipes, beryllium, ModItems.part_beryllium); addRecipes(recipes, carbon, ModItems.part_carbon); addRecipes(recipes, copper, ModItems.part_copper); addRecipes(recipes, plutonium, ModItems.part_plutonium); return recipes; } private static void addRecipes(Map recipes, HashMap map, Item part) { for(Entry entry : map.entrySet()) { if(entry.getKey() instanceof ComparableStack) { recipes.put(new ItemStack[] { new ItemStack(part), ((ComparableStack) entry.getKey()).toStack() }, entry.getValue()); } else if(entry.getKey() instanceof String) { List ores = OreDictionary.getOres((String) entry.getKey()); for(ItemStack ore : ores) { recipes.put(new ItemStack[] { new ItemStack(part), ore }, entry.getValue()); } } } } }