package blusunrize.immersiveengineering.common;
import blusunrize.immersiveengineering.ImmersiveEngineering;
import blusunrize.immersiveengineering.api.ApiUtils;
import blusunrize.immersiveengineering.api.IEApi;
import blusunrize.immersiveengineering.api.Lib;
import blusunrize.immersiveengineering.api.crafting.ArcFurnaceRecipe;
import blusunrize.immersiveengineering.api.crafting.BlueprintCraftingRecipe;
import blusunrize.immersiveengineering.api.crafting.CrusherRecipe;
import blusunrize.immersiveengineering.api.crafting.MetalPressRecipe;
import blusunrize.immersiveengineering.api.tool.BulletHandler;
import blusunrize.immersiveengineering.api.tool.ConveyorHandler;
import blusunrize.immersiveengineering.common.Config.IEConfig;
import blusunrize.immersiveengineering.common.blocks.cloth.BlockTypes_ClothDevice;
import blusunrize.immersiveengineering.common.blocks.metal.*;
import blusunrize.immersiveengineering.common.blocks.stone.BlockTypes_StoneDecoration;
import blusunrize.immersiveengineering.common.blocks.wooden.BlockTypes_WoodenDecoration;
import blusunrize.immersiveengineering.common.blocks.wooden.BlockTypes_WoodenDevice0;
import blusunrize.immersiveengineering.common.blocks.wooden.BlockTypes_WoodenDevice1;
import blusunrize.immersiveengineering.common.crafting.*;
import blusunrize.immersiveengineering.common.items.ItemEngineersBlueprint;
import blusunrize.immersiveengineering.common.util.ItemNBTHelper;
import blusunrize.immersiveengineering.common.util.Utils;
import com.google.common.collect.ArrayListMultimap;
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.minecraft.item.crafting.FurnaceRecipes;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.RecipeSorter;
import net.minecraftforge.oredict.RecipeSorter.Category;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
public class IERecipes
{
public static void initCraftingRecipes()
{
RecipeSorter.register(ImmersiveEngineering.MODID+":shapedIngredient", RecipeShapedIngredient.class, Category.SHAPED, "after:forge:shapedore");
RecipeSorter.register(ImmersiveEngineering.MODID+":shapelessIngredient", RecipeShapelessIngredient.class, Category.SHAPELESS, "after:forge:shapedore");
RecipeSorter.register(ImmersiveEngineering.MODID+":banners", RecipeBannerAdvanced.class, Category.SHAPELESS, "after:forge:shapelessore");
RecipeSorter.register(ImmersiveEngineering.MODID+":RGBColour", RecipeRGBColouration.class, Category.SHAPELESS, "after:forge:shapelessore");
GameRegistry.addRecipe(new RecipeBannerAdvanced());
ItemStack copperCoil = new ItemStack(IEContent.blockMetalDecoration0,1,BlockTypes_MetalDecoration0.COIL_LV.getMeta());
ItemStack electrumCoil = new ItemStack(IEContent.blockMetalDecoration0,1,BlockTypes_MetalDecoration0.COIL_MV.getMeta());
ItemStack hvCoil = new ItemStack(IEContent.blockMetalDecoration0,1,BlockTypes_MetalDecoration0.COIL_HV.getMeta());
ItemStack componentIron = new ItemStack(IEContent.itemMaterial,1,8);
ItemStack componentSteel = new ItemStack(IEContent.itemMaterial,1,9);
ItemStack woodenGrip = new ItemStack(IEContent.itemMaterial,1,13);
String[] woodenSticks = new String[]{"stickWood", "stickTreatedWood"};
String[] metalSticks = new String[]{"stickIron", "stickAluminum", "stickSteel"};
ItemStack[] cutters = new ItemStack[]{new ItemStack(IEContent.itemTool, 1, 1), new ItemStack(Items.SHEARS, 1, OreDictionary.WILDCARD_VALUE)};
ItemStack baseConveyor = ConveyorHandler.getConveyorStack(ImmersiveEngineering.MODID + ":conveyor");
addOredictRecipe(new ItemStack(IEContent.itemMaterial,4,0), "W","W", 'W',"plankTreatedWood");
addOredictRecipe(new ItemStack(IEContent.itemMaterial,4,1), "I","I", 'I',"ingotIron");
addOredictRecipe(new ItemStack(IEContent.itemMaterial,4,2), "I","I", 'I',"ingotSteel");
addOredictRecipe(new ItemStack(IEContent.itemMaterial,4,3), "I","I", 'I',"ingotAluminum");
addShapelessOredictRecipe(new ItemStack(Items.STRING), "fiberHemp","fiberHemp","fiberHemp");
addOredictRecipe(new ItemStack(IEContent.itemMaterial,1,5), "HHH","HSH","HHH", 'H',"fiberHemp", 'S',"stickWood");
addOredictRecipe(componentIron, "I I"," C ","I I", 'I',"ingotIron",'C',"ingotCopper");
addOredictRecipe(componentSteel, "I I"," C ","I I", 'I',"ingotSteel",'C',"ingotCopper");
addOredictRecipe(new ItemStack(IEContent.itemMaterial,1,10), " S ","SBS","BSB", 'B',"plankTreatedWood", 'S',"stickTreatedWood");
addOredictRecipe(new ItemStack(IEContent.itemMaterial,1,11), "BB ","SSB","SS ", 'B',"plankTreatedWood", 'S',"stickTreatedWood");
addShapelessOredictRecipe(new ItemStack(IEContent.itemMaterial,1,12), new ItemStack(IEContent.itemMaterial,1,11),"fabricHemp","fabricHemp","fabricHemp","fabricHemp");
addOredictRecipe(new ItemStack(IEContent.itemMaterial,1,13), "SS","IS","SS", 'I',"ingotCopper",'S',"stickTreatedWood");
addOredictRecipe(new ItemStack(IEContent.itemMaterial,1,14), "III", 'I',"ingotSteel");
addOredictRecipe(new ItemStack(IEContent.itemMaterial,1,15), " I ","ICI"," I ", 'I',"ingotSteel",'C',componentIron);
addOredictRecipe(new ItemStack(IEContent.itemMaterial,1,16), "I ","II "," II", 'I',"ingotSteel");
addShapelessIngredientRecipe(new ItemStack(IEContent.itemMaterial, 1, 20), "plateCopper", cutters).setToolDamageRecipe(1);
addShapelessIngredientRecipe(new ItemStack(IEContent.itemMaterial, 1, 21), "plateElectrum", cutters).setToolDamageRecipe(1);
addShapelessIngredientRecipe(new ItemStack(IEContent.itemMaterial, 1, 22), "plateAluminum", cutters).setToolDamageRecipe(1);
addShapelessIngredientRecipe(new ItemStack(IEContent.itemMaterial, 1, 23), "plateSteel", cutters).setToolDamageRecipe(1);
// addOredictRecipe(new ItemStack(IEContent.itemMaterial,4,14), "I","I", 'I',"ingotIron");
// addOredrrictRecipe(new ItemStack(IEContent.itemMaterial,4,15), "I","I", 'I',"ingotSteel");
addIngredientRecipe(new ItemStack(IEContent.itemTool, 1, 0), " IF", " SI", "S ", 'I', "ingotIron", 'S', woodenSticks, 'F', new ItemStack(Items.STRING));
addIngredientRecipe(new ItemStack(IEContent.itemTool, 1, 1), "SI", " S", 'I', "ingotIron", 'S', woodenSticks).setMirrored(true);
addIngredientRecipe(new ItemStack(IEContent.itemTool, 1, 2), " P ", "SCS", 'C', "ingotCopper", 'P', Items.COMPASS, 'S', woodenSticks);
addShapelessOredictRecipe(new ItemStack(IEContent.itemTool,1,3), Items.BOOK,Blocks.LEVER);
addOredictRecipe(new ItemStack(IEContent.itemRevolver,1,0), " I ","BDH","GIG", 'I',"ingotIron",'B',new ItemStack(IEContent.itemMaterial,1,14),'D',new ItemStack(IEContent.itemMaterial,1,15),'G',woodenGrip,'H',new ItemStack(IEContent.itemMaterial,1,16)).setMirrored(true);
addOredictRecipe(new ItemStack(IEContent.itemRevolver,1,1), " I","IIS"," I", 'I',"ingotIron",'S',"ingotSteel");
GameRegistry.addRecipe(new RecipeRevolver());
RecipeSorter.register(ImmersiveEngineering.MODID+":revolverLoop", RecipeRevolver.class, Category.SHAPELESS, "after:forge:shapelessore");
addOredictRecipe(new ItemStack(IEContent.itemBullet,5,0), "I I","I I"," I ", 'I',"ingotCopper");
addOredictRecipe(new ItemStack(IEContent.itemBullet,5,1), "PDP","PDP"," I ", 'I',"ingotCopper",'P',Items.PAPER,'D',"dyeRed");
addOredictRecipe(ItemEngineersBlueprint.getTypedBlueprint("bullet"), "JKL","DDD","PPP", 'J',Items.GUNPOWDER,'K',"ingotCopper",'L',Items.GUNPOWDER, 'D',"dyeBlue",'P',Items.PAPER);
addOredictRecipe(new ItemStack(IEContent.itemMold,1,3), " P ","PCP"," P ", 'P',"plateSteel",'C',new ItemStack(IEContent.itemBullet,1,0));
MetalPressRecipe.addRecipe(new ItemStack(IEContent.itemBullet,2,0),"ingotCopper",new ItemStack(IEContent.itemMold,1,3), 2400);
addOredictRecipe(new ItemStack(IEContent.itemSkyhook,1,0), "II ","IC "," GG", 'C',componentIron,'I',"ingotSteel", 'G',woodenGrip);
addOredictRecipe(new ItemStack(IEContent.itemDrill,1,0), " G"," EG","C ", 'C',componentSteel,'E',new ItemStack(IEContent.blockMetalDecoration0,1,BlockTypes_MetalDecoration0.HEAVY_ENGINEERING.getMeta()), 'G',woodenGrip);
addOredictRecipe(new ItemStack(IEContent.itemDrillhead,1,0), "SS ","BBS","SS ", 'B',"blockSteel", 'S',"ingotSteel");
addOredictRecipe(new ItemStack(IEContent.itemDrillhead,1,1), "SS ","BBS","SS ", 'B',"blockIron", 'S',"ingotIron");
addOredictRecipe(new ItemStack(IEContent.itemChemthrower,1,0), " OG"," EG","PB ", 'P',new ItemStack(IEContent.blockMetalDevice1,1,BlockTypes_MetalDevice1.FLUID_PIPE.getMeta()), 'O',new ItemStack(IEContent.itemToolUpgrades,1,0), 'B',Items.BUCKET, 'E',new ItemStack(IEContent.blockMetalDecoration0,1,BlockTypes_MetalDecoration0.HEAVY_ENGINEERING.getMeta()), 'G',woodenGrip);
addOredictRecipe(new ItemStack(IEContent.itemRailgun,1,0), " HG","CBH","BC ", 'C',electrumCoil, 'H',new ItemStack(IEContent.blockMetalDevice0,1,BlockTypes_MetalDevice0.CAPACITOR_HV.getMeta()), 'B',new ItemStack(IEContent.itemMaterial,1,14), 'G',woodenGrip);
addOredictRecipe(new ItemStack(IEContent.itemToolUpgrades,1,0), "BI ","IBI"," IC", 'B',Items.BUCKET, 'I',"dyeBlue", 'C',componentIron);
addIngredientRecipe(new ItemStack(IEContent.itemToolUpgrades, 1, 1), "BI ", "IBI", " IC", 'B', new FluidStack(IEContent.fluidPlantoil, 1000), 'I', "ingotIron", 'C', componentIron);
addOredictRecipe(new ItemStack(IEContent.itemToolUpgrades,1,2), "SSS"," C ", 'S',"ingotSteel", 'C',componentSteel);
addOredictRecipe(new ItemStack(IEContent.itemToolUpgrades,1,3), "CS ","SBO"," OB", 'C',componentIron, 'S',"ingotSteel", 'B',Items.BUCKET, 'O',"dyeRed");
addOredictRecipe(new ItemStack(IEContent.itemToolUpgrades,1,4), "SI","IW", 'S',Items.IRON_SWORD, 'I',"ingotSteel", 'W',"plankTreatedWood");
addOredictRecipe(new ItemStack(IEContent.itemToolUpgrades,1,5), " CS","C C","IC ", 'I',componentIron, 'S',"ingotSteel", 'C',"ingotCopper");
addOredictRecipe(new ItemStack(IEContent.itemToolUpgrades,1,6), " G ","GEG","GEG", 'E',electrumCoil, 'G',"blockGlass");
addOredictRecipe(new ItemStack(IEContent.itemToolUpgrades,1,7), " SS","PPH"," SS", 'P',new ItemStack(IEContent.blockMetalDevice1,1,BlockTypes_MetalDevice1.FLUID_PIPE.getMeta()), 'H',Blocks.HOPPER, 'S',"ingotSteel");
addOredictRecipe(new ItemStack(IEContent.itemToolUpgrades,1,8), "GC ","C C"," CG", 'G',"paneGlassColorless", 'C',"ingotCopper");
addOredictRecipe(new ItemStack(IEContent.itemToolUpgrades,1,9), "WWW","HHH", 'W',new ItemStack(IEContent.itemWireCoil,1,2), 'H',new ItemStack(IEContent.blockMetalDevice0,1,2));
addShapelessOredictRecipe(new ItemStack(IEContent.itemMetal,2,15), "dustCopper","dustNickel");
addShapelessOredictRecipe(new ItemStack(IEContent.itemMetal,2,16), "dustSilver","dustGold");
addIngredientRecipe(new ItemStack(IEContent.itemWireCoil, 4, 0), " I ", "ISI", " I ", 'I', "wireCopper", 'S', woodenSticks);
addIngredientRecipe(new ItemStack(IEContent.itemWireCoil, 4, 1), " I ", "ISI", " I ", 'I', "wireElectrum", 'S', woodenSticks);
addIngredientRecipe(new ItemStack(IEContent.itemWireCoil, 4, 2), " I ", "ASA", " I ", 'I', "wireSteel", 'A', "wireAluminum", 'S', woodenSticks).allowQuarterTurn();
addIngredientRecipe(new ItemStack(IEContent.itemWireCoil, 4, 3), " I ", "ISI", " I ", 'I', new ItemStack(IEContent.itemMaterial, 1, 4), 'S', woodenSticks);
addIngredientRecipe(new ItemStack(IEContent.itemWireCoil, 4, 4), " I ", "ISI", " I ", 'I', "wireSteel", 'S', woodenSticks);
addIngredientRecipe(new ItemStack(IEContent.itemWireCoil, 4, 5), " I ", "ASA", " I ", 'I', "dustRedstone", 'A', "wireAluminum", 'S', woodenSticks).allowQuarterTurn();
addOredictRecipe(new ItemStack(IEContent.itemJerrycan), " II","IBB","IBB", 'I',"plateIron",'B',Items.BUCKET);
GameRegistry.addRecipe(new RecipeJerrycan());
RecipeSorter.register(ImmersiveEngineering.MODID+":jerrycan", RecipeJerrycan.class, Category.SHAPELESS, "after:forge:shapelessore");
addOredictRecipe(new ItemStack(IEContent.itemToolbox), "PPP","RCR", 'P',"plateAluminum",'C',new ItemStack(IEContent.blockWoodenDevice0,1,BlockTypes_WoodenDevice0.CRATE.getMeta()),'R',"dyeRed");
GameRegistry.addRecipe(new RecipeShaderBags());
RecipeSorter.register(ImmersiveEngineering.MODID+":shaderbags", RecipeShaderBags.class, Category.SHAPELESS, "after:forge:shapelessore");
addOredictRecipe(new ItemStack(IEContent.itemEarmuffs), " S ","S S","W W", 'S',"stickIron",'W',new ItemStack(Blocks.WOOL,1,OreDictionary.WILDCARD_VALUE));
GameRegistry.addRecipe(new RecipeEarmuffs());
RecipeSorter.register(ImmersiveEngineering.MODID+":earmuffs", RecipeEarmuffs.class, Category.SHAPELESS, "after:forge:shapelessore");
addOredictRecipe(new ItemStack(IEContent.itemsFaradaySuit[0]), "A A", "A A", 'A', "plateAluminum");
addOredictRecipe(new ItemStack(IEContent.itemsFaradaySuit[1]), "AAA", "A A", "A A", 'A', "plateAluminum");
addOredictRecipe(new ItemStack(IEContent.itemsFaradaySuit[2]), "A A", "AAA", "AAA", 'A', "plateAluminum");
addOredictRecipe(new ItemStack(IEContent.itemsFaradaySuit[3]), "AAA", "A A", 'A', "plateAluminum");
addOredictRecipe(new ItemStack(IEContent.itemFluorescentTube), "GEG", "GgG", "GgG", 'G', "blockGlass", 'E', new ItemStack(IEContent.itemGraphiteElectrode), 'g', "dustGlowstone");
//
//TREATED WOOD
//
addIngredientRecipe(new ItemStack(IEContent.blockTreatedWood, 8, 0), "WWW", "WCW", "WWW", 'W', "plankWood", 'C', new FluidStack(IEContent.fluidCreosote, 1000));
for(int i=0; i<IEContent.blockTreatedWood.enumValues.length; i++)
{
addShapelessOredictRecipe(new ItemStack(IEContent.blockTreatedWood,1, i==IEContent.blockTreatedWood.enumValues.length-1?0:i+1), new ItemStack(IEContent.blockTreatedWood,1,i));
addTwoWaySlabRecipe(new ItemStack(IEContent.blockTreatedWoodSlabs,1,i), new ItemStack(IEContent.blockTreatedWood,1,i));
addShapelessOredictRecipe(new ItemStack(IEContent.blockTreatedWoodSlabs,1, i==IEContent.blockTreatedWood.enumValues.length-1?0:i+1), new ItemStack(IEContent.blockTreatedWoodSlabs,1,i));
}
addStairRecipe(IEContent.blockWoodenStair, new ItemStack(IEContent.blockTreatedWood,1,0));
addStairRecipe(IEContent.blockWoodenStair1, new ItemStack(IEContent.blockTreatedWood,1,1));
addStairRecipe(IEContent.blockWoodenStair2, new ItemStack(IEContent.blockTreatedWood,1,2));
GameRegistry.addShapelessRecipe(new ItemStack(IEContent.blockWoodenStair,1,0), new ItemStack(IEContent.blockWoodenStair2,1,0));
GameRegistry.addShapelessRecipe(new ItemStack(IEContent.blockWoodenStair1,1,0), new ItemStack(IEContent.blockWoodenStair,1,0));
GameRegistry.addShapelessRecipe(new ItemStack(IEContent.blockWoodenStair2,1,0), new ItemStack(IEContent.blockWoodenStair1,1,0));
//
//WOODEN DECORACTION
//
addOredictRecipe(new ItemStack(IEContent.blockWoodenDecoration,3,BlockTypes_WoodenDecoration.FENCE.getMeta()), "WSW","WSW", 'W',"plankTreatedWood", 'S',"stickTreatedWood");
addOredictRecipe(new ItemStack(IEContent.blockWoodenDecoration,6,BlockTypes_WoodenDecoration.SCAFFOLDING.getMeta()), "WWW"," S ","S S", 'W',"plankTreatedWood",'S',"stickTreatedWood");
//
//WOODEN DEVICES
//
addOredictRecipe(new ItemStack(IEContent.blockWoodenDevice0,1,BlockTypes_WoodenDevice0.CRATE.getMeta()), "WWW","W W","WWW", 'W',"plankTreatedWood");
addOredictRecipe(new ItemStack(IEContent.blockWoodenDevice0,1,BlockTypes_WoodenDevice0.BARREL.getMeta()), "SSS","W W","WWW", 'W',"plankTreatedWood",'S',"slabTreatedWood");
addOredictRecipe(new ItemStack(IEContent.blockWoodenDevice0,1,BlockTypes_WoodenDevice0.WORKBENCH.getMeta()), "WWW","B F", 'W',"plankTreatedWood",'B',"craftingTableWood",'F',"fenceTreatedWood");
addIngredientRecipe(new ItemStack(IEContent.blockWoodenDevice0, 1, BlockTypes_WoodenDevice0.SORTER.getMeta()), "WRW", "IBI", "WCW", 'I', "ingotIron", 'R', "dustRedstone", 'W', "plankTreatedWood", 'B',baseConveyor, 'C',componentIron).allowQuarterTurn();
addOredictRecipe(new ItemStack(IEContent.blockWoodenDevice0,1,BlockTypes_WoodenDevice0.GUNPOWDER_BARREL.getMeta()), " F ","GBG","GGG", 'F',"fiberHemp",'G',Items.GUNPOWDER,'B',new ItemStack(IEContent.blockWoodenDevice0,1,BlockTypes_WoodenDevice0.BARREL.getMeta()));
addIngredientRecipe(new ItemStack(IEContent.blockWoodenDevice0, 1, BlockTypes_WoodenDevice0.REINFORCED_CRATE.getMeta()), "WPW", "RCR", "WPW", 'W', "plankTreatedWood", 'P', "plateIron", 'R', "stickIron", 'C', new ItemStack(IEContent.blockWoodenDevice0, 1, BlockTypes_WoodenDevice0.CRATE.getMeta())).setNBTCopyTargetRecipe(4).allowQuarterTurn();
addOredictRecipe(new ItemStack(IEContent.blockWoodenDevice0, 1, BlockTypes_WoodenDevice0.TURNTABLE.getMeta()), "WIW", "RCR", 'I',"ingotIron", 'C',copperCoil, 'R',"dustRedstone", 'W',"plankTreatedWood");
addIngredientRecipe(new ItemStack(IEContent.blockWoodenDevice0, 1, BlockTypes_WoodenDevice0.FLUID_SORTER.getMeta()), "WRW", "IBI", "WCW", 'I', "ingotIron", 'R', "dustRedstone", 'W', "plankTreatedWood", 'B',new ItemStack(IEContent.blockMetalDevice1,1,BlockTypes_MetalDevice1.FLUID_PIPE.getMeta()), 'C',componentIron).allowQuarterTurn();
addOredictRecipe(new ItemStack(IEContent.blockWoodenDevice1,1,BlockTypes_WoodenDevice1.WATERMILL.getMeta()), " P ","PIP"," P ", 'P',new ItemStack(IEContent.itemMaterial,1,10),'I',"ingotSteel");
addOredictRecipe(new ItemStack(IEContent.blockWoodenDevice1,1,BlockTypes_WoodenDevice1.WINDMILL.getMeta()), " P ","PIP"," P ", 'P',new ItemStack(IEContent.itemMaterial,1,11),'I',"ingotIron");
addOredictRecipe(new ItemStack(IEContent.blockWoodenDevice1,1,BlockTypes_WoodenDevice1.WINDMILL_ADVANCED.getMeta()), "PPP","PIP","PPP", 'P',new ItemStack(IEContent.itemMaterial,1,12),'I',"ingotSteel");
addOredictRecipe(new ItemStack(IEContent.blockWoodenDevice1,1,BlockTypes_WoodenDevice1.POST.getMeta()), "F","F","S", 'F',"fenceTreatedWood",'S',"bricksStone");
addOredictRecipe(new ItemStack(IEContent.blockWoodenDevice1,4,BlockTypes_WoodenDevice1.WALLMOUNT.getMeta()), "WW","WS", 'W',"plankTreatedWood",'S',"stickTreatedWood");
//
//CLOTH DEVICES
//
addOredictRecipe(new ItemStack(IEContent.blockClothDevice,3,BlockTypes_ClothDevice.CUSHION.getMeta()), "FFF","F F","FFF", 'F',"fabricHemp");
addOredictRecipe(new ItemStack(IEContent.blockClothDevice,2,BlockTypes_ClothDevice.BALLOON.getMeta()), " F ","FTF"," S ", 'F',"fabricHemp", 'T',"torch", 'S',"slabTreatedWood");
addIngredientRecipe(new ItemStack(IEContent.blockClothDevice,3,BlockTypes_ClothDevice.STRIPCURTAIN.getMeta()), "SSS","FFF","FFF", 'S',metalSticks, 'F',"fabricHemp");
final ItemStack stripCurtain = new ItemStack(IEContent.blockClothDevice,1,BlockTypes_ClothDevice.STRIPCURTAIN.getMeta());
GameRegistry.addRecipe(new RecipeRGBColouration((s)->(OreDictionary.itemMatches(stripCurtain,s,true)), (s)->(ItemNBTHelper.hasKey(s,"colour")?ItemNBTHelper.getInt(s,"colour"):0xffffff), (s, i)->ItemNBTHelper.setInt(s, "colour", i) ));
//
//STONE DECORACTION
//
addOredictRecipe(new ItemStack(IEContent.blockStoneDecoration,2,BlockTypes_StoneDecoration.COKEBRICK.getMeta()), "CBC","BSB","CBC", 'S',"sandstone",'C',Items.CLAY_BALL,'B',"ingotBrick");
addOredictRecipe(new ItemStack(IEContent.blockStoneDecoration,2,BlockTypes_StoneDecoration.BLASTBRICK.getMeta()), "NBN","BDB","NBN", 'D',Items.BLAZE_POWDER,'N',"ingotBrickNether",'B',"ingotBrick");
addOredictRecipe(new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.BLASTBRICK_REINFORCED.getMeta()), "P","B", 'P',"plateSteel",'B',new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.BLASTBRICK.getMeta()));
addTwoWayStorageRecipe(new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.COKE.getMeta()), new ItemStack(IEContent.itemMaterial,1,6));
addOredictRecipe(new ItemStack(IEContent.blockStoneDecoration,6,BlockTypes_StoneDecoration.HEMPCRETE.getMeta()), "CCC","HHH","CCC", 'C',Items.CLAY_BALL,'H',"fiberHemp");
addIngredientRecipe(new ItemStack(IEContent.blockStoneDecoration, 8, BlockTypes_StoneDecoration.CONCRETE.getMeta()), "SCS", "GBG", "SCS", 'C', Items.CLAY_BALL, 'S', "sand", 'G', Blocks.GRAVEL, 'B', new FluidStack(FluidRegistry.WATER,1000)).allowQuarterTurn();
addIngredientRecipe(new ItemStack(IEContent.blockStoneDecoration, 12, BlockTypes_StoneDecoration.CONCRETE.getMeta()), "SCS", "GBG", "SCS", 'C', Items.CLAY_BALL, 'S', "itemSlag", 'G', Blocks.GRAVEL, 'B', new FluidStack(FluidRegistry.WATER,1000)).allowQuarterTurn();
addShapelessOredictRecipe(new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.CONCRETE.getMeta()), new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.CONCRETE_TILE.getMeta()));
addOredictRecipe(new ItemStack(IEContent.blockStoneDecoration,4,BlockTypes_StoneDecoration.CONCRETE_TILE.getMeta()), "CC","CC", 'C',new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.CONCRETE.getMeta()));
addOredictRecipe(new ItemStack(IEContent.blockStoneDecoration, 1, BlockTypes_StoneDecoration.CONCRETE_LEADED.getMeta()), "P", "B", 'P', "plateLead", 'B', new ItemStack(IEContent.blockStoneDecoration, 1, BlockTypes_StoneDecoration.CONCRETE.getMeta()));
addIngredientRecipe(new ItemStack(IEContent.blockStoneDecoration, 2, BlockTypes_StoneDecoration.INSULATING_GLASS.getMeta()), " G ", "IDI", " G ", 'G', "blockGlass", 'I', "dustIron", 'D', "dyeGreen").allowQuarterTurn();
for(int i=0; i<=BlockTypes_StoneDecoration.values().length; i++)
if(!IEContent.blockStoneDecorationSlabs.isMetaHidden(i))
addTwoWaySlabRecipe(new ItemStack(IEContent.blockStoneDecorationSlabs,1,i), new ItemStack(IEContent.blockStoneDecoration,1,i));
addStairRecipe(IEContent.blockStoneStair_hempcrete, new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.HEMPCRETE.getMeta()));
addStairRecipe(IEContent.blockStoneStair_concrete0, new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.CONCRETE.getMeta()));
addStairRecipe(IEContent.blockStoneStair_concrete1, new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.CONCRETE_TILE.getMeta()));
addStairRecipe(IEContent.blockStoneStair_concrete2, new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.CONCRETE_LEADED.getMeta()));
GameRegistry.addShapelessRecipe(new ItemStack(IEContent.blockStoneStair_concrete0,1,0), new ItemStack(IEContent.blockStoneStair_concrete1,1,0));
GameRegistry.addShapelessRecipe(new ItemStack(IEContent.blockStoneStair_concrete1,1,0), new ItemStack(IEContent.blockStoneStair_concrete0,1,0));
//
//METAL STORAGE
//
addTwoWayStorageRecipe(new ItemStack(Items.IRON_INGOT), new ItemStack(IEContent.itemMetal,1,29));
for(int i=0; i<=8; i++)
{
addTwoWayStorageRecipe(new ItemStack(IEContent.itemMetal,1,i), new ItemStack(IEContent.itemMetal,1,20+i));
addTwoWayStorageRecipe(new ItemStack(IEContent.blockStorage,1,i), new ItemStack(IEContent.itemMetal,1,i));
addTwoWaySlabRecipe(new ItemStack(IEContent.blockStorageSlabs,1,i), new ItemStack(IEContent.blockStorage,1,i));
}
//
//SHEETMETAL
//
for(int i=0; i<Lib.METALS_ALL.length; i++)
if(!IEContent.itemMetal.isMetaHidden(30+i))
{
addShapelessOredictRecipe(new ItemStack(IEContent.itemMetal,1,30+i), "ingot"+Lib.METALS_ALL[i],new ItemStack(IEContent.itemTool,1,0));
addOredictRecipe(new ItemStack(IEContent.blockSheetmetal,4,i), " P ","P P"," P ", 'P',"plate"+Lib.METALS_ALL[i]);
addShapelessOredictRecipe(new ItemStack(IEContent.itemMetal,1,30+i), new ItemStack(IEContent.blockSheetmetal,1,i));
addTwoWaySlabRecipe(new ItemStack(IEContent.blockSheetmetalSlabs,1,i), new ItemStack(IEContent.blockSheetmetal,1,i));
}
//
//METAL DECORACTION
//
addOredictRecipe(copperCoil, "WWW","WIW","WWW", 'I',"ingotIron",'W',new ItemStack(IEContent.itemWireCoil,1,0));
addOredictRecipe(electrumCoil, "WWW","WIW","WWW", 'I',"ingotIron",'W',new ItemStack(IEContent.itemWireCoil,1,1));
addOredictRecipe(hvCoil, "WWW","WIW","WWW", 'I',"ingotIron",'W',new ItemStack(IEContent.itemWireCoil,1,2));
addIngredientRecipe(new ItemStack(IEContent.blockMetalDecoration0, 2, BlockTypes_MetalDecoration0.RS_ENGINEERING.getMeta()), "IRI", "RCR", "IRI", 'I', "ingotIron", 'C', "ingotCopper", 'R', "dustRedstone").allowEighthTurn();
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration0, 2, BlockTypes_MetalDecoration0.LIGHT_ENGINEERING.getMeta()), "IGI","CCC","IGI", 'I',"ingotIron",'C',"ingotCopper",'G',componentIron);
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration0, 2, BlockTypes_MetalDecoration0.HEAVY_ENGINEERING.getMeta()), "IGI","PEP","IGI", 'I',"ingotSteel",'E',"ingotElectrum",'G',componentSteel,'P',Blocks.PISTON);
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration0, 2, BlockTypes_MetalDecoration0.GENERATOR.getMeta()), "III","EDE","III", 'I',"ingotSteel",'E',"ingotElectrum",'D',new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.DYNAMO.getMeta()));
addIngredientRecipe(new ItemStack(IEContent.blockMetalDecoration0, 2, BlockTypes_MetalDecoration0.RADIATOR.getMeta()), "ICI", "CBC", "ICI", 'I', "ingotSteel", 'C', "ingotCopper", 'B', new FluidStack(FluidRegistry.WATER,1000)).allowEighthTurn();
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration1, 3, BlockTypes_MetalDecoration1.STEEL_FENCE.getMeta()), "IRI","IRI", 'I',"ingotSteel",'R',"stickSteel");
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration1, 6, BlockTypes_MetalDecoration1.STEEL_SCAFFOLDING_0.getMeta()), "III"," R ","R R", 'I',"ingotSteel",'R',"stickSteel");
addShapelessOredictRecipe(new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.STEEL_SCAFFOLDING_1.getMeta()), new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.STEEL_SCAFFOLDING_0.getMeta()));
addShapelessOredictRecipe(new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.STEEL_SCAFFOLDING_2.getMeta()), new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.STEEL_SCAFFOLDING_1.getMeta()));
addShapelessOredictRecipe(new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.STEEL_SCAFFOLDING_0.getMeta()), new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.STEEL_SCAFFOLDING_2.getMeta()));
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration1, 3, BlockTypes_MetalDecoration1.ALUMINUM_FENCE.getMeta()), "IRI","IRI", 'I',"ingotAluminum",'R',"stickAluminum");
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration1, 6, BlockTypes_MetalDecoration1.ALUMINUM_SCAFFOLDING_0.getMeta()), "III"," R ","R R", 'I',"ingotAluminum",'R',"stickAluminum");
addShapelessOredictRecipe(new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.ALUMINUM_SCAFFOLDING_1.getMeta()), new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.ALUMINUM_SCAFFOLDING_0.getMeta()));
addShapelessOredictRecipe(new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.ALUMINUM_SCAFFOLDING_2.getMeta()), new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.ALUMINUM_SCAFFOLDING_1.getMeta()));
addShapelessOredictRecipe(new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.ALUMINUM_SCAFFOLDING_0.getMeta()), new ItemStack(IEContent.blockMetalDecoration1, 1, BlockTypes_MetalDecoration1.ALUMINUM_SCAFFOLDING_2.getMeta()));
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration2,1,BlockTypes_MetalDecoration2.STEEL_POST.getMeta()), "F","F","S", 'F',"fenceSteel",'S',"bricksStone");
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration2,4,BlockTypes_MetalDecoration2.STEEL_WALLMOUNT.getMeta()), "II","IS", 'I',"ingotSteel",'S',"stickSteel");
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration2,1,BlockTypes_MetalDecoration2.ALUMINUM_POST.getMeta()), "F","F","S", 'F',"fenceAluminum",'S',"bricksStone");
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration2,4,BlockTypes_MetalDecoration2.ALUMINUM_WALLMOUNT.getMeta()), "II","IS", 'I',"ingotAluminum",'S',"stickAluminum");
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration2,3,BlockTypes_MetalDecoration2.LANTERN.getMeta()), " I ","PGP"," I ", 'G',"glowstone",'I',"plateIron",'P',"paneGlass");
addOredictRecipe(new ItemStack(IEContent.blockMetalDecoration2,3,BlockTypes_MetalDecoration2.RAZOR_WIRE.getMeta()), "PWP","WWW","PWP", 'W',"wireSteel",'P',"plateSteel");
//
//CONNECTOR
//
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 4, BlockTypes_Connector.CONNECTOR_LV.getMeta()), " I ","BIB","BIB", 'I',"ingotCopper",'B',Blocks.HARDENED_CLAY);
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 8, BlockTypes_Connector.RELAY_LV.getMeta()), " I ","BIB", 'I',"ingotCopper",'B',Blocks.HARDENED_CLAY);
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 4, BlockTypes_Connector.CONNECTOR_MV.getMeta()), " I ","BIB","BIB", 'I',"ingotIron",'B',Blocks.HARDENED_CLAY);
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 8, BlockTypes_Connector.RELAY_MV.getMeta()), " I ","BIB", 'I',"ingotIron",'B',Blocks.HARDENED_CLAY);
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 4, BlockTypes_Connector.CONNECTOR_HV.getMeta()), " I ","BIB","BIB", 'I',"ingotAluminum",'B',Blocks.HARDENED_CLAY);
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 8, BlockTypes_Connector.RELAY_HV.getMeta()), " I ","BIB","BIB", 'I',"ingotAluminum",'B',new ItemStack(IEContent.blockStoneDecoration,1,BlockTypes_StoneDecoration.INSULATING_GLASS.getMeta()));
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 8, BlockTypes_Connector.CONNECTOR_STRUCTURAL.getMeta()), "ISI","I I", 'I',"ingotSteel",'S',"stickSteel");
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 1, BlockTypes_Connector.TRANSFORMER.getMeta()), "L M","IBI","III", 'L',new ItemStack(IEContent.blockConnectors,1,BlockTypes_Connector.CONNECTOR_LV.getMeta()),'M',new ItemStack(IEContent.blockConnectors,1,BlockTypes_Connector.CONNECTOR_MV.getMeta()),'I',"ingotIron",'B',electrumCoil).setMirrored(true);
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 1, BlockTypes_Connector.TRANSFORMER_HV.getMeta()), "M H","IBI","III", 'H',new ItemStack(IEContent.blockConnectors,1,BlockTypes_Connector.CONNECTOR_HV.getMeta()),'M',new ItemStack(IEContent.blockConnectors,1,BlockTypes_Connector.CONNECTOR_MV.getMeta()),'I',"ingotIron",'B',hvCoil).setMirrored(true);
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 1, BlockTypes_Connector.BREAKERSWITCH.getMeta()), " L ","CIC", 'L',Blocks.LEVER,'C',Blocks.HARDENED_CLAY,'I',"ingotCopper");
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 1, BlockTypes_Connector.REDSTONE_BREAKER.getMeta()), "H H","ICI","IRI", 'H',new ItemStack(IEContent.blockConnectors,1,BlockTypes_Connector.CONNECTOR_HV.getMeta()), 'I',"ingotIron", 'C',Items.REPEATER, 'R',"dustRedstone");
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 1, BlockTypes_Connector.ENERGY_METER.getMeta()), " M ","BCB","ICI", 'M',new ItemStack(IEContent.itemTool,1,2), 'B', Blocks.HARDENED_CLAY, 'I',"ingotIron", 'C',copperCoil);
addOredictRecipe(new ItemStack(IEContent.blockConnectors, 4, BlockTypes_Connector.CONNECTOR_REDSTONE.getMeta()), "III", "BRB", 'I', "nuggetElectrum", 'B', Blocks.HARDENED_CLAY, 'R', "dustRedstone");
//
//METAL DEVICES
//
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice0,1, BlockTypes_MetalDevice0.CAPACITOR_LV.getMeta()), "III","CLC","WRW", 'L',"ingotLead",'I',"ingotIron",'C',"ingotCopper",'R',"dustRedstone",'W',"plankTreatedWood");
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice0,1, BlockTypes_MetalDevice0.CAPACITOR_MV.getMeta()), "III","ELE","WRW", 'L',"ingotLead",'I',"ingotIron",'E',"ingotElectrum",'R',"blockRedstone",'W',"plankTreatedWood");
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice0,1, BlockTypes_MetalDevice0.CAPACITOR_HV.getMeta()), "III","ALA","WRW", 'L',"blockLead",'I',"ingotSteel",'A',"ingotAluminum",'R',"blockRedstone",'W',"plankTreatedWood");
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice0,1, BlockTypes_MetalDevice0.BARREL.getMeta()), "SSS","B B","BBB", 'B',"blockSheetmetalIron",'S',"slabSheetmetalIron");
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice0,1, BlockTypes_MetalDevice0.FLUID_PUMP.getMeta()), " I ","ICI","PPP", 'I',"plateIron",'C',componentIron,'P',new ItemStack(IEContent.blockMetalDevice1,1,BlockTypes_MetalDevice1.FLUID_PIPE.getMeta()));
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice0,1, BlockTypes_MetalDevice0.FLUID_PLACER.getMeta()), "IBI","B B","IBI", 'I',"plateIron",'B',Blocks.IRON_BARS);
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.BLAST_FURNACE_PREHEATER.getMeta()), "SSS","S S","SHS", 'S',"blockSheetmetalIron", 'H',new ItemStack(IEContent.blockMetalDevice1,1,BlockTypes_MetalDevice1.FURNACE_HEATER.getMeta()));
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.FURNACE_HEATER.getMeta()), "ICI","CBC","IRI", 'I',"ingotIron",'R',"dustRedstone",'C',"ingotCopper",'B',copperCoil);
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.DYNAMO.getMeta()), "RCR","III", 'C',copperCoil,'I',"ingotIron",'R',"dustRedstone");
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.THERMOELECTRIC_GEN.getMeta()), "III","CBC","CCC", 'I',"ingotSteel",'C',"plateConstantan",'B',copperCoil);
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,3, BlockTypes_MetalDevice1.ELECTRIC_LANTERN.getMeta()), " I ","PGP","IRI", 'P',"paneGlass",'I',"plateIron",'G',"glowstone",'R',"dustRedstone");
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.CHARGING_STATION.getMeta()), "IMI","GGG","WCW", 'M',new ItemStack(IEContent.blockConnectors,1,BlockTypes_Connector.CONNECTOR_MV.getMeta()), 'I',"ingotIron", 'G',"blockGlass", 'C',copperCoil, 'W',"plankTreatedWood");
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,8, BlockTypes_MetalDevice1.FLUID_PIPE.getMeta()), "PPP"," ","PPP", 'P',"plateIron");
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.SAMPLE_DRILL.getMeta()), "SFS","SFS","BFB", 'F',"fenceSteel",'S',"scaffoldingSteel",'B',new ItemStack(IEContent.blockMetalDecoration0,1,BlockTypes_MetalDecoration0.LIGHT_ENGINEERING.getMeta()));
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.TESLA_COIL.getMeta()), "III"," C ","MCM", 'I',"ingotAluminum",'C',copperCoil,'M',new ItemStack(IEContent.blockMetalDevice0,1,BlockTypes_MetalDevice0.CAPACITOR_MV.getMeta()));
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.FLOODLIGHT.getMeta()), "III","PGC","ILI", 'I',"ingotIron",'P',"paneGlass",'G',"glowstone",'C',copperCoil,'L',componentIron);
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.TURRET_CHEM.getMeta()), " S "," GL","XBR", 'S',new ItemStack(IEContent.itemToolUpgrades,1,8), 'G',new ItemStack(IEContent.itemChemthrower),'L',new ItemStack(IEContent.blockMetalDecoration0,1,BlockTypes_MetalDecoration0.LIGHT_ENGINEERING.getMeta()), 'B',new ItemStack(IEContent.blockWoodenDevice0,1,BlockTypes_WoodenDevice0.TURNTABLE.getMeta()),'R',new ItemStack(IEContent.blockMetalDecoration0,1,BlockTypes_MetalDecoration0.RS_ENGINEERING.getMeta()),'X',new ItemStack(IEContent.blockMetalDevice0,1, BlockTypes_MetalDevice0.BARREL.getMeta()));
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.TURRET_GUN.getMeta()), " S "," GL","XBR", 'S',new ItemStack(IEContent.itemToolUpgrades,1,8), 'G',new ItemStack(IEContent.itemRevolver),'L',new ItemStack(IEContent.blockMetalDecoration0,1,BlockTypes_MetalDecoration0.LIGHT_ENGINEERING.getMeta()), 'B',new ItemStack(IEContent.blockWoodenDevice0,1,BlockTypes_WoodenDevice0.TURNTABLE.getMeta()),'R',new ItemStack(IEContent.blockMetalDecoration0,1,BlockTypes_MetalDecoration0.RS_ENGINEERING.getMeta()),'X',new ItemStack(IEContent.itemToolUpgrades,1,5));
addOredictRecipe(new ItemStack(IEContent.blockMetalDevice1,1, BlockTypes_MetalDevice1.BELLJAR.getMeta()), " L ","G G","WCW", 'L',new ItemStack(IEContent.blockMetalDecoration2,1,BlockTypes_MetalDecoration2.LANTERN.getMeta()), 'G',"blockGlass", 'W',"plankTreatedWood", 'C',componentIron);
addOredictRecipe(Utils.copyStackWithAmount(baseConveyor, 8), "LLL", "IRI", 'I', "ingotIron", 'R', "dustRedstone", 'L', Items.LEATHER);
addShapelessOredictRecipe(Utils.copyStackWithAmount(ConveyorHandler.getConveyorStack(ImmersiveEngineering.MODID + ":uncontrolled"), 1), baseConveyor);
addShapelessOredictRecipe(baseConveyor, Utils.copyStackWithAmount(ConveyorHandler.getConveyorStack(ImmersiveEngineering.MODID + ":uncontrolled"), 1));
addOredictRecipe(Utils.copyStackWithAmount(ConveyorHandler.getConveyorStack(ImmersiveEngineering.MODID + ":dropper"), 1), "C", "H", 'C', baseConveyor, 'H', Blocks.IRON_TRAPDOOR);
addOredictRecipe(Utils.copyStackWithAmount(ConveyorHandler.getConveyorStack(ImmersiveEngineering.MODID + ":vertical"), 3), "CI", "C ", "CI", 'C', baseConveyor, 'I', "ingotIron");
addOredictRecipe(Utils.copyStackWithAmount(ConveyorHandler.getConveyorStack(ImmersiveEngineering.MODID + ":splitter"), 3), "CIC", " C ", 'C', baseConveyor, 'I', "ingotIron");
addOredictRecipe(Utils.copyStackWithAmount(ConveyorHandler.getConveyorStack(ImmersiveEngineering.MODID + ":covered"), 1), "S", "C", 'C', baseConveyor, 'S',"scaffoldingSteel");
// addOredictRecipe(new ItemStack(IEContent.blockMetalMultiblocks, 1,BlockMetalMultiblocks.META_lightningRod), "IFI","CBC","IHI", 'I',"ingotSteel",'F',new ItemStack(IEContent.blockMetalDecoration,1,BlockMetalDecoration.META_fence),'B',new ItemStack(IEContent.blockMetalDevice,1,BlockMetalDevice.META_capacitorHV),'C',electrumCoil,'H',hvCoil);
}
public static ShapedOreRecipe addOredictRecipe(ItemStack output, Object... recipe)
{
ShapedOreRecipe sor = new ShapedOreRecipe(output, recipe);
GameRegistry.addRecipe(sor);
return sor;
}
public static void addShapelessOredictRecipe(ItemStack output, Object... recipe)
{
GameRegistry.addRecipe(new ShapelessOreRecipe(output, recipe));
}
public static void addTwoWayStorageRecipe(ItemStack storage, ItemStack component)
{
addOredictRecipe(storage, "III","III","III", 'I',component);
addShapelessOredictRecipe(Utils.copyStackWithAmount(component,9), storage);
}
public static void addTwoWaySlabRecipe(ItemStack slab, ItemStack block)
{
addOredictRecipe(Utils.copyStackWithAmount(slab,6), "BBB", 'B',block);
addOredictRecipe(block, "S","S", 'S',slab);
}
public static void addStairRecipe(Block stair, ItemStack block)
{
addOredictRecipe(new ItemStack(stair,4,0), " B"," BB","BBB", 'B',block).setMirrored(true);
}
public static RecipeShapedIngredient addIngredientRecipe(ItemStack output, Object... recipe)
{
RecipeShapedIngredient r = new RecipeShapedIngredient(output, recipe);
GameRegistry.addRecipe(r);
return r;
}
public static RecipeShapelessIngredient addShapelessIngredientRecipe(ItemStack output, Object... recipe)
{
RecipeShapelessIngredient r = new RecipeShapelessIngredient(output, recipe);
GameRegistry.addRecipe(r);
return r;
}
public static void initBlueprintRecipes()
{
//
//BULLETS
//
//"homing","wolfpack"
//Casull
ItemStack bullet = BulletHandler.getBulletStack("casull");
BlueprintCraftingRecipe.addRecipe("bullet", bullet, new ItemStack(IEContent.itemBullet, 1, 0), Items.GUNPOWDER, "nuggetLead", "nuggetLead");
//Piercing
bullet = BulletHandler.getBulletStack("armorPiercing");
BlueprintCraftingRecipe.addRecipe("bullet", bullet, new ItemStack(IEContent.itemBullet, 1, 0), Items.GUNPOWDER, "nuggetSteel", "nuggetSteel", "nuggetConstantan", "nuggetConstantan");
if(ApiUtils.isExistingOreName("nuggetTungsten"))
BlueprintCraftingRecipe.addRecipe("bullet", bullet, new ItemStack(IEContent.itemBullet, 1, 0), Items.GUNPOWDER, "nuggetTungsten", "nuggetTungsten");
// We don't have depleted stuff atm
// if(ApiUtils.isExistingOreName("nuggetCyanite"))
// BlueprintCraftingRecipe.addRecipe("bullet", new ItemStack(IEContent.itemBullet,1,3), new ItemStack(IEContent.itemBullet,1,0),Items.gunpowder,"nuggetCyanite","nuggetCyanite");
// else if(ApiUtils.isExistingOreName("ingotCyanite"))
// BlueprintCraftingRecipe.addRecipe("bullet", new ItemStack(IEContent.itemBullet,3,3), new ItemStack(IEContent.itemBullet,3,0),new ItemStack(Items.gunpowder,3),"ingotCyanite");
//Silver
bullet = BulletHandler.getBulletStack("silver");
BlueprintCraftingRecipe.addRecipe("bullet", bullet, new ItemStack(IEContent.itemBullet, 1, 0), Items.GUNPOWDER, "nuggetLead", "nuggetLead", "nuggetSilver");
//Buckshot
bullet = BulletHandler.getBulletStack("buckshot");
BlueprintCraftingRecipe.addRecipe("bullet", bullet, new ItemStack(IEContent.itemBullet, 1, 1), Items.GUNPOWDER, "dustIron");
//HE
bullet = BulletHandler.getBulletStack("HE");
BlueprintCraftingRecipe.addRecipe("bullet", bullet, new ItemStack(IEContent.itemBullet, 1, 0), Items.GUNPOWDER, Blocks.TNT);
//Dragonsbreath
bullet = BulletHandler.getBulletStack("dragonsbreath");
BlueprintCraftingRecipe.addRecipe("specialBullet", bullet, new ItemStack(IEContent.itemBullet, 1, 1), Items.GUNPOWDER, "dustAluminum", "dustAluminum");
//Potion
bullet = BulletHandler.getBulletStack("potion");
BlueprintCraftingRecipe.addRecipe("specialBullet", bullet, new ItemStack(IEContent.itemBullet, 1, 0), Items.GUNPOWDER, Items.GLASS_BOTTLE);
GameRegistry.addRecipe(new RecipePotionBullets());
RecipeSorter.register(ImmersiveEngineering.MODID+":potionBullet", RecipePotionBullets.class, Category.SHAPELESS, "after:forge:shapelessore");
//Flare
bullet = BulletHandler.getBulletStack("flare");
ItemNBTHelper.setInt(bullet, "flareColour", 0xcc2e06);
BlueprintCraftingRecipe.addRecipe("specialBullet", bullet.copy(), new ItemStack(IEContent.itemBullet, 1, 1), Items.GUNPOWDER, "dustAluminum", "dyeRed");
ItemNBTHelper.setInt(bullet, "flareColour", 0x2ca30b);
BlueprintCraftingRecipe.addRecipe("specialBullet", bullet.copy(), new ItemStack(IEContent.itemBullet, 1, 1), Items.GUNPOWDER, "dustAluminum", "dyeGreen");
ItemNBTHelper.setInt(bullet, "flareColour", 0xffff82);
BlueprintCraftingRecipe.addRecipe("specialBullet", bullet.copy(), new ItemStack(IEContent.itemBullet, 1, 1), Items.GUNPOWDER, "dustAluminum", "dyeYellow");
GameRegistry.addRecipe(new RecipeFlareBullets());
RecipeSorter.register(ImmersiveEngineering.MODID+":flareBullet", RecipeFlareBullets.class, Category.SHAPELESS, "after:forge:shapelessore");
//Wolfpack
if(!BulletHandler.homingCartridges.isEmpty())
{
bullet = BulletHandler.getBulletStack("wolfpack");
ArrayList<ItemStack> homingCartridges = new ArrayList();
for(String s : BulletHandler.homingCartridges)
homingCartridges.add(BulletHandler.getBulletStack(s));
BlueprintCraftingRecipe.addRecipe("specialBullet", bullet.copy(), new ItemStack(IEContent.itemBullet, 1, 1), Items.GUNPOWDER, homingCartridges, homingCartridges, homingCartridges, homingCartridges);
}
BlueprintCraftingRecipe.addVillagerTrade("bullet", new ItemStack(Items.EMERALD,1,2));
BlueprintCraftingRecipe.addVillagerTrade("specialBullet", new ItemStack(Items.EMERALD,1,7));
BlueprintCraftingRecipe.addRecipe("electrode", new ItemStack(IEContent.itemGraphiteElectrode), "ingotHOPGraphite","ingotHOPGraphite","ingotHOPGraphite","ingotHOPGraphite");
BlueprintCraftingRecipe.addVillagerTrade("electrode", new ItemStack(Items.EMERALD,1,18));
if(IEConfig.Machines.arcfurnace_electrodeCrafting)
addOredictRecipe(ItemEngineersBlueprint.getTypedBlueprint("electrode"), "GGG","GDG","GPG", 'G',"ingotHOPGraphite", 'D',"dyeBlue",'P',Items.PAPER);
}
public static void initFurnaceRecipes()
{
//Ores
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.blockOre,1,0), new ItemStack(IEContent.itemMetal,1,0), 0.3f);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.blockOre,1,1), new ItemStack(IEContent.itemMetal,1,1), 0.3F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.blockOre,1,2), new ItemStack(IEContent.itemMetal,1,2), 0.7F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.blockOre,1,3), new ItemStack(IEContent.itemMetal,1,3), 1.0F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.blockOre,1,4), new ItemStack(IEContent.itemMetal,1,4), 1.0F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.blockOre,1,5), new ItemStack(IEContent.itemMetal,1,5), 1.0F);
//Dusts
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,9), new ItemStack(IEContent.itemMetal,1,0), 0.3F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,10), new ItemStack(IEContent.itemMetal,1,1), 0.3F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,11), new ItemStack(IEContent.itemMetal,1,2), 0.7F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,12), new ItemStack(IEContent.itemMetal,1,3), 0.7F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,13), new ItemStack(IEContent.itemMetal,1,4), 1F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,14), new ItemStack(IEContent.itemMetal,1,5), 0.7F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,15), new ItemStack(IEContent.itemMetal,1,6), 0.7F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,16), new ItemStack(IEContent.itemMetal,1,7), 1F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,17), new ItemStack(IEContent.itemMetal,1,8), 0.7F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,18), new ItemStack(Items.IRON_INGOT), 0.7F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMetal,1,19), new ItemStack(Items.GOLD_INGOT), 1.0F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(IEContent.itemMaterial,1,18), new ItemStack(IEContent.itemMaterial,1,19), 0.5F);
}
public static HashMap<String, ItemStack> oreOutputModifier = new HashMap<String, ItemStack>();
public static HashMap<String, Object[]> oreOutputSecondaries = new HashMap<String, Object[]>();
public static ArrayList<String> hammerCrushingList = new ArrayList<String>();
public static void initCrusherRecipes()
{
oreOutputSecondaries.put("Iron", new Object[]{"dustNickel",.1f});
oreOutputSecondaries.put("Gold", new Object[]{"crystalCinnabar",.05f});
oreOutputSecondaries.put("Copper", new Object[]{"dustGold",.1f});
oreOutputSecondaries.put("Lead", new Object[]{"dustSilver",.1f});
oreOutputSecondaries.put("Silver", new Object[]{"dustLead",.1f});
oreOutputSecondaries.put("Nickel", new Object[]{"dustPlatinum",.1f});
// addCrusherRecipe(new ItemStack(IEContent.itemMetal,1,15), "ingotConstantan", 3600, null,0);
// addCrusherRecipe(new ItemStack(IEContent.itemMetal,1,16), "ingotElectrum", 3600, null,0);
// addCrusherRecipe(new ItemStack(IEContent.itemMetal,1,19), "ingotHOPGraphite", 3600, null,0);
// CrusherRecipe.addRecipe(new ItemStack(IEContent.itemMetal,1,17), "fuelCoke", 4800);
// CrusherRecipe.addRecipe(new ItemStack(IEContent.itemMetal,1,18), "gemQuartz", 4800);
oreOutputModifier.put("Lapis", new ItemStack(Items.DYE,9,4));
oreOutputModifier.put("Diamond", new ItemStack(Items.DIAMOND,2));
oreOutputModifier.put("Redstone", new ItemStack(Items.REDSTONE,6));
oreOutputSecondaries.put("Redstone", new Object[]{"crystalCinnabar",.25f});
oreOutputModifier.put("Emerald", new ItemStack(Items.EMERALD,2));
oreOutputModifier.put("Quartz", new ItemStack(Items.QUARTZ,3));
oreOutputSecondaries.put("Quartz", new Object[]{"dustSulfur",.15f});
oreOutputModifier.put("Coal", new ItemStack(Items.COAL,4));
oreOutputSecondaries.put("Platinum", new Object[]{"dustNickel",.1f});
oreOutputSecondaries.put("Tungsten", new Object[]{"dustManganese",.1f});
oreOutputSecondaries.put("Uranium", new Object[]{"dustLead",.1f});
oreOutputSecondaries.put("Yellorium", new Object[]{"dustLead",.1f});
oreOutputSecondaries.put("Plutonium", new Object[]{"dustUranium",.1f});
Item item = GameRegistry.findItem("IC2", "itemOreIridium");
oreOutputSecondaries.put("Osmium", new Object[]{item,.01f});
oreOutputSecondaries.put("Iridium", new Object[]{"dustPlatium",.1f});
oreOutputSecondaries.put("FzDarkIron", new Object[]{"dustIron",.1f});
item = GameRegistry.findItem("Railcraft", "firestone.raw");
if(item!=null)
oreOutputModifier.put("Firestone", new ItemStack(item));
oreOutputSecondaries.put("Nikolite", new Object[]{Items.DIAMOND,.025f});
addCrusherRecipe(new ItemStack(Blocks.GRAVEL), "cobblestone", 1600);
addCrusherRecipe(new ItemStack(Blocks.SAND), Blocks.GRAVEL, 1600);
addCrusherRecipe(new ItemStack(Blocks.SAND), "itemSlag", 1600);
addCrusherRecipe(new ItemStack(Blocks.SAND), "blockGlass", 3200);
addCrusherRecipe(new ItemStack(Items.QUARTZ,4), "blockQuartz", 3200);
addCrusherRecipe(new ItemStack(Items.GLOWSTONE_DUST,4), "glowstone", 3200);
addCrusherRecipe(new ItemStack(Items.BLAZE_POWDER,4), "rodBlaze", 3200, "dustSulfur",.5f);
addCrusherRecipe(new ItemStack(Items.DYE,6,15), Items.BONE, 3200);
addCrusherRecipe(new ItemStack(IEContent.itemMaterial,1,17), "fuelCoke", 2400);
addCrusherRecipe(new ItemStack(IEContent.itemMaterial, 9, 17), "blockFuelCoke", 4800);
addItemToOreDictCrusherRecipe("dustCoal",1, new ItemStack(Items.COAL), 2400);
addItemToOreDictCrusherRecipe("dustObsidian",4, Blocks.OBSIDIAN, 6000);
for(int i=0; i<16; i++)
{
CrusherRecipe r = CrusherRecipe.addRecipe(new ItemStack(Items.STRING,4), new ItemStack(Blocks.WOOL,1,i), 3200);
if(i!=0)
r.addToSecondaryOutput(new ItemStack(Items.DYE,1,15-i), .05f);
}
}
public static void postInitOreDictRecipes()
{
boolean allowHammerCrushing = !IEConfig.Tools.disableHammerCrushing;
ArrayListMultimap<String, ItemStack> registeredMoldBases = ArrayListMultimap.create();
for(String name : OreDictionary.getOreNames())
if(ApiUtils.isExistingOreName(name))
if(name.startsWith("ore"))
{
String ore = name.substring("ore".length());
ItemStack out = oreOutputModifier.get(ore);
if(out==null)
{
if(ApiUtils.isExistingOreName("gem"+ore))
out = Utils.copyStackWithAmount(IEApi.getPreferredOreStack("gem"+ore), 2);
else
{
if(ApiUtils.isExistingOreName("dust"+ore))
{
ItemStack preferredDust = IEApi.getPreferredOreStack("dust"+ore);
out = Utils.copyStackWithAmount(preferredDust, 2);
if(allowHammerCrushing)
{
addShapelessOredictRecipe(preferredDust, name,new ItemStack(IEContent.itemTool));
hammerCrushingList.add(ore);
}
}
}
}
if(out!=null)
{
Object[] secondaries = oreOutputSecondaries.get(ore);
Object s = secondaries!=null&&secondaries.length>1?secondaries[0]: null;
Float f = secondaries!=null&&secondaries.length>1&&secondaries[1] instanceof Float?(Float)secondaries[1]: 0;
addOreProcessingRecipe(out, ore, 6000, true, s, f);
}
out = arcOutputModifier.get(ore);
if(out==null)
{
if(ApiUtils.isExistingOreName("ingot"+ore))
out = Utils.copyStackWithAmount(IEApi.getPreferredOreStack("ingot"+ore),2);
}
if(out!=null && !arcBlacklist.contains(ore))
addArcOreSmelting(out, ore);
}
else if(name.startsWith("gem"))
{
String ore = name.substring("gem".length());
if(ApiUtils.isExistingOreName("dust"+ore))
addCrusherRecipe(IEApi.getPreferredOreStack("dust"+ore), "gem"+ore, 6000, null,0);
}
else if(name.startsWith("dust"))
{
String ore = name.substring("dust".length());
ItemStack out = arcOutputModifier.get(ore);
if(out==null)
{
if(ApiUtils.isExistingOreName("ingot"+ore))
out = IEApi.getPreferredOreStack("ingot"+ore);
}
else
out = Utils.copyStackWithAmount(out, out.stackSize/2);
if(out!=null && !arcBlacklist.contains(ore))
addArcRecipe(out, "dust"+ore, 100,512, null);
if(ApiUtils.isExistingOreName("ingot"+ore))
addCrusherRecipe(IEApi.getPreferredOreStack("dust"+ore), "ingot"+ore, 3600, null,0);
}
else if(name.startsWith("plate"))
{
String ore = name.substring("plate".length());
if(ApiUtils.isExistingOreName("ingot"+ore))
{
registeredMoldBases.putAll("plate",OreDictionary.getOres(name));
MetalPressRecipe.addRecipe(IEApi.getPreferredOreStack(name), "ingot"+ore, new ItemStack(IEContent.itemMold,1,0), 2400);
}
}
else if(name.startsWith("gear"))
{
IEContent.itemMold.setMetaUnhidden(1);
String ore = name.substring("gear".length());
if(ApiUtils.isExistingOreName("ingot"+ore))
{
registeredMoldBases.putAll("gear",OreDictionary.getOres(name));
MetalPressRecipe.addRecipe(IEApi.getPreferredOreStack(name), "ingot"+ore, new ItemStack(IEContent.itemMold,1,1), 2400).setInputSize(4);
}
}
else if(name.startsWith("stick")||name.startsWith("rod"))
{
String ore = name.startsWith("stick")?name.substring("stick".length()):name.substring("rod".length());
boolean priorityStick = !name.startsWith("rod")||!ApiUtils.isExistingOreName("stick"+ore);
if(priorityStick && ApiUtils.isExistingOreName("ingot"+ore))
{
registeredMoldBases.putAll("rod",OreDictionary.getOres(name));
MetalPressRecipe.addRecipe(Utils.copyStackWithAmount(IEApi.getPreferredOreStack(name),2), "ingot"+ore, new ItemStack(IEContent.itemMold,1,2), 2400);
}
}
else if(name.startsWith("wire"))
{
String ore = name.substring("wire".length());
if(ApiUtils.isExistingOreName("ingot"+ore))
{
registeredMoldBases.putAll("wire",OreDictionary.getOres(name));
MetalPressRecipe.addRecipe(Utils.copyStackWithAmount(IEApi.getPreferredOreStack(name),2), "ingot"+ore, new ItemStack(IEContent.itemMold,1,4), 2400);
}
}
if(registeredMoldBases.containsKey("plate"))
GameRegistry.addRecipe(new RecipeShapedIngredient(new ItemStack(IEContent.itemMold, 1, 0), " P ", "PCP", " P ", 'P', "plateSteel", 'C', registeredMoldBases.get("plate")));
if(registeredMoldBases.containsKey("gear"))
GameRegistry.addRecipe(new RecipeShapedIngredient(new ItemStack(IEContent.itemMold, 1, 1), " P ", "PCP", " P ", 'P', "plateSteel", 'C', registeredMoldBases.get("gear")));
if(registeredMoldBases.containsKey("rod"))
GameRegistry.addRecipe(new RecipeShapedIngredient(new ItemStack(IEContent.itemMold, 1, 2), " P ", "PCP", " P ", 'P', "plateSteel", 'C', registeredMoldBases.get("rod")));
if(registeredMoldBases.containsKey("wire"))
GameRegistry.addRecipe(new RecipeShapedIngredient(new ItemStack(IEContent.itemMold, 1, 4), " P ", "PCP", " P ", 'P', "plateSteel", 'C', registeredMoldBases.get("wire")));
Config.manual_bool.put("crushingOreRecipe", !hammerCrushingList.isEmpty());
}
public static CrusherRecipe addCrusherRecipe(ItemStack output, Object input, int energy, Object... secondary)
{
CrusherRecipe r = CrusherRecipe.addRecipe(output, input, energy);
if(secondary!=null && secondary.length>0)
r.addToSecondaryOutput(secondary);
return r;
}
public static void addOreProcessingRecipe(ItemStack output, String ore, int energy, boolean ingot, Object secondary, float secChance)
{
if(ingot && ApiUtils.isExistingOreName("ingot"+ore))
addCrusherRecipe(Utils.copyStackWithAmount(output, output.stackSize/2), "ingot"+ore, (int)(energy*.6f));
if(ApiUtils.isExistingOreName("ore"+ore))
addCrusherRecipe(output, "ore"+ore, energy, secondary,secChance);
// if(ApiUtils.isExistingOreName("oreNether"+ore))
// addCrusherRecipe(Utils.copyStackWithAmount(output, NetherOresHelper.getCrushingResult(ore)), "oreNether"+ore, energy, secondary,secChance,Blocks.netherrack,.15f);
//YAY GregTech!
if(ApiUtils.isExistingOreName("oreNetherrack"+ore))
addCrusherRecipe(output, "oreNetherrack"+ore, energy, secondary,secChance, new ItemStack(Blocks.NETHERRACK),.15f);
if(ApiUtils.isExistingOreName("oreEndstone"+ore))
addCrusherRecipe(output, "oreEndstone"+ore, energy, secondary,secChance, "dustEndstone",.5f);
if(ApiUtils.isExistingOreName("oreBlackgranite"+ore))
addCrusherRecipe(output, "oreBlackgranite"+ore, energy, secondary,secChance, "dustGraniteBlack",.5f);
if(ApiUtils.isExistingOreName("oreRedgranite"+ore))
addCrusherRecipe(output, "oreRedgranite"+ore, energy, secondary,secChance, "dustGraniteBlack",.5f);
}
public static void addOreDictCrusherRecipe(String ore, Object secondary, float chance)
{
if(!ApiUtils.isExistingOreName("dust"+ore))
return;
ItemStack dust = IEApi.getPreferredOreStack("dust"+ore);
if(dust==null)
return;
if(ApiUtils.isExistingOreName("ore"+ore))
addCrusherRecipe(Utils.copyStackWithAmount(dust, 2), "ore"+ore, 6000, secondary,chance);
if(ApiUtils.isExistingOreName("ingot"+ore))
addCrusherRecipe(Utils.copyStackWithAmount(dust, 1), "ingot"+ore, 3600);
// if(ApiUtils.isExistingOreName("oreNether"+ore))
// addCrusherRecipe(Utils.copyStackWithAmount(dust, NetherOresHelper.getCrushingResult(ore)), "oreNether"+ore, 6000, secondary,chance,Blocks.netherrack,.15f);
//YAY GregTech!
if(ApiUtils.isExistingOreName("oreNetherrack"+ore))
addCrusherRecipe(Utils.copyStackWithAmount(dust, 2), "oreNetherrack"+ore, 6000, secondary,chance, new ItemStack(Blocks.NETHERRACK),.15f);
if(ApiUtils.isExistingOreName("oreEndstone"+ore))
addCrusherRecipe(Utils.copyStackWithAmount(dust, 2), "oreEndstone"+ore, 6000, secondary,chance, "dustEndstone",.5f);
if(ApiUtils.isExistingOreName("oreBlackgranite"+ore))
addCrusherRecipe(Utils.copyStackWithAmount(dust, 2), "oreBlackgranite"+ore, 6000, secondary,chance, "dustGraniteBlack",.5f);
if(ApiUtils.isExistingOreName("oreRedgranite"+ore))
addCrusherRecipe(Utils.copyStackWithAmount(dust, 2), "oreRedgranite"+ore, 6000, secondary,chance, "dustGraniteRed",.5f);
}
public static CrusherRecipe addItemToOreDictCrusherRecipe(String oreName, int outSize, Object input, int energy)
{
if(!ApiUtils.isExistingOreName(oreName))
return null;
ItemStack out = IEApi.getPreferredOreStack(oreName);
if(out==null)
return null;
return CrusherRecipe.addRecipe(Utils.copyStackWithAmount(out, outSize), input, energy);
}
public static HashMap<String, ItemStack> arcOutputModifier = new HashMap<String, ItemStack>();
public static HashSet<String> arcBlacklist = new HashSet<String>();
public static void initArcSmeltingRecipes()
{
//Steel
ArcFurnaceRecipe.addRecipe(new ItemStack(IEContent.itemMetal,1,8), "ingotIron", new ItemStack(IEContent.itemMaterial,1,7), 400,512, "dustCoke");
ArcFurnaceRecipe.addRecipe(new ItemStack(IEContent.itemMetal,1,8), "dustIron", new ItemStack(IEContent.itemMaterial,1,7), 400,512, "dustCoke");
//Vanilla+IE Ores
arcOutputModifier.put("Iron", new ItemStack(Items.IRON_INGOT,2));
arcOutputModifier.put("Gold", new ItemStack(Items.GOLD_INGOT,2));
arcOutputModifier.put("Copper", new ItemStack(IEContent.itemMetal,2,0));
arcOutputModifier.put("Aluminum", new ItemStack(IEContent.itemMetal,2,1));
arcOutputModifier.put("Aluminium", new ItemStack(IEContent.itemMetal,2,1));
arcOutputModifier.put("Lead", new ItemStack(IEContent.itemMetal,2,2));
arcOutputModifier.put("Silver", new ItemStack(IEContent.itemMetal,2,3));
arcOutputModifier.put("Nickel", new ItemStack(IEContent.itemMetal,2,4));
//IE Alloys
addOreDictAlloyingRecipe(new ItemStack(IEContent.itemMetal, 2, 6), "Copper", 100, 512, "dustNickel");
addOreDictAlloyingRecipe(new ItemStack(IEContent.itemMetal, 2, 6), "Nickel", 100, 512, "dustCopper");
addOreDictAlloyingRecipe(new ItemStack(IEContent.itemMetal, 2, 7), "Gold", 100, 512, "dustSilver");
addOreDictAlloyingRecipe(new ItemStack(IEContent.itemMetal, 2, 7), "Silver", 100, 512, "dustGold");
//Common Alloys
addOreDictAlloyingRecipe("ingotInvar",3, "Nickel", 200,512, "dustIron","dustIron");
addOreDictAlloyingRecipe("ingotBronze",4, "Tin", 200,512, "dustCopper","dustCopper","dustCopper");
addOreDictAlloyingRecipe("ingotBrass",4, "Zinc", 200,512, "dustCopper","dustCopper","dustCopper");
addOreDictAlloyingRecipe("ingotBlueAlloy",1, "Silver", 100,512, "dustNikolite","dustNikolite","dustNikolite","dustNikolite");
addOreDictAlloyingRecipe("ingotRedAlloy",1, "Copper", 100,512, "dustRedstone","dustRedstone","dustRedstone","dustRedstone");
//Recycling
ArcFurnaceRecipe.allowItemForRecycling(new ItemStack(IEContent.blockMetalDecoration0,1,OreDictionary.WILDCARD_VALUE));
ArcFurnaceRecipe.allowItemForRecycling(new ItemStack(IEContent.blockMetalDecoration1,1,OreDictionary.WILDCARD_VALUE));
ArcFurnaceRecipe.allowItemForRecycling(new ItemStack(IEContent.blockMetalDecoration2,1,OreDictionary.WILDCARD_VALUE));
ArcFurnaceRecipe.allowItemForRecycling(new ItemStack(IEContent.blockMetalDevice0,1,OreDictionary.WILDCARD_VALUE));
ArcFurnaceRecipe.allowItemForRecycling(new ItemStack(IEContent.blockMetalDevice1,1,OreDictionary.WILDCARD_VALUE));
ArcFurnaceRecipe.allowItemForRecycling(new ItemStack(IEContent.itemWireCoil,1,OreDictionary.WILDCARD_VALUE));
ArcFurnaceRecipe.allowItemForRecycling(new ItemStack(IEContent.itemDrillhead,1,OreDictionary.WILDCARD_VALUE));
}
public static ArcFurnaceRecipe addArcRecipe(ItemStack output, Object input, int time, int energyPerTick, ItemStack slag, Object... additives)
{
return ArcFurnaceRecipe.addRecipe(output, input, slag, time, energyPerTick, additives);
}
public static void addArcOreSmelting(ItemStack output, String ore)
{
if(ApiUtils.isExistingOreName("ore"+ore))
addArcRecipe(output, "ore"+ore, 200,512, new ItemStack(IEContent.itemMaterial,1,7)).setSpecialRecipeType("Ores");
// if(ApiUtils.isExistingOreName("oreNether"+ore))
// addArcRecipe(Utils.copyStackWithAmount(output, NetherOresHelper.getCrushingResult(ore)), "oreNether"+ore, 200,512, new ItemStack(IEContent.itemMaterial,1,13)).setSpecialRecipeType("Ores");
//YAY GregTech!
if(ApiUtils.isExistingOreName("oreNetherrack"+ore))
addArcRecipe(output, "oreNetherrack"+ore, 200,512, new ItemStack(IEContent.itemMaterial,1,7)).setSpecialRecipeType("Ores");
if(ApiUtils.isExistingOreName("oreEndstone"+ore))
addArcRecipe(output, "oreEndstone"+ore, 200,512, new ItemStack(IEContent.itemMaterial,1,7)).setSpecialRecipeType("Ores");
if(ApiUtils.isExistingOreName("oreBlackgranite"+ore))
addArcRecipe(output, "oreBlackgranite"+ore, 200,512, new ItemStack(IEContent.itemMaterial,1,7)).setSpecialRecipeType("Ores");
if(ApiUtils.isExistingOreName("oreRedgranite"+ore))
addArcRecipe(output, "oreRedgranite"+ore, 200,512, new ItemStack(IEContent.itemMaterial,1,7)).setSpecialRecipeType("Ores");
}
public static void addOreDictAlloyingRecipe(String outName, int outSize, String inputName, int time, int energyPerTick, Object... additives)
{
if(!ApiUtils.isExistingOreName(outName))
return;
ItemStack out = IEApi.getPreferredOreStack(outName);
if(out==null)
return;
addOreDictAlloyingRecipe(Utils.copyStackWithAmount(out, outSize), inputName, time,energyPerTick, additives);
}
public static void addOreDictAlloyingRecipe(ItemStack out, String inputName, int time, int energyPerTick, Object... additives)
{
if(ApiUtils.isExistingOreName("ingot"+inputName))
ArcFurnaceRecipe.addRecipe(out, "ingot"+inputName, null, time, energyPerTick, additives).setSpecialRecipeType("Alloying");
if(ApiUtils.isExistingOreName("dust"+inputName))
ArcFurnaceRecipe.addRecipe(out, "dust"+inputName, null, time, energyPerTick, additives).setSpecialRecipeType("Alloying");
}
}