package cyano.basemetals.init; import cyano.basemetals.BaseMetals; import cyano.basemetals.material.MetalMaterial; import cyano.basemetals.registry.CrusherRecipeRegistry; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.common.ForgeModContainer; import net.minecraftforge.fluids.*; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; import java.util.Arrays; import java.util.List; public abstract class Recipes { private static boolean initDone = false; public static void init(){ if(initDone)return; cyano.basemetals.init.Materials.init(); cyano.basemetals.init.Blocks.init(); cyano.basemetals.init.Items.init(); initPureVanillaCrusherRecipes(); initVanillaRecipes(); initMetalRecipes(); initDone = true; } private static void initPureVanillaCrusherRecipes(){ // see net.minecraftforge.oredict.OreDictionary.initVanillaEntries() for vanilla oreDict names CrusherRecipeRegistry.addNewCrusherRecipe("stone", new ItemStack(Blocks.COBBLESTONE,1)); CrusherRecipeRegistry.addNewCrusherRecipe("cobblestone", new ItemStack(Blocks.GRAVEL,1)); CrusherRecipeRegistry.addNewCrusherRecipe(Blocks.GRAVEL, new ItemStack(Blocks.SAND,1)); CrusherRecipeRegistry.addNewCrusherRecipe("sandstone", new ItemStack(Blocks.SAND,4)); CrusherRecipeRegistry.addNewCrusherRecipe(Blocks.RED_SANDSTONE, new ItemStack(Blocks.SAND,4,1)); CrusherRecipeRegistry.addNewCrusherRecipe(Blocks.GLOWSTONE, new ItemStack(Items.GLOWSTONE_DUST,4)); CrusherRecipeRegistry.addNewCrusherRecipe("oreLapis", new ItemStack(Items.DYE,8,4)); CrusherRecipeRegistry.addNewCrusherRecipe(Blocks.REDSTONE_ORE, new ItemStack(Items.REDSTONE,4)); CrusherRecipeRegistry.addNewCrusherRecipe(Blocks.REDSTONE_BLOCK, new ItemStack(Items.REDSTONE,9)); CrusherRecipeRegistry.addNewCrusherRecipe(Items.REEDS, new ItemStack(Items.SUGAR,2)); CrusherRecipeRegistry.addNewCrusherRecipe(Items.BONE, new ItemStack(Items.DYE,3,15)); CrusherRecipeRegistry.addNewCrusherRecipe(Items.BLAZE_ROD, new ItemStack(Items.BLAZE_POWDER,2)); CrusherRecipeRegistry.addNewCrusherRecipe("oreQuartz", new ItemStack(Items.QUARTZ,2)); CrusherRecipeRegistry.addNewCrusherRecipe("blockQuartz", new ItemStack(Items.QUARTZ,4)); CrusherRecipeRegistry.addNewCrusherRecipe(new ItemStack(Blocks.PRISMARINE,1,0), new ItemStack(Items.PRISMARINE_SHARD,4)); CrusherRecipeRegistry.addNewCrusherRecipe(new ItemStack(Blocks.PRISMARINE,1,1), new ItemStack(Items.PRISMARINE_SHARD,9)); CrusherRecipeRegistry.addNewCrusherRecipe(new ItemStack(Blocks.PRISMARINE,1,2), new ItemStack(Items.PRISMARINE_SHARD,8)); CrusherRecipeRegistry.addNewCrusherRecipe(Blocks.SEA_LANTERN, new ItemStack(Items.PRISMARINE_CRYSTALS,3)); CrusherRecipeRegistry.addNewCrusherRecipe(Blocks.SLIME_BLOCK, new ItemStack(Items.SLIME_BALL,9)); } private static void initVanillaRecipes(){ OreDictionary.registerOre("barsIron", Blocks.IRON_BARS); OreDictionary.registerOre("bars", Blocks.IRON_BARS); OreDictionary.registerOre("doorIron", Items.IRON_DOOR); OreDictionary.registerOre("door", Items.IRON_DOOR); OreDictionary.registerOre("doorWood", Items.OAK_DOOR); OreDictionary.registerOre("doorWood", Items.JUNGLE_DOOR); OreDictionary.registerOre("doorWood", Items.SPRUCE_DOOR); OreDictionary.registerOre("doorWood", Items.DARK_OAK_DOOR); OreDictionary.registerOre("doorWood", Items.BIRCH_DOOR); OreDictionary.registerOre("doorWood", Items.ACACIA_DOOR); OreDictionary.registerOre("door", Items.OAK_DOOR); OreDictionary.registerOre("door", Items.JUNGLE_DOOR); OreDictionary.registerOre("door", Items.SPRUCE_DOOR); OreDictionary.registerOre("door", Items.DARK_OAK_DOOR); OreDictionary.registerOre("door", Items.BIRCH_DOOR); OreDictionary.registerOre("door", Items.ACACIA_DOOR); CrusherRecipeRegistry.addNewCrusherRecipe("oreIron", new ItemStack(cyano.basemetals.init.Items.iron_powder,2)); CrusherRecipeRegistry.addNewCrusherRecipe("blockIron", new ItemStack(cyano.basemetals.init.Items.iron_powder,9)); CrusherRecipeRegistry.addNewCrusherRecipe("ingotIron", new ItemStack(cyano.basemetals.init.Items.iron_powder,1)); CrusherRecipeRegistry.addNewCrusherRecipe("oreGold", new ItemStack(cyano.basemetals.init.Items.gold_powder,2)); CrusherRecipeRegistry.addNewCrusherRecipe("blockGold", new ItemStack(cyano.basemetals.init.Items.gold_powder,9)); CrusherRecipeRegistry.addNewCrusherRecipe("ingotGold", new ItemStack(cyano.basemetals.init.Items.gold_powder,1)); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(cyano.basemetals.init.Items.iron_nugget,9), new ItemStack(Items.IRON_INGOT))); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.IRON_INGOT), "xxx","xxx","xxx",'x',cyano.basemetals.init.Items.iron_nugget)); GameRegistry.addSmelting(cyano.basemetals.init.Items.iron_powder, new ItemStack(Items.IRON_INGOT), 0f); GameRegistry.addSmelting(cyano.basemetals.init.Items.gold_powder, new ItemStack(Items.GOLD_INGOT), 0f); CrusherRecipeRegistry.addNewCrusherRecipe("oreCoal", new ItemStack(cyano.basemetals.init.Items.carbon_powder,2)); CrusherRecipeRegistry.addNewCrusherRecipe("blockCoal", new ItemStack(cyano.basemetals.init.Items.carbon_powder,9)); CrusherRecipeRegistry.addNewCrusherRecipe(new ItemStack(Items.COAL,1,0), new ItemStack(cyano.basemetals.init.Items.carbon_powder,1)); CrusherRecipeRegistry.addNewCrusherRecipe(new ItemStack(Items.COAL,1,1), new ItemStack(cyano.basemetals.init.Items.carbon_powder,1)); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Blocks.COAL_BLOCK), "xxx","xxx","xxx",'x',cyano.basemetals.init.Items.carbon_powder)); } private static void initMetalRecipes(){ List<MetalMaterial> exceptions = Arrays.asList(Materials.vanilla_iron,Materials.vanilla_gold,Materials.vanilla_diamond,Materials.vanilla_stone,Materials.vanilla_wood); if(!BaseMetals.disableAllHammers) { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cyano.basemetals.init.Items.wood_crackhammer), "x", "/", "/", 'x', "logWood", '/', "stickWood")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cyano.basemetals.init.Items.stone_crackhammer), "x", "/", "/", 'x', net.minecraft.init.Blocks.STONEBRICK, '/', "stickWood")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cyano.basemetals.init.Items.iron_crackhammer), "x", "/", "/", 'x', "blockIron", '/', "stickWood")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cyano.basemetals.init.Items.gold_crackhammer), "x", "/", "/", 'x', "blockGold", '/', "stickWood")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cyano.basemetals.init.Items.diamond_crackhammer), "x", "/", "/", 'x', "blockDiamond", '/', "stickWood")); } GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cyano.basemetals.init.Blocks.iron_plate,3), "xxx",'x',"ingotIron")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cyano.basemetals.init.Blocks.gold_plate,3), "xxx",'x',"ingotGold")); // Iron items Item v_rod = cyano.basemetals.init.Items.iron_rod; Item v_nugget = cyano.basemetals.init.Items.iron_nugget; Item v_gear = cyano.basemetals.init.Items.iron_gear; Block v_bars = Blocks.IRON_BARS; String v_oreDictName = "Iron"; GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(v_rod,4), "x","x",'x',"ingot"+v_oreDictName)); OreDictionary.registerOre("stick"+v_oreDictName,v_rod); OreDictionary.registerOre("rod"+v_oreDictName,v_rod); OreDictionary.registerOre("rod",v_rod); GameRegistry.addSmelting(v_rod, new ItemStack(v_nugget,4), 0); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(v_bars,4), "xxx",'x',"rod"+v_oreDictName)); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(v_gear,4), " x ","x/x"," x ",'x',"ingot"+v_oreDictName,'/',"rod"+v_oreDictName)); OreDictionary.registerOre("gear"+v_oreDictName,v_gear); OreDictionary.registerOre("gear",v_gear); // Gold items v_rod = cyano.basemetals.init.Items.gold_rod; v_nugget = Items.GOLD_NUGGET; v_oreDictName = "Gold"; GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(v_rod,4), "x","x",'x',"ingot"+v_oreDictName)); OreDictionary.registerOre("stick"+v_oreDictName,v_rod); OreDictionary.registerOre("rod"+v_oreDictName,v_rod); OreDictionary.registerOre("rod",v_rod); GameRegistry.addSmelting(v_rod, new ItemStack(v_nugget,4), 0); for(MetalMaterial metal : Materials.getAllMetals()){ if(exceptions.contains(metal))continue; String baseName = metal.getName()+"_"; String oreDictName = metal.getCapitalizedName(); Item axe = cyano.basemetals.init.Items.getItemByName(baseName+"axe"); Item blend = cyano.basemetals.init.Items.getItemByName(baseName+"blend"); Item boots = cyano.basemetals.init.Items.getItemByName(baseName+"boots"); Item chestplate = cyano.basemetals.init.Items.getItemByName(baseName+"chestplate"); Item crackhammer = cyano.basemetals.init.Items.getItemByName(baseName+"crackhammer"); Item door = cyano.basemetals.init.Items.getItemByName(baseName+"door_item"); Item helmet = cyano.basemetals.init.Items.getItemByName(baseName+"helmet"); Item hoe = cyano.basemetals.init.Items.getItemByName(baseName+"hoe"); Item ingot = cyano.basemetals.init.Items.getItemByName(baseName+"ingot"); Item leggings = cyano.basemetals.init.Items.getItemByName(baseName+"leggings"); Item nugget = cyano.basemetals.init.Items.getItemByName(baseName+"nugget"); Item pickaxe = cyano.basemetals.init.Items.getItemByName(baseName+"pickaxe"); Item powder = cyano.basemetals.init.Items.getItemByName(baseName+"powder"); Item shovel = cyano.basemetals.init.Items.getItemByName(baseName+"shovel"); Item sword = cyano.basemetals.init.Items.getItemByName(baseName+"sword"); Item rod = cyano.basemetals.init.Items.getItemByName(baseName+"rod"); Item gear = cyano.basemetals.init.Items.getItemByName(baseName+"gear"); Block bars = cyano.basemetals.init.Blocks.getBlockByName(baseName+"bars"); Block block = cyano.basemetals.init.Blocks.getBlockByName(baseName+"block"); Block plate = cyano.basemetals.init.Blocks.getBlockByName(baseName+"plate"); Block ore = cyano.basemetals.init.Blocks.getBlockByName(baseName+"ore"); Block trapdoor = cyano.basemetals.init.Blocks.getBlockByName(baseName+"trapdoor"); // NOTE: smelting XP is based on output item, not input item // ingot-related recipes if(ore != null && powder != null){ CrusherRecipeRegistry.addNewCrusherRecipe("ore"+oreDictName,new ItemStack(powder,2)); } if(ore != null && ingot != null){ GameRegistry.addSmelting(ore, new ItemStack(ingot,1), metal.getOreSmeltXP()); } if(ingot != null && powder != null){ CrusherRecipeRegistry.addNewCrusherRecipe("ingot"+oreDictName,new ItemStack(powder,1)); GameRegistry.addSmelting(powder, new ItemStack(ingot,1), metal.getOreSmeltXP()); } if(ingot != null && blend != null){ GameRegistry.addSmelting(blend, new ItemStack(ingot,1), metal.getOreSmeltXP()); } if(ingot != null && nugget != null){ GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(nugget,9), new ItemStack(ingot))); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ingot), "xxx","xxx","xxx",'x',"nugget"+oreDictName)); } if(ingot != null && block != null){ GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ingot,9), new ItemStack(block))); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(block), "xxx","xxx","xxx",'x',"ingot"+oreDictName)); } if(ingot != null && plate != null){ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(plate,3), "xxx",'x',"ingot"+oreDictName)); GameRegistry.addSmelting(plate, new ItemStack(ingot,1), metal.getOreSmeltXP()); } if(block != null && powder != null){ CrusherRecipeRegistry.addNewCrusherRecipe("block"+oreDictName, new ItemStack(powder,9)); } if(ingot != null && bars != null){ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(bars,16), "xxx","xxx",'x',"ingot"+oreDictName)); OreDictionary.registerOre("bars", bars); } if(ingot != null && rod != null){ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(rod,4), "x","x",'x',"ingot"+oreDictName)); OreDictionary.registerOre("stick"+oreDictName,rod); OreDictionary.registerOre("rod"+oreDictName,rod); OreDictionary.registerOre("rod",rod); } if(nugget != null && rod != null){ GameRegistry.addSmelting(rod, new ItemStack(nugget,4), 0); } if(rod != null && bars != null){ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(bars,4), "xxx",'x',"rod"+oreDictName)); } if(rod != null && ingot != null && gear != null){ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(gear,4), " x ","x/x"," x ",'x',"ingot"+oreDictName,'/',"rod"+oreDictName)); OreDictionary.registerOre("gear"+oreDictName,gear); OreDictionary.registerOre("gear",gear); if(metal == Materials.steel)OreDictionary.registerOre("sprocket",gear); } if(ingot != null && door != null){ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(door,3), "xx","xx","xx",'x',"ingot"+oreDictName)); OreDictionary.registerOre("door", door); } if(ingot != null && trapdoor != null){ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(trapdoor), "xx","xx",'x',"ingot"+oreDictName)); OreDictionary.registerOre("trapdoor", trapdoor); } // armor and tools if(ingot != null && boots != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(boots), "x x","x x",'x',"ingot"+oreDictName)); if(ingot != null && helmet != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(helmet), "xxx","x x",'x',"ingot"+oreDictName)); if(ingot != null && chestplate != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(chestplate), "x x","xxx","xxx",'x',"ingot"+oreDictName)); if(ingot != null && leggings != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(leggings), "xxx","x x","x x",'x',"ingot"+oreDictName)); if(ingot != null && axe != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(axe), "xx","x/"," /",'x',"ingot"+oreDictName,'/',"stickWood")); if(ingot != null && axe != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(axe), "xx","/x","/ ",'x',"ingot"+oreDictName,'/',"stickWood")); if(block != null && crackhammer != null && (!BaseMetals.disableAllHammers)) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(crackhammer), "x","/","/",'x',"block"+oreDictName,'/',"stickWood")); if(ingot != null && hoe != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(hoe), "xx"," /"," /",'x',"ingot"+oreDictName,'/',"stickWood")); if(ingot != null && hoe != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(hoe), "xx","/ ","/ ",'x',"ingot"+oreDictName,'/',"stickWood")); if(ingot != null && pickaxe != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(pickaxe), "xxx"," / "," / ",'x',"ingot"+oreDictName,'/',"stickWood")); if(ingot != null && shovel != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(shovel), "x","/","/",'x',"ingot"+oreDictName,'/',"stickWood")); if(ingot != null && sword != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(sword), "x","x","/",'x',"ingot"+oreDictName,'/',"stickWood")); // misc recipes if(ingot != null && pickaxe != null) GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.BUCKET), "x x"," x ",'x',"ingot"+oreDictName)); } // alloy blends GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(cyano.basemetals.init.Items.brass_blend,3), "dustCopper","dustCopper","dustZinc")); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(cyano.basemetals.init.Items.bronze_blend,4), "dustCopper","dustCopper","dustCopper","dustTin")); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(cyano.basemetals.init.Items.steel_blend,8), "dustIron", "dustIron", "dustIron", "dustIron", "dustIron", "dustIron", "dustIron", "dustIron", "dustCarbon")); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(cyano.basemetals.init.Items.steel_blend,8), "dustIron", "dustIron", "dustIron", "dustIron", "dustIron", "dustIron", "dustIron", "dustIron", "dustCoal")); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(cyano.basemetals.init.Items.invar_blend,3), "dustIron","dustIron","dustNickel")); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(cyano.basemetals.init.Items.cupronickel_blend,4), "dustCopper","dustCopper","dustCopper","dustNickel")); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(cyano.basemetals.init.Items.electrum_blend,2), "dustSilver","dustGold")); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(cyano.basemetals.init.Items.mithril_blend,3), "dustSilver","dustSilver","dustColdiron","ingotMercury")); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(cyano.basemetals.init.Items.aquarium_blend,3), "dustCopper","dustCopper","dustZinc", Items.PRISMARINE_CRYSTALS, Items.PRISMARINE_CRYSTALS, Items.PRISMARINE_CRYSTALS)); if(FluidRegistry.isUniversalBucketEnabled()) { UniversalBucket universal_bucket = ForgeModContainer.getInstance().universalBucket; ItemStack bucketMercury = new ItemStack(universal_bucket, 1, 0); universal_bucket.fill(bucketMercury, new FluidStack(Fluids.fluidMercury, universal_bucket.getCapacity()), true); GameRegistry.addRecipe(new ShapelessOreRecipe(bucketMercury, Items.BUCKET, "ingotMercury", "ingotMercury", "ingotMercury", "ingotMercury", "ingotMercury", "ingotMercury", "ingotMercury", "ingotMercury")); } // potions // TODO: potion recipes // misc recipes GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Blocks.ACTIVATOR_RAIL,6), "x/x","x*x","x/x",'x',"ingotSteel",'/',"stickWood",'*',Blocks.REDSTONE_TORCH)); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Blocks.DETECTOR_RAIL,6), "x x","x-x","x*x",'x',"ingotSteel",'/',"stickWood",'-',Blocks.STONE_PRESSURE_PLATE, '*',"dustRedstone")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Blocks.RAIL,16), "x x","x/x","x x",'x',"ingotSteel",'/',"stickWood")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Blocks.HEAVY_WEIGHTED_PRESSURE_PLATE), "xx",'x',"ingotSteel")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Blocks.TRIPWIRE_HOOK), "x ","/ ","w ",'x',"ingotSteel",'/',"stickWood",'w',"plankWood")); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(Items.FLINT_AND_STEEL), "ingotSteel",Items.FLINT)); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Blocks.HOPPER), "x x","x/x"," x ",'x',"ingotSteel",'/',"chestWood")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.MINECART), "x x","xxx",'x',"ingotSteel")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Blocks.PISTON), "www","sxs","s*s",'x',"ingotSteel",'w',"plankWood",'s',"cobblestone",'*',"dustRedstone")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.SHEARS), "x "," x",'x',"ingotSteel")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.SHEARS), " x","x ",'x',"ingotSteel")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.SHIELD), "wxw","www", " w ",'w',"plankWood",'x',"ingotSteel")); CrusherRecipeRegistry.addNewCrusherRecipe("oreMercury",new ItemStack(cyano.basemetals.init.Items.mercury_powder,2)); GameRegistry.addSmelting(cyano.basemetals.init.Items.mercury_powder, new ItemStack(cyano.basemetals.init.Items.mercury_ingot,1), 0); GameRegistry.addSmelting(cyano.basemetals.init.Blocks.mercury_ore, new ItemStack(cyano.basemetals.init.Items.mercury_ingot,1), 1); // new recipes using rods and gears GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Blocks.LEVER,1), "x","y",'x',"rod",'y', "cobblestone")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cyano.basemetals.init.Blocks.human_detector,1), "xx","yy",'x',"ingotBrick",'y', "gear")); } }