package gregtech.api.util;
import static gregtech.api.enums.GT_Values.*;
import static gregtech.api.enums.Materials.*;
import static gregtech.api.enums.Materials.Void;
import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sHammerRecipes;
import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sMaceratorRecipes;
import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sWiremillRecipes;
import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
import static gregtech.api.util.GT_RecipeBuilder.TICKS;
import static gregtech.api.util.GT_RecipeConstants.UniversalArcFurnace;
import static gregtech.api.util.GT_Utility.calculateRecipeEU;
import java.lang.reflect.Field;
import java.util.*;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.ShapedRecipes;
import net.minecraft.item.crafting.ShapelessRecipes;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.SetMultimap;
import cpw.mods.fml.relauncher.ReflectionHelper;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
import gregtech.api.enums.*;
import gregtech.api.objects.ItemData;
import gregtech.api.objects.MaterialStack;
import ic2.api.reactor.IReactorComponent;
/**
* Class for Automatic Recipe registering.
*/
public class GT_RecipeRegistrator {
/**
* List of Materials, which are used in the Creation of Sticks. All Rod Materials are automatically added to this
* List.
*/
public static final List<Materials> sRodMaterialList = new ArrayList<>();
private static final ItemStack sMt1 = new ItemStack(Blocks.dirt, 1, 0), sMt2 = new ItemStack(Blocks.dirt, 1, 0);
private static final String s_H = "h", s_F = "f", s_I = "I", s_P = "P", s_R = "R";
private static final RecipeShape[] sShapes = new RecipeShape[] {
new RecipeShape(sMt1, null, sMt1, sMt1, sMt1, sMt1, null, sMt1, null),
new RecipeShape(sMt1, null, sMt1, sMt1, null, sMt1, sMt1, sMt1, sMt1),
new RecipeShape(null, sMt1, null, sMt1, sMt1, sMt1, sMt1, null, sMt1),
new RecipeShape(sMt1, sMt1, sMt1, sMt1, null, sMt1, null, null, null),
new RecipeShape(sMt1, null, sMt1, sMt1, sMt1, sMt1, sMt1, sMt1, sMt1),
new RecipeShape(sMt1, sMt1, sMt1, sMt1, null, sMt1, sMt1, null, sMt1),
new RecipeShape(null, null, null, sMt1, null, sMt1, sMt1, null, sMt1),
new RecipeShape(null, sMt1, null, null, sMt1, null, null, sMt2, null),
new RecipeShape(sMt1, sMt1, sMt1, null, sMt2, null, null, sMt2, null),
new RecipeShape(null, sMt1, null, null, sMt2, null, null, sMt2, null),
new RecipeShape(sMt1, sMt1, null, sMt1, sMt2, null, null, sMt2, null),
new RecipeShape(null, sMt1, sMt1, null, sMt2, sMt1, null, sMt2, null),
new RecipeShape(sMt1, sMt1, null, null, sMt2, null, null, sMt2, null),
new RecipeShape(null, sMt1, sMt1, null, sMt2, null, null, sMt2, null),
new RecipeShape(null, sMt1, null, sMt1, null, null, null, sMt1, sMt2),
new RecipeShape(null, sMt1, null, null, null, sMt1, sMt2, sMt1, null),
new RecipeShape(null, sMt1, null, sMt1, null, sMt1, null, null, sMt2),
new RecipeShape(null, sMt1, null, sMt1, null, sMt1, sMt2, null, null),
new RecipeShape(null, sMt2, null, null, sMt1, null, null, sMt1, null),
new RecipeShape(null, sMt2, null, null, sMt2, null, sMt1, sMt1, sMt1),
new RecipeShape(null, sMt2, null, null, sMt2, null, null, sMt1, null),
new RecipeShape(null, sMt2, null, sMt1, sMt2, null, sMt1,