Search in sources :

Example 1 with OreDictPrefix

use of gregapi.oredict.OreDictPrefix in project gregtech6 by GregTech6.

the class Loader_Recipes_Replace method run.

@SuppressWarnings("rawtypes")
@Override
public void run() {
    OUT.println("GT_Mod: Replacing Vanilla alike Recipes.");
    NON_REPLACEABLE.add(ST.make(ToolsGT.sMetaTool, 1, W));
    NON_REPLACEABLE.add(ST.make(Items.bow, 1, W));
    NON_REPLACEABLE.add(ST.make(Items.fishing_rod, 1, W));
    NON_REPLACEABLE.add(IL.IC2_ForgeHammer.getWithMeta(1, W));
    NON_REPLACEABLE.add(IL.IC2_WireCutter.getWithMeta(1, W));
    NON_REPLACEABLE.add(ST.mkic("painter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("blackPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("redPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("greenPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("brownPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("bluePainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("purplePainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("cyanPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("lightGreyPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("darkGreyPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("pinkPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("limePainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("yellowPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("cloudPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("magentaPainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("orangePainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("whitePainter", 1, W));
    NON_REPLACEABLE.add(ST.mkic("cfPack", 1, W));
    NON_REPLACEABLE.add(ST.mkic("jetpack", 1, W));
    NON_REPLACEABLE.add(ST.mkic("treetap", 1, W));
    NON_REPLACEABLE.add(ST.mkic("weedEx", 1, W));
    NON_REPLACEABLE.add(ST.mkic("staticBoots", 1, W));
    NON_REPLACEABLE.add(ST.mkic("compositeArmor", 1, W));
    NON_REPLACEABLE.add(ST.mkic("hazmatHelmet", 1, W));
    NON_REPLACEABLE.add(ST.mkic("hazmatChestplate", 1, W));
    NON_REPLACEABLE.add(ST.mkic("hazmatLeggings", 1, W));
    NON_REPLACEABLE.add(ST.mkic("hazmatBoots", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.RC, "part.turbine.disk", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.RC, "part.turbine.blade", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.RC, "part.turbine.rotor", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.RC, "borehead.diamond", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.RC, "borehead.steel", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.RC, "borehead.iron", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.TF, "item.plateNaga", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.TF, "item.legsNaga", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.TF, "item.arcticHelm", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.TF, "item.arcticPlate", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.TF, "item.arcticLegs", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.TF, "item.arcticBoots", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.TF, "item.yetiHelm", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.TF, "item.yetiPlate", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.TF, "item.yetiLegs", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.TF, "item.yetiBoots", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.AE, "item.ToolCertusQuartzCuttingKnife", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.AE, "item.ToolNetherQuartzCuttingKnife", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.FR, "apiaristHelmet", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.FR, "apiaristChest", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.FR, "apiaristLegs", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.FR, "apiaristBoots", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.FR, "frameUntreated", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.FR, "frameImpregnated", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.FR, "frameProven", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.FR, "waxCast", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.GC, "item.sensorGlasses", 1, W));
    NON_REPLACEABLE.add(ST.make(MD.NC, "ItemToolThermometer", 1, W));
    List<ItemStack> tStickList = OreDictionary.getOres(OD.stickWood.toString());
    HashSetNoNulls<Object> tAlreadyScannedItems = new HashSetNoNulls<>();
    ArrayListNoNulls<RecipeReplacement> tList = new ArrayListNoNulls<>();
    List<IRecipe> tRecipeList = CR.list();
    boolean tUseProgressBar = UT.LoadingBar.start("Looking up Recipes", tRecipeList.size());
    for (int l = 0; l < tRecipeList.size(); l++) {
        IRecipe tRecipe = tRecipeList.get(l);
        if (tUseProgressBar)
            UT.LoadingBar.step("");
        ItemStack aOutput = tRecipe.getRecipeOutput();
        if (ST.invalid(aOutput))
            continue;
        if (aOutput.stackSize != 1)
            continue;
        if (aOutput.getMaxDamage() <= 0)
            continue;
        if (aOutput.getMaxStackSize() != 1)
            continue;
        if (tRecipe instanceof ShapelessRecipes)
            continue;
        if (tRecipe instanceof ShapelessOreRecipe)
            continue;
        if (tRecipe instanceof ICraftingRecipeGT)
            continue;
        if (ST.block(aOutput) != NB)
            continue;
        if (COMPAT_IC2 != null && COMPAT_IC2.isReactorItem(aOutput))
            continue;
        if (COMPAT_EU_ITEM != null && COMPAT_EU_ITEM.is(aOutput))
            continue;
        if (NON_REPLACEABLE.contains(aOutput, T))
            continue;
        if (sNonReplaceableNames.contains(aOutput.getUnlocalizedName()))
            continue;
        Object[] tRecipeInputs = null;
        if (tRecipe instanceof ShapedOreRecipe) {
            tRecipeInputs = ((ShapedOreRecipe) tRecipe).getInput();
        } else if (tRecipe instanceof ShapedRecipes) {
            tRecipeInputs = ((ShapedRecipes) tRecipe).recipeItems;
        } else if (MD.IC2.mLoaded && tRecipe instanceof ic2.core.AdvRecipe) {
            tRecipeInputs = ((ic2.core.AdvRecipe) tRecipe).input;
        }
        if (tRecipeInputs == null || tRecipeInputs.length <= 0)
            continue;
        OreDictPrefix tPrefix = null;
        OreDictMaterial tMat = null, tRod = null;
        boolean temp = T;
        tAlreadyScannedItems.clear();
        for (int i = 0; i < tRecipeInputs.length; i++) {
            Object tObject = tRecipeInputs[i];
            if (!tAlreadyScannedItems.add(tObject))
                continue;
            OreDictItemData tData = null;
            if (tObject instanceof ItemStack) {
                if (IL.Stick.equal(tObject, T, T)) {
                    tRod = ANY.Wood;
                    continue;
                }
                tData = OM.anyassociation((ItemStack) tObject);
            } else if (MD.IC2.mLoaded && tObject instanceof ic2.api.recipe.RecipeInputItemStack) {
                if (IL.Stick.equal(((ic2.api.recipe.RecipeInputItemStack) tObject).input, T, T)) {
                    tRod = ANY.Wood;
                    continue;
                }
                tData = OM.anyassociation(((ic2.api.recipe.RecipeInputItemStack) tObject).input);
            } else if (MD.IC2.mLoaded && tObject instanceof ic2.api.recipe.RecipeInputOreDict) {
                if (OD.stickWood.toString().equals(((ic2.api.recipe.RecipeInputOreDict) tObject).input)) {
                    tRod = ANY.Wood;
                    continue;
                }
                if (OD.stickAnyWood.toString().equals(((ic2.api.recipe.RecipeInputOreDict) tObject).input)) {
                    tRod = ANY.Wood;
                    continue;
                }
                tData = OM.data(((ic2.api.recipe.RecipeInputOreDict) tObject).input);
            } else if (tObject instanceof List) {
                if (tStickList == tObject) {
                    tRod = ANY.Wood;
                    continue;
                }
                switch(((List) tObject).size()) {
                    case 0:
                        temp = F;
                        break;
                    case 1:
                        if (((List) tObject).get(0) instanceof ItemStack) {
                            tData = OM.anyassociation((ItemStack) (((List) tObject).get(0)));
                        } else {
                            temp = F;
                        }
                        break;
                    default:
                        for (Object tContent : ((List) tObject)) if (tContent instanceof ItemStack) {
                            if (tData == null) {
                                tData = OM.anyassociation((ItemStack) tContent);
                                if (tData == null || !tData.hasValidPrefixMaterialData()) {
                                    temp = F;
                                    break;
                                }
                            } else {
                                OreDictItemData tAssociation = OM.anyassociation((ItemStack) tContent);
                                if (tAssociation == null || tAssociation.mPrefix != tData.mPrefix || tAssociation.mMaterial.mMaterial != tData.mMaterial.mMaterial) {
                                    temp = F;
                                    break;
                                }
                            }
                        } else {
                            temp = F;
                            break;
                        }
                        break;
                }
                if (!temp)
                    break;
            } else {
                temp = F;
                break;
            }
            if (tData == null) {
                temp = F;
                break;
            }
            if (tData.mPrefix == OP.stick) {
                if (tRod != null && tRod != tData.mMaterial.mMaterial) {
                    temp = F;
                    break;
                }
                tRod = tData.mMaterial.mMaterial;
            } else {
                if (tMat != null && tMat != tData.mMaterial.mMaterial) {
                    temp = F;
                    break;
                }
                if (tData.mPrefix != OP.ingot && tData.mPrefix != OP.gem) {
                    temp = F;
                    break;
                }
                tMat = tData.mMaterial.mMaterial;
                tPrefix = tData.mPrefix;
            }
        }
        if (temp)
            tList.add(new RecipeReplacement(tRecipe, tPrefix, tMat, tRod));
    }
    if (tUseProgressBar)
        UT.LoadingBar.finish();
    tUseProgressBar = UT.LoadingBar.start("Replacing Recipes", tList.size());
    for (RecipeReplacement aRecipe : tList) {
        if (tUseProgressBar)
            UT.LoadingBar.step(aRecipe.mMat);
        if (aRecipe.mPrefix == null || aRecipe.mMat == null)
            continue;
        ItemStack tMat = aRecipe.mPrefix.mat(aRecipe.mMat, 1);
        if (tMat == null)
            continue;
        INGT.func_150996_a(tMat.getItem());
        INGT.stackSize = 1;
        ST.meta_(INGT, ST.meta_(tMat));
        RecipeReplacer[] tReplacer = sRecipesMat;
        if (aRecipe.mRod != null) {
            ItemStack tRod = (aRecipe.mRod == ANY.Wood ? IL.Stick.get(1) : OP.stick.mat(aRecipe.mRod, 1));
            if (tRod == null)
                continue;
            STCK.func_150996_a(tRod.getItem());
            STCK.stackSize = 1;
            ST.meta_(STCK, ST.meta_(tRod));
            tReplacer = sRecipesRod;
        }
        for (RecipeReplacer aReplacer : tReplacer) {
            ItemStack tCrafted = getRecipeOutput(aRecipe.mRecipe, aReplacer.mRecipe);
            if (tCrafted == null)
                continue;
            int tMatCount = 0, tRodCount = 0;
            for (ItemStack tStack : aReplacer.mRecipe) if (tStack == INGT)
                tMatCount++;
            else if (tStack == STCK)
                tRodCount++;
            OM.dat2(tCrafted, aRecipe.mMat, aRecipe.mPrefix.mAmount * tMatCount, OM.stack(aRecipe.mRod, OP.stick.mAmount * tRodCount));
            if (aRecipe.mPrefix != OP.ingot)
                continue;
            ItemStack tPlate = OP.plate.mat(aRecipe.mMat, 1);
            if (tPlate == null || aReplacer.mShape == null || aReplacer.mShape.length <= 0)
                continue;
            if (!ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, aRecipe.mMat + "." + aReplacer.mName, T))
                continue;
            if (!tRecipeList.remove(aRecipe.mRecipe))
                continue;
            Object tNamePlate = OreDictionary.getOres(OP.plate.dat(aRecipe.mMat).toString()).isEmpty() ? OP.ingot.dat(aRecipe.mMat) : OP.plate.dat(aRecipe.mMat), tNameCurve = OreDictionary.getOres(OP.plateCurved.dat(aRecipe.mMat).toString()).isEmpty() ? tNamePlate : OP.plateCurved.dat(aRecipe.mMat);
            switch(aReplacer.mShape.length) {
                case 1:
                    CR.shaped(tCrafted, CR.DEF, new Object[] { aReplacer.mShape[0], PLT.charAt(0), tNamePlate, CRV.charAt(0), tNameCurve, ROD.charAt(0), OP.stick.dat(aRecipe.mRod == null ? aRecipe.mMat : aRecipe.mRod), NGT.charAt(0), OP.ingot.dat(aRecipe.mMat) });
                    break;
                case 2:
                    CR.shaped(tCrafted, CR.DEF, new Object[] { aReplacer.mShape[0], aReplacer.mShape[1], PLT.charAt(0), tNamePlate, CRV.charAt(0), tNameCurve, ROD.charAt(0), OP.stick.dat(aRecipe.mRod == null ? aRecipe.mMat : aRecipe.mRod), NGT.charAt(0), OP.ingot.dat(aRecipe.mMat) });
                    break;
                default:
                    CR.shaped(tCrafted, CR.DEF, new Object[] { aReplacer.mShape[0], aReplacer.mShape[1], aReplacer.mShape[2], PLT.charAt(0), tNamePlate, CRV.charAt(0), tNameCurve, ROD.charAt(0), OP.stick.dat(aRecipe.mRod == null ? aRecipe.mMat : aRecipe.mRod), NGT.charAt(0), OP.ingot.dat(aRecipe.mMat) });
                    break;
            }
        }
    }
    if (tUseProgressBar)
        UT.LoadingBar.finish();
}
Also used : ShapedRecipes(net.minecraft.item.crafting.ShapedRecipes) OreDictItemData(gregapi.oredict.OreDictItemData) ICraftingRecipeGT(gregapi.recipes.ICraftingRecipeGT) ShapelessOreRecipe(net.minecraftforge.oredict.ShapelessOreRecipe) List(java.util.List) ShapelessRecipes(net.minecraft.item.crafting.ShapelessRecipes) OreDictMaterial(gregapi.oredict.OreDictMaterial) IRecipe(net.minecraft.item.crafting.IRecipe) ShapedOreRecipe(net.minecraftforge.oredict.ShapedOreRecipe) ArrayListNoNulls(gregapi.code.ArrayListNoNulls) HashSetNoNulls(gregapi.code.HashSetNoNulls) OreDictPrefix(gregapi.oredict.OreDictPrefix) ItemStack(net.minecraft.item.ItemStack)

Example 2 with OreDictPrefix

use of gregapi.oredict.OreDictPrefix in project gregtech6 by GregTech6.

the class Compat_Recipes_Ganys method onPostLoad.

@Override
public void onPostLoad(FMLPostInitializationEvent aInitEvent) {
    if (MD.EtFu.mLoaded) {
        OUT.println("GT_Mod: Doing Recipes of the Future.");
        ItemStack tEtFuturumPurpur = ST.make(MD.EtFu, "purpur_block", 1, 0), tEtFuturumPurpurPillar = ST.make(MD.EtFu, "purpur_pillar", 1, 0);
        RM.sawing(16, 16, F, 100, tEtFuturumPurpur, ST.make(MD.EtFu, "purpur_slab", 2, 0));
        RM.sawing(16, 16, F, 100, tEtFuturumPurpurPillar, ST.make(MD.EtFu, "purpur_slab", 2, 0));
        CR.shapeless(tEtFuturumPurpur, new Object[] { tEtFuturumPurpurPillar });
        CR.shaped(ST.make(MD.EtFu, "slime", 1, 0), CR.DEF | CR.DEL_OTHER_SHAPED_RECIPES | CR.DEL_OTHER_NATIVE_RECIPES, "XXX", "XXX", "XXX", 'X', ST.make(Items.slime_ball, 1, W));
        RM.ic2_compressor(ST.make(Items.slime_ball, 9, 0), ST.make(MD.EtFu, "slime", 1, 0));
        RM.Compressor.addRecipe1(T, 16, 16, ST.make(Items.slime_ball, 9, W), ST.make(MD.EtFu, "slime", 1, 0));
        RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.slime_ball, 9, W), ST.tag(9), ST.make(MD.EtFu, "slime", 1, 0));
        RM.Unboxinator.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "slime", 1, 0), ST.make(Items.slime_ball, 9, 0));
        RM.ic2_extractor(ST.make(MD.EtFu, "slime", 1, 0), ST.make(Items.slime_ball, 9, 0));
        RM.Squeezer.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "sponge", 1, 1), ST.make(MD.EtFu, "sponge", 1, 0));
        RM.Drying.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "sponge", 1, 1), ST.make(MD.EtFu, "sponge", 1, 0));
        RM.smash(ST.make(MD.EtFu, "red_sandstone", 1, W), ST.make(Blocks.sand, 1, 1));
        RM.sawing(16, 16, F, 100, ST.make(MD.EtFu, "red_sandstone", 1, W), ST.make(MD.EtFu, "red_sandstone_slab", 2, 0));
        RM.Compressor.addRecipe1(T, 16, 32, ST.make(Blocks.sand, 4, 1), ST.make(MD.EtFu, "red_sandstone", 1, 0));
        RM.smash(IL.EtFu_Quartz_Bricks.get(1), OP.gem.mat(MT.NetherQuartz, 4));
        RM.generify(ST.make(Blocks.sponge, 1, W), ST.make(MD.EtFu, "sponge", 1, 0));
        RM.generify(ST.make(MD.EtFu, "sponge", 1, 0), ST.make(Blocks.sponge, 1, 0));
        RM.generify(ST.make(Blocks.double_plant, 1, 4), ST.make(MD.EtFu, "rose", 6, 0));
        RM.generify(ST.make(MD.EtFu, "rose", 6, 0), ST.make(Blocks.double_plant, 1, 4));
        RM.generify(tEtFuturumPurpurPillar, tEtFuturumPurpur);
        RM.Mixer.addRecipe1(T, 16, 16, IL.EtFu_Chorus_Fruit.get(1), FL.Potion_FireResistance_1.make(125), FL.Dragon_Breath.make(125), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, IL.EtFu_Chorus_Fruit.get(1), FL.Potion_FireResistance_1L.make(125), FL.Dragon_Breath.make(125), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, IL.EtFu_Chorus_Fruit.get(1), FL.Potion_FireResistance_1S.make(125), FL.Dragon_Breath.make(125), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, IL.EtFu_Chorus_Fruit.get(1), FL.Potion_FireResistance_1LS.make(125), FL.Dragon_Breath.make(125), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, IL.EtFu_Chorus_Fruit.get(1), FL.Potion_FireResistance_1D.make(125), FL.Dragon_Breath.make(125), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, IL.EtFu_Chorus_Fruit.get(1), FL.Potion_FireResistance_1LD.make(125), FL.Dragon_Breath.make(125), ZL_IS);
        CR.shapeless(IL.Plank.get(7), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, IL.EtFu_Barrel });
        RM.sawing(16, 112, F, 100, IL.EtFu_Barrel.get(1), IL.Plank.get(7));
        RM.Squeezer.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "rose", 1, 0), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Red], ST.make(Items.dye, 1, DYE_INDEX_Red));
        RM.Juicer.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "rose", 1, 0), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Red], ST.make(Items.dye, 1, DYE_INDEX_Red));
        RM.ic2_extractor(ST.make(MD.EtFu, "rose", 1, 0), ST.make(Items.dye, 2, DYE_INDEX_Red));
        RM.Squeezer.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "lily_of_the_valley", 1, 0), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_White], ST.make(MD.EtFu, "dye", 1, 0));
        RM.Juicer.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "lily_of_the_valley", 1, 0), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_White], ST.make(MD.EtFu, "dye", 1, 0));
        RM.ic2_extractor(ST.make(MD.EtFu, "lily_of_the_valley", 1, 0), ST.make(MD.EtFu, "dye", 2, 0));
        RM.Squeezer.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "cornflower", 1, 0), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Blue], ST.make(MD.EtFu, "dye", 1, 1));
        RM.Juicer.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "cornflower", 1, 0), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Blue], ST.make(MD.EtFu, "dye", 1, 1));
        RM.ic2_extractor(ST.make(MD.EtFu, "cornflower", 1, 0), ST.make(MD.EtFu, "dye", 2, 1));
        RM.Squeezer.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "wither_rose", 1, 0), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Black], ST.make(MD.EtFu, "dye", 1, 3));
        RM.Juicer.addRecipe1(T, 16, 16, ST.make(MD.EtFu, "wither_rose", 1, 0), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Black], ST.make(MD.EtFu, "dye", 1, 3));
        RM.ic2_extractor(ST.make(MD.EtFu, "wither_rose", 1, 0), ST.make(MD.EtFu, "dye", 2, 3));
        RM.Distillery.addRecipe1(T, 16, 48, IL.EtFu_Wither_Rose.get(1), FL.Potion_Thick.make(750), FL.Potion_Harm_2.make(750), ZL_IS);
        RM.smash(ST.make(MD.EtFu, "brown_mushroom", 1, W), ST.make(Blocks.brown_mushroom, 1, 0));
        RM.smash(ST.make(MD.EtFu, "red_mushroom", 1, W), ST.make(Blocks.red_mushroom, 1, 0));
        RM.biomass(ST.make(MD.EtFu, "brown_mushroom", 8, W));
        RM.biomass(ST.make(MD.EtFu, "red_mushroom", 8, W));
        RM.biomass(ST.make(MD.EtFu, "rose", 8, W));
        RM.biomass(ST.make(MD.EtFu, "wither_rose", 8, W));
        RM.biomass(ST.make(MD.EtFu, "cornflower", 8, W));
        RM.biomass(ST.make(MD.EtFu, "lily_of_the_valley", 8, W));
        RM.biomass(IL.EtFu_Wart_Block_Nether.wild(1));
        RM.compact(ST.make(Items.nether_wart, 1, 0), 9, IL.EtFu_Wart_Block_Nether.get(1));
        CR.delate(MD.EtFu, "netherite_ingot", "netherite_sword", "netherite_pickaxe", "netherite_spade", "netherite_axe", "netherite_hoe", "netherite_helmet", "netherite_chestplate", "netherite_leggings", "netherite_boots", "copper_block", "cut_copper_slab", "cut_copper_stairs", "exposed_cut_copper_stairs", "weathered_cut_copper_stairs", "oxidized_cut_copper_stairs", "waxed_cut_copper_stairs", "waxed_exposed_cut_copper_stairs", "waxed_weathered_cut_copper_stairs", "waxed_oxidized_cut_copper_stairs");
        RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_sword, 1, 0), MT.Netherite.liquid(2 * U4, T), NF, ST.make(MD.EtFu, "netherite_sword", 1, 0));
        RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_pickaxe, 1, 0), MT.Netherite.liquid(3 * U4, T), NF, ST.make(MD.EtFu, "netherite_pickaxe", 1, 0));
        RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_shovel, 1, 0), MT.Netherite.liquid(1 * U4, T), NF, ST.make(MD.EtFu, "netherite_spade", 1, 0));
        RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_axe, 1, 0), MT.Netherite.liquid(3 * U4, T), NF, ST.make(MD.EtFu, "netherite_axe", 1, 0));
        RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_hoe, 1, 0), MT.Netherite.liquid(2 * U4, T), NF, ST.make(MD.EtFu, "netherite_hoe", 1, 0));
        RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_helmet, 1, 0), MT.Netherite.liquid(5 * U4, T), NF, ST.make(MD.EtFu, "netherite_helmet", 1, 0));
        RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_chestplate, 1, 0), MT.Netherite.liquid(8 * U4, T), NF, ST.make(MD.EtFu, "netherite_chestplate", 1, 0));
        RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_leggings, 1, 0), MT.Netherite.liquid(7 * U4, T), NF, ST.make(MD.EtFu, "netherite_leggings", 1, 0));
        RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_boots, 1, 0), MT.Netherite.liquid(4 * U4, T), NF, ST.make(MD.EtFu, "netherite_boots", 1, 0));
        if (IL.EtFu_Block_Copper.exists()) {
            CR.remove(IL.EtFu_Block_Copper.get(1));
            CR.remove(IL.EtFu_Block_Copper_Waxed.get(1));
            CR.shaped(IL.EtFu_Block_Copper_Cut.get(1), CR.DEF_MIR, "X", "X", 'X', IL.EtFu_Slabs_Copper_Cut);
            CR.shaped(IL.EtFu_Block_Copper_Cut.get(1), CR.DEF_MIR, "XX", "XX", 'X', OP.ingot.dat(ANY.Cu));
            CR.shaped(IL.EtFu_Slabs_Copper_Cut.get(1), CR.DEF_MIR, "XX", 'X', OP.ingot.dat(ANY.Cu));
            CR.shaped(IL.EtFu_Stair_Copper_Cut.get(1), CR.DEF_MIR, " X", "XX", 'X', OP.ingot.dat(ANY.Cu));
            CR.shapeless(OP.ingot.mat(MT.Cu, 9), new Object[] { IL.EtFu_Block_Copper });
            CR.shapeless(OP.ingot.mat(MT.Cu, 9), new Object[] { IL.EtFu_Block_Copper_Waxed });
            CR.shapeless(OP.ingot.mat(MT.Cu, 4), new Object[] { IL.EtFu_Block_Copper_Cut });
            CR.shapeless(OP.ingot.mat(MT.Cu, 4), new Object[] { IL.EtFu_Block_Copper_Cut_Waxed });
            CR.shapeless(OP.ingot.mat(MT.Cu, 2), new Object[] { IL.EtFu_Slabs_Copper_Cut });
            CR.shapeless(OP.ingot.mat(MT.Cu, 2), new Object[] { IL.EtFu_Slabs_Copper_Cut_Waxed });
            CR.shapeless(OP.ingot.mat(MT.Cu, 3), new Object[] { IL.EtFu_Stair_Copper_Cut });
            CR.shapeless(OP.ingot.mat(MT.Cu, 3), new Object[] { IL.EtFu_Stair_Copper_Cut_Waxed });
            CR.shaped(IL.EtFu_Slabs_Copper_Cut.get(2), CR.DEF_MIR, "sX", 'X', IL.EtFu_Block_Copper_Cut);
            CR.shaped(IL.EtFu_Slabs_Copper_Cut_Exposed.get(2), CR.DEF_MIR, "sX", 'X', IL.EtFu_Block_Copper_Cut_Exposed);
            CR.shaped(IL.EtFu_Slabs_Copper_Cut_Weathered.get(2), CR.DEF_MIR, "sX", 'X', IL.EtFu_Block_Copper_Cut_Weathered);
            CR.shaped(IL.EtFu_Slabs_Copper_Cut_Oxidized.get(2), CR.DEF_MIR, "sX", 'X', IL.EtFu_Block_Copper_Cut_Oxidized);
            CR.shaped(IL.EtFu_Slabs_Copper_Cut_Waxed.get(2), CR.DEF_MIR, "sX", 'X', IL.EtFu_Block_Copper_Cut_Waxed);
            CR.shaped(IL.EtFu_Slabs_Copper_Cut_Exposed_Waxed.get(2), CR.DEF_MIR, "sX", 'X', IL.EtFu_Block_Copper_Cut_Exposed_Waxed);
            CR.shaped(IL.EtFu_Slabs_Copper_Cut_Weathered_Waxed.get(2), CR.DEF_MIR, "sX", 'X', IL.EtFu_Block_Copper_Cut_Weathered_Waxed);
            CR.shaped(IL.EtFu_Slabs_Copper_Cut_Oxidized_Waxed.get(2), CR.DEF_MIR, "sX", 'X', IL.EtFu_Block_Copper_Cut_Oxidized_Waxed);
            CR.shaped(IL.EtFu_Stair_Copper_Cut.get(4), CR.DEF_MIR, "sX", "XX", 'X', IL.EtFu_Block_Copper_Cut);
            CR.shaped(IL.EtFu_Stair_Copper_Cut_Exposed.get(4), CR.DEF_MIR, "sX", "XX", 'X', IL.EtFu_Block_Copper_Cut_Exposed);
            CR.shaped(IL.EtFu_Stair_Copper_Cut_Weathered.get(4), CR.DEF_MIR, "sX", "XX", 'X', IL.EtFu_Block_Copper_Cut_Weathered);
            CR.shaped(IL.EtFu_Stair_Copper_Cut_Oxidized.get(4), CR.DEF_MIR, "sX", "XX", 'X', IL.EtFu_Block_Copper_Cut_Oxidized);
            CR.shaped(IL.EtFu_Stair_Copper_Cut_Waxed.get(4), CR.DEF_MIR, "sX", "XX", 'X', IL.EtFu_Block_Copper_Cut_Waxed);
            CR.shaped(IL.EtFu_Stair_Copper_Cut_Exposed_Waxed.get(4), CR.DEF_MIR, "sX", "XX", 'X', IL.EtFu_Block_Copper_Cut_Exposed_Waxed);
            CR.shaped(IL.EtFu_Stair_Copper_Cut_Weathered_Waxed.get(4), CR.DEF_MIR, "sX", "XX", 'X', IL.EtFu_Block_Copper_Cut_Weathered_Waxed);
            if (IL.EtFu_Stair_Copper_Cut_Oxidized_Waxed.exists())
                CR.shaped(IL.EtFu_Stair_Copper_Cut_Oxidized_Waxed.get(4), CR.DEF_MIR, "sX", "XX", 'X', IL.EtFu_Block_Copper_Cut_Oxidized_Waxed);
            for (OreDictPrefix tPrefix : OP.array_dust_ingot_plate) {
                CR.shapeless(IL.EtFu_Block_Copper_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Block_Copper, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Block_Copper_Exposed_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Block_Copper_Exposed, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Block_Copper_Weathered_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Block_Copper_Weathered, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Block_Copper_Oxidized_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Block_Copper_Oxidized, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Block_Copper_Cut_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Block_Copper_Cut, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Block_Copper_Cut_Exposed_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Block_Copper_Cut_Exposed, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Block_Copper_Cut_Weathered_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Block_Copper_Cut_Weathered, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Block_Copper_Cut_Oxidized_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Block_Copper_Cut_Oxidized, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Slabs_Copper_Cut_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Slabs_Copper_Cut, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Slabs_Copper_Cut_Exposed_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Slabs_Copper_Cut_Exposed, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Slabs_Copper_Cut_Weathered_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Slabs_Copper_Cut_Weathered, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Slabs_Copper_Cut_Oxidized_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Slabs_Copper_Cut_Oxidized, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Stair_Copper_Cut_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Stair_Copper_Cut, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Stair_Copper_Cut_Exposed_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Stair_Copper_Cut_Exposed, tPrefix.dat(ANY.Wax) });
                CR.shapeless(IL.EtFu_Stair_Copper_Cut_Weathered_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Stair_Copper_Cut_Weathered, tPrefix.dat(ANY.Wax) });
                if (IL.EtFu_Stair_Copper_Cut_Oxidized_Waxed.exists())
                    CR.shapeless(IL.EtFu_Stair_Copper_Cut_Oxidized_Waxed.get(1), CR.DEF_NCC, new Object[] { IL.EtFu_Stair_Copper_Cut_Oxidized, tPrefix.dat(ANY.Wax) });
            }
            for (OreDictMaterial tMat : ANY.Cu.mToThis) {
                RM.pack(OP.ingot.mat(tMat, 2), IL.EtFu_Slabs_Copper_Cut.get(1));
                RM.pack(OP.ingot.mat(tMat, 3), IL.EtFu_Stair_Copper_Cut.get(1));
                RM.pack(OP.ingot.mat(tMat, 4), IL.EtFu_Block_Copper_Cut.get(1));
            }
            RM.unpack(IL.EtFu_Block_Copper.get(1), OP.ingot.mat(MT.Cu, 9));
            RM.unpack(IL.EtFu_Block_Copper_Exposed.get(1), OP.ingot.mat(MT.Cu, 9));
            RM.unpack(IL.EtFu_Block_Copper_Weathered.get(1), OP.ingot.mat(MT.Cu, 9));
            RM.unpack(IL.EtFu_Block_Copper_Oxidized.get(1), OP.ingot.mat(MT.Cu, 9));
            RM.unpack(IL.EtFu_Block_Copper_Waxed.get(1), OP.ingot.mat(MT.Cu, 9));
            RM.unpack(IL.EtFu_Block_Copper_Exposed_Waxed.get(1), OP.ingot.mat(MT.Cu, 9));
            RM.unpack(IL.EtFu_Block_Copper_Weathered_Waxed.get(1), OP.ingot.mat(MT.Cu, 9));
            RM.unpack(IL.EtFu_Block_Copper_Oxidized_Waxed.get(1), OP.ingot.mat(MT.Cu, 9));
            RM.unpack(IL.EtFu_Block_Copper_Cut.get(1), OP.ingot.mat(MT.Cu, 4));
            RM.unpack(IL.EtFu_Block_Copper_Cut_Exposed.get(1), OP.ingot.mat(MT.Cu, 4));
            RM.unpack(IL.EtFu_Block_Copper_Cut_Weathered.get(1), OP.ingot.mat(MT.Cu, 4));
            RM.unpack(IL.EtFu_Block_Copper_Cut_Oxidized.get(1), OP.ingot.mat(MT.Cu, 4));
            RM.unpack(IL.EtFu_Block_Copper_Cut_Waxed.get(1), OP.ingot.mat(MT.Cu, 4));
            RM.unpack(IL.EtFu_Block_Copper_Cut_Exposed_Waxed.get(1), OP.ingot.mat(MT.Cu, 4));
            RM.unpack(IL.EtFu_Block_Copper_Cut_Weathered_Waxed.get(1), OP.ingot.mat(MT.Cu, 4));
            RM.unpack(IL.EtFu_Block_Copper_Cut_Oxidized_Waxed.get(1), OP.ingot.mat(MT.Cu, 4));
            RM.unpack(IL.EtFu_Slabs_Copper_Cut.wild(1), OP.ingot.mat(MT.Cu, 2));
            RM.unpack(IL.EtFu_Stair_Copper_Cut.wild(1), OP.ingot.mat(MT.Cu, 3));
            RM.unpack(IL.EtFu_Stair_Copper_Cut_Exposed.wild(1), OP.ingot.mat(MT.Cu, 3));
            RM.unpack(IL.EtFu_Stair_Copper_Cut_Weathered.wild(1), OP.ingot.mat(MT.Cu, 3));
            RM.unpack(IL.EtFu_Stair_Copper_Cut_Oxidized.wild(1), OP.ingot.mat(MT.Cu, 3));
            RM.unpack(IL.EtFu_Stair_Copper_Cut_Waxed.wild(1), OP.ingot.mat(MT.Cu, 3));
            RM.unpack(IL.EtFu_Stair_Copper_Cut_Exposed_Waxed.wild(1), OP.ingot.mat(MT.Cu, 3));
            RM.unpack(IL.EtFu_Stair_Copper_Cut_Weathered_Waxed.wild(1), OP.ingot.mat(MT.Cu, 3));
            RM.unpack(IL.EtFu_Stair_Copper_Cut_Oxidized_Waxed.wild(1), OP.ingot.mat(MT.Cu, 3));
            RM.add_smelting(IL.EtFu_Block_Copper.get(1), OP.ingot.mat(MT.Cu, 9), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Exposed.get(1), OP.ingot.mat(MT.Cu, 9), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Weathered.get(1), OP.ingot.mat(MT.Cu, 9), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Oxidized.get(1), OP.ingot.mat(MT.Cu, 9), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Waxed.get(1), OP.ingot.mat(MT.Cu, 9), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Exposed_Waxed.get(1), OP.ingot.mat(MT.Cu, 9), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Weathered_Waxed.get(1), OP.ingot.mat(MT.Cu, 9), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Oxidized_Waxed.get(1), OP.ingot.mat(MT.Cu, 9), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Cut.get(1), OP.ingot.mat(MT.Cu, 4), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Cut_Exposed.get(1), OP.ingot.mat(MT.Cu, 4), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Cut_Weathered.get(1), OP.ingot.mat(MT.Cu, 4), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Cut_Oxidized.get(1), OP.ingot.mat(MT.Cu, 4), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Cut_Waxed.get(1), OP.ingot.mat(MT.Cu, 4), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Cut_Exposed_Waxed.get(1), OP.ingot.mat(MT.Cu, 4), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Cut_Weathered_Waxed.get(1), OP.ingot.mat(MT.Cu, 4), F, F, T);
            RM.add_smelting(IL.EtFu_Block_Copper_Cut_Oxidized_Waxed.get(1), OP.ingot.mat(MT.Cu, 4), F, F, T);
            RM.add_smelting(IL.EtFu_Slabs_Copper_Cut.wild(1), OP.ingot.mat(MT.Cu, 2), F, F, T);
            RM.add_smelting(IL.EtFu_Stair_Copper_Cut.wild(1), OP.ingot.mat(MT.Cu, 3), F, F, T);
            RM.add_smelting(IL.EtFu_Stair_Copper_Cut_Exposed.wild(1), OP.ingot.mat(MT.Cu, 3), F, F, T);
            RM.add_smelting(IL.EtFu_Stair_Copper_Cut_Weathered.wild(1), OP.ingot.mat(MT.Cu, 3), F, F, T);
            RM.add_smelting(IL.EtFu_Stair_Copper_Cut_Oxidized.wild(1), OP.ingot.mat(MT.Cu, 3), F, F, T);
            RM.add_smelting(IL.EtFu_Stair_Copper_Cut_Waxed.wild(1), OP.ingot.mat(MT.Cu, 3), F, F, T);
            RM.add_smelting(IL.EtFu_Stair_Copper_Cut_Exposed_Waxed.wild(1), OP.ingot.mat(MT.Cu, 3), F, F, T);
            RM.add_smelting(IL.EtFu_Stair_Copper_Cut_Weathered_Waxed.wild(1), OP.ingot.mat(MT.Cu, 3), F, F, T);
            RM.add_smelting(IL.EtFu_Stair_Copper_Cut_Oxidized_Waxed.wild(1), OP.ingot.mat(MT.Cu, 3), F, F, T);
            for (FluidStack tWater : FL.waters(100)) {
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Block_Copper.get(1), tWater, NF, IL.EtFu_Block_Copper_Exposed.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Block_Copper_Exposed.get(1), tWater, NF, IL.EtFu_Block_Copper_Weathered.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Block_Copper_Weathered.get(1), tWater, NF, IL.EtFu_Block_Copper_Oxidized.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Block_Copper_Cut.get(1), tWater, NF, IL.EtFu_Block_Copper_Cut_Exposed.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Block_Copper_Cut_Exposed.get(1), tWater, NF, IL.EtFu_Block_Copper_Cut_Weathered.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Block_Copper_Cut_Weathered.get(1), tWater, NF, IL.EtFu_Block_Copper_Cut_Oxidized.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Stair_Copper_Cut.get(1), tWater, NF, IL.EtFu_Stair_Copper_Cut_Exposed.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Stair_Copper_Cut_Exposed.get(1), tWater, NF, IL.EtFu_Stair_Copper_Cut_Weathered.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Stair_Copper_Cut_Weathered.get(1), tWater, NF, IL.EtFu_Stair_Copper_Cut_Oxidized.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Slabs_Copper_Cut.get(1), tWater, NF, IL.EtFu_Slabs_Copper_Cut_Exposed.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Slabs_Copper_Cut_Exposed.get(1), tWater, NF, IL.EtFu_Slabs_Copper_Cut_Weathered.get(1));
                RM.Bath.addRecipe1(T, 0, 64, IL.EtFu_Slabs_Copper_Cut_Weathered.get(1), tWater, NF, IL.EtFu_Slabs_Copper_Cut_Oxidized.get(1));
            }
            for (OreDictMaterial tMat : ANY.Wax.mToThis) {
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Block_Copper.get(1), IL.EtFu_Block_Copper_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Block_Copper_Exposed.get(1), IL.EtFu_Block_Copper_Exposed_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Block_Copper_Weathered.get(1), IL.EtFu_Block_Copper_Weathered_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Block_Copper_Oxidized.get(1), IL.EtFu_Block_Copper_Oxidized_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Block_Copper_Cut.get(1), IL.EtFu_Block_Copper_Cut_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Block_Copper_Cut_Exposed.get(1), IL.EtFu_Block_Copper_Cut_Exposed_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Block_Copper_Cut_Weathered.get(1), IL.EtFu_Block_Copper_Cut_Weathered_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Block_Copper_Cut_Oxidized.get(1), IL.EtFu_Block_Copper_Cut_Oxidized_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Slabs_Copper_Cut.get(2), IL.EtFu_Slabs_Copper_Cut_Waxed.get(2));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Slabs_Copper_Cut_Exposed.get(2), IL.EtFu_Slabs_Copper_Cut_Exposed_Waxed.get(2));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Slabs_Copper_Cut_Weathered.get(2), IL.EtFu_Slabs_Copper_Cut_Weathered_Waxed.get(2));
                RM.Laminator.addRecipe2(T, 16, 32, OP.plate.mat(tMat, 1), IL.EtFu_Slabs_Copper_Cut_Oxidized.get(2), IL.EtFu_Slabs_Copper_Cut_Oxidized_Waxed.get(2));
                RM.Laminator.addRecipe2(T, 16, 24, OP.plate.mat(tMat, 1), IL.EtFu_Stair_Copper_Cut.get(1), IL.EtFu_Stair_Copper_Cut_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 24, OP.plate.mat(tMat, 1), IL.EtFu_Stair_Copper_Cut_Exposed.get(1), IL.EtFu_Stair_Copper_Cut_Exposed_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 24, OP.plate.mat(tMat, 1), IL.EtFu_Stair_Copper_Cut_Weathered.get(1), IL.EtFu_Stair_Copper_Cut_Weathered_Waxed.get(1));
                if (IL.EtFu_Stair_Copper_Cut_Oxidized_Waxed.exists())
                    RM.Laminator.addRecipe2(T, 16, 24, OP.plate.mat(tMat, 1), IL.EtFu_Stair_Copper_Cut_Oxidized.get(1), IL.EtFu_Stair_Copper_Cut_Oxidized_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.foil.mat(tMat, 4), IL.EtFu_Block_Copper.get(1), IL.EtFu_Block_Copper_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.foil.mat(tMat, 4), IL.EtFu_Block_Copper_Exposed.get(1), IL.EtFu_Block_Copper_Exposed_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.foil.mat(tMat, 4), IL.EtFu_Block_Copper_Weathered.get(1), IL.EtFu_Block_Copper_Weathered_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.foil.mat(tMat, 4), IL.EtFu_Block_Copper_Oxidized.get(1), IL.EtFu_Block_Copper_Oxidized_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.foil.mat(tMat, 4), IL.EtFu_Block_Copper_Cut.get(1), IL.EtFu_Block_Copper_Cut_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.foil.mat(tMat, 4), IL.EtFu_Block_Copper_Cut_Exposed.get(1), IL.EtFu_Block_Copper_Cut_Exposed_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.foil.mat(tMat, 4), IL.EtFu_Block_Copper_Cut_Weathered.get(1), IL.EtFu_Block_Copper_Cut_Weathered_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 32, OP.foil.mat(tMat, 4), IL.EtFu_Block_Copper_Cut_Oxidized.get(1), IL.EtFu_Block_Copper_Cut_Oxidized_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 16, OP.foil.mat(tMat, 2), IL.EtFu_Slabs_Copper_Cut.get(1), IL.EtFu_Slabs_Copper_Cut_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 16, OP.foil.mat(tMat, 2), IL.EtFu_Slabs_Copper_Cut_Exposed.get(1), IL.EtFu_Slabs_Copper_Cut_Exposed_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 16, OP.foil.mat(tMat, 2), IL.EtFu_Slabs_Copper_Cut_Weathered.get(1), IL.EtFu_Slabs_Copper_Cut_Weathered_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 16, OP.foil.mat(tMat, 2), IL.EtFu_Slabs_Copper_Cut_Oxidized.get(1), IL.EtFu_Slabs_Copper_Cut_Oxidized_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 24, OP.foil.mat(tMat, 3), IL.EtFu_Stair_Copper_Cut.get(1), IL.EtFu_Stair_Copper_Cut_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 24, OP.foil.mat(tMat, 3), IL.EtFu_Stair_Copper_Cut_Exposed.get(1), IL.EtFu_Stair_Copper_Cut_Exposed_Waxed.get(1));
                RM.Laminator.addRecipe2(T, 16, 24, OP.foil.mat(tMat, 3), IL.EtFu_Stair_Copper_Cut_Weathered.get(1), IL.EtFu_Stair_Copper_Cut_Weathered_Waxed.get(1));
                if (IL.EtFu_Stair_Copper_Cut_Oxidized_Waxed.exists())
                    RM.Laminator.addRecipe2(T, 16, 24, OP.foil.mat(tMat, 3), IL.EtFu_Stair_Copper_Cut_Oxidized.get(1), IL.EtFu_Stair_Copper_Cut_Oxidized_Waxed.get(1));
            }
        }
        BlocksGT.blockToDrop.put(IL.EtFu_Ancient_Debris, IL.Ancient_Debris.get(1));
        BlocksGT.blockToSilk.put(IL.EtFu_Ancient_Debris, IL.Ancient_Debris.get(1));
        if (MD.CHSL.mLoaded) {
            ItemStack tChiselPurpur = ST.make(MD.CHSL, "purpur", 1, 0);
            CR.delate(tChiselPurpur);
            RM.generify(tChiselPurpur, tEtFuturumPurpur);
            RM.generify(tEtFuturumPurpur, tChiselPurpur);
            CR.shapeless(tChiselPurpur, CR.DEF, new Object[] { tEtFuturumPurpur });
            CR.shapeless(tEtFuturumPurpur, CR.DEF, new Object[] { tChiselPurpur });
            CR.shaped(ST.make(MD.EtFu, "purpur_stairs", 4, 0), CR.DEF_MIR, new Object[] { "P  ", "PP ", "PPP", 'P', ST.make(MD.CHSL, "purpur", 1, W) });
            CR.shaped(ST.make(MD.EtFu, "purpur_slab", 6, 0), CR.DEF_MIR, new Object[] { "PPP", 'P', ST.make(MD.CHSL, "purpur", 1, W) });
            RM.sawing(16, 16, F, 100, tChiselPurpur, ST.make(MD.EtFu, "purpur_slab", 2, 0));
        }
    }
    if (MD.GaSu.mLoaded) {
        OUT.println("GT_Mod: Doing Recipes for Ganys Surface.");
        if (MD.EtFu.mLoaded) {
            CR.delate(MD.GaSu, "slimeBlock");
        } else {
            CR.shaped(ST.make(MD.GaSu, "slimeBlock", 1, 0), CR.DEF | CR.DEL_OTHER_SHAPED_RECIPES | CR.DEL_OTHER_NATIVE_RECIPES, "XXX", "XXX", "XXX", 'X', ST.make(Items.slime_ball, 1, W));
            RM.ic2_compressor(ST.make(Items.slime_ball, 9, 0), ST.make(MD.GaSu, "slimeBlock", 1, 0));
            RM.Compressor.addRecipe1(T, 16, 16, ST.make(Items.slime_ball, 9, W), ST.make(MD.GaSu, "slimeBlock", 1, 0));
            RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.slime_ball, 9, W), ST.tag(9), ST.make(MD.GaSu, "slimeBlock", 1, 0));
            RM.Unboxinator.addRecipe1(T, 16, 16, ST.make(MD.GaSu, "slimeBlock", 1, 0), ST.make(Items.slime_ball, 9, 0));
            RM.ic2_extractor(ST.make(MD.GaSu, "slimeBlock", 1, 0), ST.make(Items.slime_ball, 9, 0));
            CR.shapeless(ST.make(Items.slime_ball, 9, 0), CR.DEF, new Object[] { ST.make(MD.GaSu, "slimeBlock", 1, 0) });
        }
        RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.flint, 9, W), ST.tag(9), ST.make(MD.GaSu, "storage", 1, 0));
        RM.Unboxinator.addRecipe1(T, 16, 16, ST.make(MD.GaSu, "storage", 1, 0), ST.make(Items.flint, 9, 0));
        RM.ic2_extractor(ST.make(MD.GaSu, "storage", 1, 0), ST.make(Items.flint, 9, 0));
        RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.carrot, 9, W), ST.tag(9), ST.make(MD.GaSu, "storage", 1, 1));
        RM.Unboxinator.addRecipe1(T, 16, 16, ST.make(MD.GaSu, "storage", 1, 1), ST.make(Items.carrot, 9, 0));
        RM.ic2_extractor(ST.make(MD.GaSu, "storage", 1, 1), ST.make(Items.carrot, 9, 0));
    }
    if (MD.GaNe.mLoaded) {
        OUT.println("GT_Mod: Doing Recipes for Ganys Nether.");
        RM.pulverizing(ST.make(MD.GaNe, "spectreWheatItem", 1, 0), ST.make(MD.GaNe, "spookyFlour", 1, 0));
        CR.remove(OP.nugget.mat(MT.Blaze, 1), NI, NI, OP.nugget.mat(MT.Blaze, 1), NI, NI, OP.nugget.mat(MT.Blaze, 1));
        RM.Mixer.addRecipe2(T, 16, 32, ST.make(MD.GaNe, "spookyFlour", 2, 0), ST.make(Blocks.sand, 1, W), ST.make(Blocks.soul_sand, 2, 0));
    }
    if (MD.GaEn.mLoaded) {
        OUT.println("GT_Mod: Doing Recipes for Ganys End.");
    // 
    }
}
Also used : OreDictMaterial(gregapi.oredict.OreDictMaterial) OreDictPrefix(gregapi.oredict.OreDictPrefix) FluidStack(net.minecraftforge.fluids.FluidStack) ItemStack(net.minecraft.item.ItemStack)

Example 3 with OreDictPrefix

use of gregapi.oredict.OreDictPrefix in project gregtech6 by GregTech6.

the class OreDictListenerItem_Washing method onTickWorld.

@Override
public ItemStack onTickWorld(OreDictPrefix aPrefix, OreDictMaterial aMaterial, ItemStack aStack, EntityItem aItem) {
    if (aMaterial != null) {
        int tX = UT.Code.roundDown(aItem.posX), tY = UT.Code.roundDown(aItem.posY - 0.25), tZ = UT.Code.roundDown(aItem.posZ);
        Block tBlock = aItem.worldObj.getBlock(tX, tY, tZ);
        byte tMetaData = (byte) aItem.worldObj.getBlockMetadata(tX, tY, tZ);
        if (tBlock instanceof BlockCauldron && tMetaData > 0) {
            ItemStack tStack = mItemToGet.mat(aMaterial, 1);
            if (tStack != null) {
                ((BlockCauldron) tBlock).func_150024_a(aItem.worldObj, tX, tY, tZ, tMetaData - 1);
                if (mByProductPrefixes.length > 0 && RNGSUS.nextInt(mChance) > 0) {
                    ArrayListNoNulls<ItemStack> tStacks = new ArrayListNoNulls<>();
                    for (OreDictPrefix tPrefix : mByProductPrefixes) tStacks.add(tPrefix.mat(UT.Code.select(aMaterial, aMaterial.mByProducts), 1));
                    if (tStacks.size() > 0)
                        ST.drop(aItem.worldObj, aItem.posX, aItem.posY, aItem.posZ, tStacks.get(RNGSUS.nextInt(tStacks.size())));
                }
                ST.drop(aItem.worldObj, aItem.posX, aItem.posY, aItem.posZ, tStack);
                aItem.motionX = aItem.motionY = aItem.motionZ = 0;
                aItem.setPosition(tX + 0.5, tY + 0.9, tZ + 0.5);
                return aStack.stackSize > 1 ? ST.amount(aStack.stackSize - 1, aStack) : null;
            }
        }
    }
    return aStack;
}
Also used : OreDictPrefix(gregapi.oredict.OreDictPrefix) BlockCauldron(net.minecraft.block.BlockCauldron) Block(net.minecraft.block.Block) ItemStack(net.minecraft.item.ItemStack) ArrayListNoNulls(gregapi.code.ArrayListNoNulls)

Example 4 with OreDictPrefix

use of gregapi.oredict.OreDictPrefix in project gregtech6 by GregTech6.

the class MultiTileEntityMold method fill.

@Override
public int fill(ForgeDirection aDirection, FluidStack aFluid, boolean aDoFill) {
    if (aFluid == null || aFluid.amount <= 0 || FL.gas(aFluid) || mContent != null || slotHas(0))
        return 0;
    OreDictMaterialStack aFluidRatio = OreDictMaterial.FLUID_MAP.get(aFluid.getFluid().getName()), aMaterial = null;
    if (aFluidRatio == null || aFluidRatio.mAmount <= 0)
        return 0;
    aMaterial = OM.stack(aFluidRatio.mMaterial, UT.Code.units(aFluid.amount, aFluidRatio.mAmount, U, F));
    if (aMaterial == null || aMaterial.mAmount <= 0)
        return 0;
    OreDictPrefix tPrefix = getMoldRecipe(mShape);
    if (tPrefix == OP.plate && aMaterial.mMaterial == MT.Glass)
        tPrefix = OP.plateGem;
    if (tPrefix == null || tPrefix.mat(aMaterial.mMaterial.mTargetSolidifying.mMaterial, 1) == null)
        return 0;
    long tRequiredAmount = getMoldRequiredMaterialUnits();
    long rAmount = UT.Code.units(tRequiredAmount, U, aMaterial.mMaterial.mTargetSolidifying.mAmount, T);
    if (aMaterial.mAmount >= rAmount) {
        if (aDoFill) {
            mContent = OM.stack(aMaterial.mMaterial, tRequiredAmount);
            mTemperature = Math.max(FL.temperature(aFluid), aMaterial.mMaterial.mMeltingPoint);
        }
        return UT.Code.bindInt(UT.Code.units(rAmount, U, aFluidRatio.mAmount, T));
    }
    return 0;
}
Also used : OreDictPrefix(gregapi.oredict.OreDictPrefix) OreDictMaterialStack(gregapi.oredict.OreDictMaterialStack)

Example 5 with OreDictPrefix

use of gregapi.oredict.OreDictPrefix in project gregtech6 by GregTech6.

the class GT_API method onModPreInit2.

@Override
@SuppressWarnings({ "resource", "deprecation" })
public void onModPreInit2(FMLPreInitializationEvent aEvent) {
    File tFile = new File(DirectoriesGT.CONFIG_GT, "IDs.cfg");
    if (!tFile.exists())
        tFile = new File(DirectoriesGT.CONFIG_GT, "ids.cfg");
    Config.sConfigFileIDs = new Configuration(tFile);
    Config.sConfigFileIDs.save();
    ConfigsGT.GREGTECH = new Config("GregTech.cfg").setUseDefaultInNames(F);
    ConfigsGT.RECIPES = new Config("Recipes.cfg");
    ConfigsGT.WORLDGEN = new Config("WorldGenerationNew.cfg");
    ConfigsGT.WORLDGEN_GT5 = new Config("old_barely_used_gt5_style_garbage_worldgen.cfg");
    ConfigsGT.MATERIAL = new Config("Materials.cfg");
    ConfigsGT.OREPROCESSING = new Config("OreProcessing.cfg");
    // Deprecated Config Files.
    ConfigsGT.OVERPOWERED = ConfigsGT.MACHINES = ConfigsGT.SPECIAL = ConfigsGT.GREGTECH;
    tFile = new File(DirectoriesGT.CONFIG_GT, "Stacksizes.cfg");
    if (!tFile.exists())
        tFile = new File(DirectoriesGT.CONFIG_GT, "stacksizes.cfg");
    Configuration tStackConfig = new Configuration(tFile);
    tFile = new File(DirectoriesGT.LOGS, "gregtech.log");
    if (!tFile.exists())
        try {
            tFile.createNewFile();
        } catch (Throwable e) {
        /**/
        }
    List<String> tList = ((LogBuffer) OUT).mBufferedLog;
    try {
        OUT = new PrintStream(tFile);
    } catch (Throwable e) {
        OUT = System.out;
    }
    for (String tString : tList) OUT.println(tString);
    if (ConfigsGT.GREGTECH.get("general", "LoggingErrors", T)) {
        tList = ((LogBuffer) ERR).mBufferedLog;
        ERR = OUT;
        for (String tString : tList) ERR.println(tString);
    } else {
        OUT.println("**********************************************************************");
        OUT.println("* WARNING: ERROR LOGGING HAS BEEN DISABLED FOR THIS LOG FILE         *");
        OUT.println("**********************************************************************");
    }
    tFile = new File(DirectoriesGT.CONFIG_GT, "materiallist.log");
    if (!tFile.exists()) {
        try {
            tFile.createNewFile();
        } catch (Throwable e) {
        /**/
        }
    }
    try {
        MAT_LOG = new PrintStream(tFile);
        MAT_LOG.println("**********************************************************************");
        MAT_LOG.println("* This is the complete List of usable GregTech Materials             *");
        MAT_LOG.println("**********************************************************************");
    } catch (Throwable e) {
    /**/
    }
    tFile = new File(DirectoriesGT.LOGS, "oredict.log");
    if (!tFile.exists()) {
        try {
            tFile.createNewFile();
        } catch (Throwable e) {
        /**/
        }
    }
    try {
        tList = ((LogBuffer) ORD).mBufferedLog;
        ORD = new PrintStream(tFile);
        ORD.println("**********************************************************************");
        ORD.println("* This is the complete Log of the GregTech OreDictionary Handler     *");
        ORD.println("**********************************************************************");
        for (String tString : tList) ORD.println(tString);
    } catch (Throwable e) {
    /**/
    }
    if (ConfigsGT.GREGTECH.get("general", "LoggingPlayerActivity", !CODE_CLIENT)) {
        tFile = new File(DirectoriesGT.LOGS, "playeractivity_" + (System.currentTimeMillis() / 60000) + ".log");
        if (!tFile.exists()) {
            try {
                tFile.createNewFile();
            } catch (Throwable e) {
            /**/
            }
        }
        try {
            mPlayerLogger = new LoggerPlayerActivity(new PrintStream(tFile));
        } catch (Throwable e) {
        /**/
        }
    }
    ConfigsGT.CLIENT = new Config(DirectoriesGT.MINECRAFT, "GregTech.cfg");
    D1 = ConfigsGT.CLIENT.get("debug", "logs", F);
    D2 = ConfigsGT.CLIENT.get("debug", "oredict", F);
    D3 = ConfigsGT.CLIENT.get("debug", "misc", F);
    CLIENT_BLOCKUPDATE_SOUNDS = ConfigsGT.CLIENT.get("debug", "block_update_sounds", F);
    if (ConfigsGT.CLIENT.get("debug", "april_fools", F))
        APRIL_FOOLS = T;
    if (ConfigsGT.CLIENT.get("debug", "xmas_july", F))
        XMAS_IN_JULY = T;
    if (ConfigsGT.CLIENT.get("debug", "xmas_december", F))
        XMAS_IN_DECEMBER = T;
    if (APRIL_FOOLS) {
        MT.W.setLocal("Wolframium");
        MT.V.setLocal("Vandalium");
        MT.B.setLocal("Boring");
        MT.S.setLocal("Sulphur");
        MT.K.setLocal("Kalium");
        MT.Na.setLocal("Natrium");
        MT.Ar.setLocal("Aragon");
        MT.Al.setLocal("Aluminum");
        MT.Ni.setLocal("Ferrous Metal");
        MT.Pt.setLocal("Shiny Metal");
        MT.Mithril.setLocal("Mana Infused Metal");
        MT.Hg.setLocal("Quicksilver");
        MT.Mo.setLocal("Molly-B");
        MT.Sb.setLocal("Anti-Money");
        MT.Tc.setLocal("Gregorium");
        MT.Si.setLocal("Silicone");
        MT.Cr.setLocal("Chrome");
        MT.Cu.setLocal("Cooper");
        MT.AnnealedCopper.setLocal("Anilled Cooper");
        MT.Mg.setLocal("Manganesium");
        MT.Mn.setLocal("Animenese");
        MT.As.setLocal("Arse Nick");
        MT.Br.setLocal("Bro, that's mine");
        MT.Kr.setLocal("Kryptonite");
        MT.Bi.setLocal("Biffmiff");
        MT.Sg.setLocal("Resistance is Futile");
        MT.Zr.setLocal("Diamond");
        MT.Au.setLocal("Pyrite");
        MT.Pyrite.setLocal("Gold");
        MT.Fe.setLocal("Irun");
        MT.IronWood.setLocal("Irunwood");
        MT.ShadowIron.setLocal("Shade Irun");
        MT.DarkIron.setLocal("Dank Irun");
        MT.MeteoricIron.setLocal("Metaur Irun");
        MT.GildedIron.setLocal("Guild Irun");
        MT.WroughtIron.setLocal("Wrecked Irun");
        MT.Steel.setLocal("Style");
        MT.RedSteel.setLocal("Rad Style");
        MT.BlueSteel.setLocal("Blu Style");
        MT.BlackSteel.setLocal("Afroamerican Style");
        MT.MeteoricSteel.setLocal("Metaur Style");
        MT.MeteoricRedSteel.setLocal("Metaur Rad Style");
        MT.MeteoricBlueSteel.setLocal("Metaur Blu Style");
        MT.MeteoricBlackSteel.setLocal("Metaur Afroamerican Style");
        MT.DamascusSteel.setLocal("Dank Style");
        MT.VanadiumSteel.setLocal("Vandalium Style");
        MT.TungstenSteel.setLocal("Wolf Style");
        MT.ShadowSteel.setLocal("Shade Style");
        MT.Steeleaf.setLocal("Style Leave");
        MT.Knightmetal.setLocal("Night Metal");
        MT.FierySteel.setLocal("Fury Style");
        MT.Thaumium.setLocal("Thaumanominum");
        MT.DarkThaumium.setLocal("Dank Thaumanominum");
        MT.Coal.setLocal("Cool");
        MT.Charcoal.setLocal("Charred Cole");
        MT.Lapis.setLocal("Le Piss");
        MT.Redstone.setLocal("Blingstone");
        MT.Glowstone.setLocal("Klostein");
        MT.Emerald.setLocal("Chaos Emerald");
        MT.Craponite.setLocal("Pink Diamond");
        MT.Diamond.setLocal("Sapphire");
        MT.DiamondPink.setLocal("Craponite");
        MT.Bedrock.setLocal("Sofarock");
        MT.Plastic.setLocal("LEGO");
        MT.Asbestos.setLocal("Bestos");
        MT.AncientDebris.setLocal("Cinnabun");
        MT.Cinnamon.setLocal("Ancient Debris");
        MT.WOODS.Cinnamon.setLocal("Ancient Debris");
        MT.Rb.setLocal("Ruby");
        MT.Ruby.setLocal("Red Sapphire");
        MT.KNO3.setLocal("Niter");
        MT.NaNO3.setLocal("Nitre");
        MT.Glyceryl.setLocal("Nitro");
        MT.Gunpowder.setLocal("Boompowder");
        MT.Lubricant.setLocal("Lube");
        MT.H2SO4.setLocal("Sulphuric Acid");
        MT.H2S2O7.setLocal("Disulphuric Acid");
        MT.STONES.Greenschist.setLocal("Green Shit");
        MT.STONES.Blueschist.setLocal("Blue Shit");
        MT.Nikolite.setLocal("Bluestone");
        MT.PigIron.setLocal("Ferrobacon");
        MT.TinAlloy.setLocal("Tin*");
        MT.Bronze.setLocal("Tinkerers Alloy");
        MT.BlackBronze.setLocal("Afroamerican Tinkerers Alloy");
        MT.Constantan.setLocal("Cupronickel");
        MT.Ge.setLocal("Platosmium");
        MT.Amazonite.setLocal("Bezosite");
        MT.NetherQuartz.setLocal("Weather Quartz");
        MT.MilkyQuartz.setLocal("Milk Quartz");
        MT.CertusQuartz.setLocal("Citrus Quartz");
        MT.ChargedCertusQuartz.setLocal("Charged Citrus Quartz");
        MT.Firestone.setLocal("Hot Garbage");
        MT.UUMatter.setLocal("UwU-Matter");
        MT.UUAmplifier.setLocal("UwU-Amplifier");
        MT.OREMATS.Galena.setLocal("Silverlead");
        MT.OREMATS.Huebnerite.setLocal("Boobnerite");
        MT.OREMATS.Bromargyrite.setLocal("Bromagnerite");
        MT.OREMATS.Chalcopyrite.setLocal("Chackapackerite");
        for (OreDictMaterial tMaterial : OreDictMaterial.MATERIAL_MAP.values()) if (tMaterial.mNameLocal.toLowerCase().contains("wood"))
            tMaterial.setLocal(tMaterial.mNameLocal + " >:] nice");
    }
    if (D1) {
        tList = ((LogBuffer) DEB).mBufferedLog;
        DEB = OUT;
        for (String tString : tList) DEB.println(tString);
    }
    for (OreDictPrefix tPrefix : OreDictPrefix.VALUES) if (!tPrefix.contains(TD.Prefix.PREFIX_UNUSED)) {
        tPrefix.setConfigStacksize(tStackConfig.get("stacksizes", tPrefix.mNameInternal + "_" + tPrefix.mDefaultStackSize, tPrefix.mDefaultStackSize).getInt());
    }
    tStackConfig.save();
    SURVIVAL_INTO_ADVENTURE_MODE = ConfigsGT.GREGTECH.get("general", "forceAdventureMode", F);
    ADVENTURE_MODE_KIT = ConfigsGT.GREGTECH.get("general", "AdventureModeStartingKit", !MD.GT.mLoaded);
    HUNGER_BY_INVENTORY_WEIGHT = ConfigsGT.GREGTECH.get("general", "AFK_Hunger", MD.GT.mLoaded);
    TOOL_BREAK_FATIQUE = ConfigsGT.GREGTECH.get("general", "ToolBreakFatique", T);
    INVENTORY_UNIFICATION = ConfigsGT.GREGTECH.get("general", "InventoryUnification", T);
    XP_ORB_COMBINING = ConfigsGT.GREGTECH.get("general", "XP_Orb_Combining", T);
    CONFIG_HARDNESS_MULTIPLIER_SAND = ConfigsGT.GREGTECH.get("general", "HardnessMultiplier_Sand", 1);
    CONFIG_HARDNESS_MULTIPLIER_ROCK = ConfigsGT.GREGTECH.get("general", "HardnessMultiplier_Rock", 1);
    CONFIG_HARDNESS_MULTIPLIER_ORES = ConfigsGT.GREGTECH.get("general", "HardnessMultiplier_Ores", 1);
    ITEM_DESPAWN_TIME = ConfigsGT.GREGTECH.get("general", "ItemDespawnTime", 6000);
    TREE_GROWTH_TIME = ConfigsGT.GREGTECH.get("general", "Tree_Growth_Time", 1);
    ENTITY_CRAMMING = ConfigsGT.GREGTECH.get("general", "MaxEqualEntitiesAtOneSpot", 3);
    DRINKS_ALWAYS_DRINKABLE = ConfigsGT.GREGTECH.get("general", "drinks_always_drinkable", F);
    EMIT_EU_AS_RF = ConfigsGT.GREGTECH.get("general", "Emit_EU_as_RF_from_Blocks", F);
    NERFED_WOOD = ConfigsGT.GREGTECH.get("general", "WoodNeedsSawForCrafting", T);
    FORCE_GRAVEL_NO_FLINT = ConfigsGT.GREGTECH.get("general", "GravelWontDropFlint", F);
    FAST_LEAF_DECAY = ConfigsGT.GREGTECH.get("general", "FastLeafDecay", T);
    CONSTANT_ENERGY = ConfigsGT.GREGTECH.get("general", "UninterruptedEnergyRequirement", T);
    FOOD_OVERDOSE_DEATH = ConfigsGT.GREGTECH.get("general", "DeathByOverdosingCertainFoods", T);
    NUTRITION_SYSTEM = ConfigsGT.GREGTECH.get("general", "NutritionSystem", T);
    OBSTRUCTION_CHECKS = ConfigsGT.GREGTECH.get("general", "ObstructionChecks", T);
    OWNERSHIP_RESET = ConfigsGT.GREGTECH.get("general", "ResetPlayerOwnershipOfGT6Blocks", F);
    SPAWN_ZONE_MOB_PROTECTION = ConfigsGT.GREGTECH.get("general", "PreventMobSpawnsCloseToSpawn", T);
    SPAWN_NO_BATS = ConfigsGT.GREGTECH.get("general", "PreventBatSpawnsOnNonVanillaStone", T);
    SPAWN_HOSTILES_ONLY_IN_DARKNESS = ConfigsGT.GREGTECH.get("general", "PreventMobSpawnsAboveLightLevel0", T);
    DISABLE_GT6_CRAFTING_RECIPES = ConfigsGT.GREGTECH.get("general", "DisableGT6CraftingRecipesDEBUG", F);
    TOOL_SOUNDS = ConfigsGT.GREGTECH.get("general", "sound_tools", T);
    MOBS_DROP_LEAD = ConfigsGT.GREGTECH.get("general", "mobs_drop_lead_instead_of_iron", T);
    MOBS_DROP_MEAT = ConfigsGT.GREGTECH.get("general", "mobs_drop_variety_meats", T);
    MOBS_DROP_JUNK = ConfigsGT.GREGTECH.get("general", "mobs_drop_random_junk", T);
    MOBS_DROP_BOOK = ConfigsGT.GREGTECH.get("general", "mobs_drop_books_and_manuals", T);
    MOBS_DROP_NAME = ConfigsGT.GREGTECH.get("general", "mobs_drop_nametags_when_named", T);
    ZOMBIES_DIG_WITH_TOOLS = ConfigsGT.GREGTECH.get("general", "Zombies_Dig_With_Tools", F);
    ZOMBIES_DIG_TILEENTITIES = ConfigsGT.GREGTECH.get("general", "Zombies_Dig_TileEntities", F);
    ZOMBIES_HOLD_PICKAXES = ConfigsGT.GREGTECH.get("general", "Zombies_Hold_Pickaxes", F);
    ZOMBIES_HOLD_TNT = ConfigsGT.GREGTECH.get("general", "Zombies_Hold_TNT", F);
    ZOMBIES_IGNITE_HELD_TNT = ConfigsGT.GREGTECH.get("general", "Zombies_Ignite_Held_TNT", F);
    UT.Sounds.MULTITHREADED = ConfigsGT.GREGTECH.get("general", "sound_multi_threading", F);
    ENABLE_ADDING_IC2_MACERATOR_RECIPES = ConfigsGT.GREGTECH.get("ic2", "EnableAddingMaceratorRecipes", T);
    ENABLE_ADDING_IC2_EXTRACTOR_RECIPES = ConfigsGT.GREGTECH.get("ic2", "EnableAddingExtractorRecipes", T);
    ENABLE_ADDING_IC2_COMPRESSOR_RECIPES = ConfigsGT.GREGTECH.get("ic2", "EnableAddingCompressorRecipes", T);
    ENABLE_ADDING_IC2_OREWASHER_RECIPES = ConfigsGT.GREGTECH.get("ic2", "EnableAddingOreWasherRecipes", T);
    ENABLE_ADDING_IC2_CENTRIFUGE_RECIPES = ConfigsGT.GREGTECH.get("ic2", "EnableAddingThermalCentrifugeRecipes", T);
    if (!ConfigsGT.GREGTECH.get("general", "UseTFCAttackMultiplierWhenLoaded", T) || TFC_DAMAGE_MULTIPLIER < 1 || (!MD.TFC.mLoaded && !MD.TFCP.mLoaded))
        TFC_DAMAGE_MULTIPLIER = 1;
    if (MD.IC2C.mLoaded) {
        DISABLE_ALL_IC2_MACERATOR_RECIPES = F;
        ENABLE_ADDING_IC2_MACERATOR_RECIPES = T;
        DISABLE_ALL_IC2_EXTRACTOR_RECIPES = F;
        ENABLE_ADDING_IC2_EXTRACTOR_RECIPES = T;
        DISABLE_ALL_IC2_COMPRESSOR_RECIPES = F;
        ENABLE_ADDING_IC2_COMPRESSOR_RECIPES = T;
        DISABLE_ALL_IC2_OREWASHER_RECIPES = F;
        ENABLE_ADDING_IC2_OREWASHER_RECIPES = F;
        DISABLE_ALL_IC2_CENTRIFUGE_RECIPES = F;
        ENABLE_ADDING_IC2_CENTRIFUGE_RECIPES = F;
    } else if (MD.IC2.mLoaded) {
        DISABLE_ALL_IC2_MACERATOR_RECIPES = ConfigsGT.GREGTECH.get("ic2", "DisableAllMaceratorRecipes", F);
        if (DISABLE_ALL_IC2_MACERATOR_RECIPES)
            ENABLE_ADDING_IC2_MACERATOR_RECIPES = F;
        DISABLE_ALL_IC2_EXTRACTOR_RECIPES = ConfigsGT.GREGTECH.get("ic2", "DisableAllExtractorRecipes", F);
        if (DISABLE_ALL_IC2_EXTRACTOR_RECIPES)
            ENABLE_ADDING_IC2_EXTRACTOR_RECIPES = F;
        DISABLE_ALL_IC2_COMPRESSOR_RECIPES = ConfigsGT.GREGTECH.get("ic2", "DisableAllCompressorRecipes", F);
        if (DISABLE_ALL_IC2_COMPRESSOR_RECIPES)
            ENABLE_ADDING_IC2_COMPRESSOR_RECIPES = F;
        DISABLE_ALL_IC2_OREWASHER_RECIPES = ConfigsGT.GREGTECH.get("ic2", "DisableAllOreWasherRecipes", F);
        if (DISABLE_ALL_IC2_OREWASHER_RECIPES)
            ENABLE_ADDING_IC2_OREWASHER_RECIPES = F;
        DISABLE_ALL_IC2_CENTRIFUGE_RECIPES = ConfigsGT.GREGTECH.get("ic2", "DisableAllThermalCentrifugeRecipes", F);
        if (DISABLE_ALL_IC2_CENTRIFUGE_RECIPES)
            ENABLE_ADDING_IC2_CENTRIFUGE_RECIPES = F;
    } else {
        DISABLE_ALL_IC2_MACERATOR_RECIPES = F;
        ENABLE_ADDING_IC2_MACERATOR_RECIPES = F;
        DISABLE_ALL_IC2_EXTRACTOR_RECIPES = F;
        ENABLE_ADDING_IC2_EXTRACTOR_RECIPES = F;
        DISABLE_ALL_IC2_COMPRESSOR_RECIPES = F;
        ENABLE_ADDING_IC2_COMPRESSOR_RECIPES = F;
        DISABLE_ALL_IC2_OREWASHER_RECIPES = F;
        ENABLE_ADDING_IC2_OREWASHER_RECIPES = F;
        DISABLE_ALL_IC2_CENTRIFUGE_RECIPES = F;
        ENABLE_ADDING_IC2_CENTRIFUGE_RECIPES = F;
    }
    if (ConfigsGT.GREGTECH.get("general", "disable_STDOUT", F))
        System.out.close();
    if (ConfigsGT.GREGTECH.get("general", "disable_STDERR", F))
        System.err.close();
    if (ConfigsGT.GREGTECH.get("general", "hardermobspawners", T))
        Blocks.mob_spawner.setHardness(500.0F);
    if (ConfigsGT.GREGTECH.get("general", "blastresistantmobspawners", T))
        Blocks.mob_spawner.setResistance(6000000.0F);
    else
        Blocks.mob_spawner.setResistance(60);
    FIRE_EXPLOSIONS = ConfigsGT.GREGTECH.get("machines", "explode_by_fire", T);
    RAIN_EXPLOSIONS = ConfigsGT.GREGTECH.get("machines", "explode_by_rain", T);
    WATER_EXPLOSIONS = ConfigsGT.GREGTECH.get("machines", "explode_by_water", T);
    THUNDER_EXPLOSIONS = ConfigsGT.GREGTECH.get("machines", "explode_by_thunder", T);
    OVERCHARGE_EXPLOSIONS = ConfigsGT.GREGTECH.get("machines", "explode_by_overload", F);
    FIRE_BREAKING = ConfigsGT.GREGTECH.get("machines", "break_by_fire", T);
    RAIN_BREAKING = ConfigsGT.GREGTECH.get("machines", "break_by_rain", T);
    WATER_BREAKING = ConfigsGT.GREGTECH.get("machines", "break_by_water", T);
    THUNDER_BREAKING = ConfigsGT.GREGTECH.get("machines", "break_by_thunder", T);
    OVERCHARGE_BREAKING = ConfigsGT.GREGTECH.get("machines", "break_by_overload", F);
    if (FIRE_EXPLOSIONS)
        FIRE_BREAKING = T;
    if (RAIN_EXPLOSIONS)
        RAIN_BREAKING = T;
    if (WATER_EXPLOSIONS)
        WATER_BREAKING = T;
    if (THUNDER_EXPLOSIONS)
        THUNDER_BREAKING = T;
    if (OVERCHARGE_EXPLOSIONS)
        OVERCHARGE_BREAKING = T;
    if (CONFIG_HARDNESS_MULTIPLIER_SAND <= 0.0)
        CONFIG_HARDNESS_MULTIPLIER_SAND = 1.0;
    if (CONFIG_HARDNESS_MULTIPLIER_ROCK <= 0.0)
        CONFIG_HARDNESS_MULTIPLIER_ROCK = 1.0;
    if (CONFIG_HARDNESS_MULTIPLIER_ORES <= 0.0)
        CONFIG_HARDNESS_MULTIPLIER_ORES = 1.0;
    HARDNESS_MULTIPLIER_SAND = CONFIG_HARDNESS_MULTIPLIER_SAND;
    HARDNESS_MULTIPLIER_ROCK = CONFIG_HARDNESS_MULTIPLIER_ROCK;
    HARDNESS_MULTIPLIER_ORES = CONFIG_HARDNESS_MULTIPLIER_ORES;
    if (ConfigsGT.GREGTECH.get("compat", "IC2Classic", T))
        ICompat.COMPAT_CLASSES.add((ICompat) UT.Reflection.callConstructor("gregapi.compat.industrialcraft.CompatIC2C", 0, null, D2));
    if (ConfigsGT.GREGTECH.get("compat", "IC2EnergyItems", T))
        ICompat.COMPAT_CLASSES.add(COMPAT_EU_ITEM = (ICompatIC2EUItem) UT.Reflection.callConstructor("gregapi.compat.industrialcraft.CompatIC2EUItem", 0, null, D2));
    if (ConfigsGT.GREGTECH.get("compat", "IndustrialCraft2", T))
        ICompat.COMPAT_CLASSES.add(COMPAT_IC2 = (ICompatIC2) UT.Reflection.callConstructor("gregapi.compat.industrialcraft.CompatIC2", 0, null, D2));
    if (ConfigsGT.GREGTECH.get("compat", "ThaumCraft", T))
        ICompat.COMPAT_CLASSES.add(COMPAT_TC = (ICompatTC) UT.Reflection.callConstructor("gregapi.compat.thaumcraft.CompatTC", 0, null, D2));
    if (ConfigsGT.GREGTECH.get("compat", "BuildCraft", T))
        ICompat.COMPAT_CLASSES.add(COMPAT_BC = (ICompatBC) UT.Reflection.callConstructor("gregapi.compat.buildcraft.CompatBC", 0, null, D2));
    if (ConfigsGT.GREGTECH.get("compat", "ComputerCraft", T))
        ICompat.COMPAT_CLASSES.add(COMPAT_CC = (ICompatCC) UT.Reflection.callConstructor("gregapi.compat.computercraft.CompatCC", 0, null, D2));
    if (ConfigsGT.GREGTECH.get("compat", "Forestry", T))
        ICompat.COMPAT_CLASSES.add(COMPAT_FR = (ICompatFR) UT.Reflection.callConstructor("gregapi.compat.forestry.CompatFR", 0, null, D2));
    if (ConfigsGT.GREGTECH.get("compat", "GalactiCraft", T))
        ICompat.COMPAT_CLASSES.add(COMPAT_GC = (ICompatGC) UT.Reflection.callConstructor("gregapi.compat.galacticraft.CompatGC", 0, null, D2));
    if (MD.TC.mLoaded)
        try {
            ThaumcraftApi.objectTags.isEmpty();
        } catch (NoSuchFieldError e) {
            throw new RuntimeException("Please uninstall ThaumicFixer, GregTech-6 itself by now fixes the Thaumometer Lag Issue in a far better and less 'Thaumcraft-Addons breaking' way than Thaumic Fixer.");
        }
    SHOW_HIDDEN_ITEMS = ConfigsGT.CLIENT.get(ConfigCategories.visibility, "HiddenGTItems", F);
    SHOW_HIDDEN_MATERIALS = ConfigsGT.CLIENT.get(ConfigCategories.visibility, "HiddenGTMaterials", F);
    SHOW_HIDDEN_PREFIXES = ConfigsGT.CLIENT.get(ConfigCategories.visibility, "HiddenGTPrefixes", F);
    SHOW_MICROBLOCKS = ConfigsGT.CLIENT.get(ConfigCategories.visibility, "MicroBlocks", F);
    SHOW_BUMBLEBEES = ConfigsGT.CLIENT.get(ConfigCategories.visibility, "Bumblebees", F);
    SHOW_ORE_BLOCK_PREFIXES = ConfigsGT.CLIENT.get(ConfigCategories.visibility, "OreBlocks", F);
    SHOW_INTERNAL_NAMES = ConfigsGT.CLIENT.get(ConfigCategories.visibility, "InternalNames", F);
    SHOW_CHEM_FORMULAS = ConfigsGT.CLIENT.get(ConfigCategories.visibility, "ChemTooltips", T);
    ITexture.Util.GT_ALPHA_BLENDING = ConfigsGT.CLIENT.get(ConfigCategories.general, "useGTAlphaBlending", ITexture.Util.GT_ALPHA_BLENDING);
    ITexture.Util.MC_ALPHA_BLENDING = ConfigsGT.CLIENT.get(ConfigCategories.general, "useMCAlphaBlending", ITexture.Util.MC_ALPHA_BLENDING);
    GT6WorldGenerator.PFAA = (ConfigsGT.WORLDGEN.get(ConfigCategories.general, "AutoDetectPFAA", T) && MD.PFAA.mLoaded && MD.COG.mLoaded);
    GT6WorldGenerator.TFC = (ConfigsGT.WORLDGEN.get(ConfigCategories.general, "AutoDetectTFC", T) && (MD.TFC.mLoaded || MD.TFCP.mLoaded));
    // Register Crafting Recipe Classes.
    RecipeSorter.register("gregtech:shaped", AdvancedCraftingShaped.class, RecipeSorter.Category.SHAPED, "after:minecraft:shaped before:minecraft:shapeless");
    RecipeSorter.register("gregtech:shapeless", AdvancedCraftingShapeless.class, RecipeSorter.Category.SHAPELESS, "after:gregtech:shaped after:minecraft:shapeless");
    RecipeSorter.register("gregtech:1ToY", AdvancedCrafting1ToY.class, RecipeSorter.Category.SHAPELESS, "after:gregtech:shaped after:gregtech:shapeless");
    RecipeSorter.register("gregtech:XToY", AdvancedCraftingXToY.class, RecipeSorter.Category.SHAPELESS, "after:gregtech:shaped after:gregtech:1ToY");
    RecipeSorter.register("gregtech:tool", AdvancedCraftingTool.class, RecipeSorter.Category.SHAPELESS, "after:gregtech:shaped after:gregtech:XToY");
    // A Default Packet Handler for some of the already existing Code. Yes, all those Packets are generalised special cases in order to save on Bandwidth.
    // [        +127] = PacketConfig
    // [        +126] = PacketPrefix
    // [        +125] = PacketItemStackChat
    // [+112 to +119] = PacketBlockEvent
    // [+104 to +111] = PacketBlockError
    // [+ 72 to + 79] = PacketDeathPoint
    // [-120 to + 71] = PacketSyncData
    // [-128 to -121] = PacketSound
    NW_API = new NetworkHandler(MD.GAPI.mID, "GAPI", new PacketConfig(), new PacketPrefix(), new PacketItemStackChat(), new PacketBlockEvent(0), new PacketBlockEvent(1), new PacketBlockEvent(2), new PacketBlockEvent(3), new PacketBlockEvent(4), new PacketBlockEvent(5), new PacketBlockEvent(6), new PacketBlockEvent(7), new PacketBlockError(0), new PacketBlockError(1), new PacketBlockError(2), new PacketBlockError(3), new PacketBlockError(4), new PacketBlockError(5), new PacketBlockError(6), new PacketBlockError(7), new PacketDeathPoint(0), new PacketDeathPoint(1), new PacketDeathPoint(2), new PacketDeathPoint(3), new PacketDeathPoint(4), new PacketDeathPoint(5), new PacketDeathPoint(6), new PacketDeathPoint(7), new PacketSound(0), new PacketSound(1), new PacketSound(2), new PacketSound(3), new PacketSound(4), new PacketSound(5), new PacketSound(6), new PacketSound(7), new PacketSyncDataName(0), new PacketSyncDataName(1), new PacketSyncDataName(2), new PacketSyncDataName(3), new PacketSyncDataName(4), new PacketSyncDataName(5), new PacketSyncDataName(6), new PacketSyncDataName(7), new PacketSyncDataByte(0), new PacketSyncDataByte(1), new PacketSyncDataByte(2), new PacketSyncDataByte(3), new PacketSyncDataByte(4), new PacketSyncDataByte(5), new PacketSyncDataByte(6), new PacketSyncDataByte(7), new PacketSyncDataShort(0), new PacketSyncDataShort(1), new PacketSyncDataShort(2), new PacketSyncDataShort(3), new PacketSyncDataShort(4), new PacketSyncDataShort(5), new PacketSyncDataShort(6), new PacketSyncDataShort(7), new PacketSyncDataInteger(0), new PacketSyncDataInteger(1), new PacketSyncDataInteger(2), new PacketSyncDataInteger(3), new PacketSyncDataInteger(4), new PacketSyncDataInteger(5), new PacketSyncDataInteger(6), new PacketSyncDataInteger(7), new PacketSyncDataLong(0), new PacketSyncDataLong(1), new PacketSyncDataLong(2), new PacketSyncDataLong(3), new PacketSyncDataLong(4), new PacketSyncDataLong(5), new PacketSyncDataLong(6), new PacketSyncDataLong(7), new PacketSyncDataByteArray(0), new PacketSyncDataByteArray(1), new PacketSyncDataByteArray(2), new PacketSyncDataByteArray(3), new PacketSyncDataByteArray(4), new PacketSyncDataByteArray(5), new PacketSyncDataByteArray(6), new PacketSyncDataByteArray(7), new PacketSyncDataIDs(0), new PacketSyncDataIDs(1), new PacketSyncDataIDs(2), new PacketSyncDataIDs(3), new PacketSyncDataIDs(4), new PacketSyncDataIDs(5), new PacketSyncDataIDs(6), new PacketSyncDataIDs(7), new PacketSyncDataByteAndIDs(0), new PacketSyncDataByteAndIDs(1), new PacketSyncDataByteAndIDs(2), new PacketSyncDataByteAndIDs(3), new PacketSyncDataByteAndIDs(4), new PacketSyncDataByteAndIDs(5), new PacketSyncDataByteAndIDs(6), new PacketSyncDataByteAndIDs(7), new PacketSyncDataShortAndIDs(0), new PacketSyncDataShortAndIDs(1), new PacketSyncDataShortAndIDs(2), new PacketSyncDataShortAndIDs(3), new PacketSyncDataShortAndIDs(4), new PacketSyncDataShortAndIDs(5), new PacketSyncDataShortAndIDs(6), new PacketSyncDataShortAndIDs(7), new PacketSyncDataIntegerAndIDs(0), new PacketSyncDataIntegerAndIDs(1), new PacketSyncDataIntegerAndIDs(2), new PacketSyncDataIntegerAndIDs(3), new PacketSyncDataIntegerAndIDs(4), new PacketSyncDataIntegerAndIDs(5), new PacketSyncDataIntegerAndIDs(6), new PacketSyncDataIntegerAndIDs(7), new PacketSyncDataLongAndIDs(0), new PacketSyncDataLongAndIDs(1), new PacketSyncDataLongAndIDs(2), new PacketSyncDataLongAndIDs(3), new PacketSyncDataLongAndIDs(4), new PacketSyncDataLongAndIDs(5), new PacketSyncDataLongAndIDs(6), new PacketSyncDataLongAndIDs(7), new PacketSyncDataByteArrayAndIDs(0), new PacketSyncDataByteArrayAndIDs(1), new PacketSyncDataByteArrayAndIDs(2), new PacketSyncDataByteArrayAndIDs(3), new PacketSyncDataByteArrayAndIDs(4), new PacketSyncDataByteArrayAndIDs(5), new PacketSyncDataByteArrayAndIDs(6), new PacketSyncDataByteArrayAndIDs(7), new PacketSyncDataIDsAndCovers(0), new PacketSyncDataIDsAndCovers(1), new PacketSyncDataIDsAndCovers(2), new PacketSyncDataIDsAndCovers(3), new PacketSyncDataIDsAndCovers(4), new PacketSyncDataIDsAndCovers(5), new PacketSyncDataIDsAndCovers(6), new PacketSyncDataIDsAndCovers(7), new PacketSyncDataByteAndIDsAndCovers(0), new PacketSyncDataByteAndIDsAndCovers(1), new PacketSyncDataByteAndIDsAndCovers(2), new PacketSyncDataByteAndIDsAndCovers(3), new PacketSyncDataByteAndIDsAndCovers(4), new PacketSyncDataByteAndIDsAndCovers(5), new PacketSyncDataByteAndIDsAndCovers(6), new PacketSyncDataByteAndIDsAndCovers(7), new PacketSyncDataShortAndIDsAndCovers(0), new PacketSyncDataShortAndIDsAndCovers(1), new PacketSyncDataShortAndIDsAndCovers(2), new PacketSyncDataShortAndIDsAndCovers(3), new PacketSyncDataShortAndIDsAndCovers(4), new PacketSyncDataShortAndIDsAndCovers(5), new PacketSyncDataShortAndIDsAndCovers(6), new PacketSyncDataShortAndIDsAndCovers(7), new PacketSyncDataIntegerAndIDsAndCovers(0), new PacketSyncDataIntegerAndIDsAndCovers(1), new PacketSyncDataIntegerAndIDsAndCovers(2), new PacketSyncDataIntegerAndIDsAndCovers(3), new PacketSyncDataIntegerAndIDsAndCovers(4), new PacketSyncDataIntegerAndIDsAndCovers(5), new PacketSyncDataIntegerAndIDsAndCovers(6), new PacketSyncDataIntegerAndIDsAndCovers(7), new PacketSyncDataLongAndIDsAndCovers(0), new PacketSyncDataLongAndIDsAndCovers(1), new PacketSyncDataLongAndIDsAndCovers(2), new PacketSyncDataLongAndIDsAndCovers(3), new PacketSyncDataLongAndIDsAndCovers(4), new PacketSyncDataLongAndIDsAndCovers(5), new PacketSyncDataLongAndIDsAndCovers(6), new PacketSyncDataLongAndIDsAndCovers(7), new PacketSyncDataByteArrayAndIDsAndCovers(0), new PacketSyncDataByteArrayAndIDsAndCovers(1), new PacketSyncDataByteArrayAndIDsAndCovers(2), new PacketSyncDataByteArrayAndIDsAndCovers(3), new PacketSyncDataByteArrayAndIDsAndCovers(4), new PacketSyncDataByteArrayAndIDsAndCovers(5), new PacketSyncDataByteArrayAndIDsAndCovers(6), new PacketSyncDataByteArrayAndIDsAndCovers(7), new PacketSyncDataCoverVisuals(0), new PacketSyncDataCoverVisuals(1), new PacketSyncDataCoverVisuals(2), new PacketSyncDataCoverVisuals(3), new PacketSyncDataCoverVisuals(4), new PacketSyncDataCoverVisuals(5), new PacketSyncDataCoverVisuals(6), new PacketSyncDataCoverVisuals(7), new PacketSyncDataByteAndCoverVisuals(0), new PacketSyncDataByteAndCoverVisuals(1), new PacketSyncDataByteAndCoverVisuals(2), new PacketSyncDataByteAndCoverVisuals(3), new PacketSyncDataByteAndCoverVisuals(4), new PacketSyncDataByteAndCoverVisuals(5), new PacketSyncDataByteAndCoverVisuals(6), new PacketSyncDataByteAndCoverVisuals(7), new PacketSyncDataShortAndCoverVisuals(0), new PacketSyncDataShortAndCoverVisuals(1), new PacketSyncDataShortAndCoverVisuals(2), new PacketSyncDataShortAndCoverVisuals(3), new PacketSyncDataShortAndCoverVisuals(4), new PacketSyncDataShortAndCoverVisuals(5), new PacketSyncDataShortAndCoverVisuals(6), new PacketSyncDataShortAndCoverVisuals(7), new PacketSyncDataIntegerAndCoverVisuals(0), new PacketSyncDataIntegerAndCoverVisuals(1), new PacketSyncDataIntegerAndCoverVisuals(2), new PacketSyncDataIntegerAndCoverVisuals(3), new PacketSyncDataIntegerAndCoverVisuals(4), new PacketSyncDataIntegerAndCoverVisuals(5), new PacketSyncDataIntegerAndCoverVisuals(6), new PacketSyncDataIntegerAndCoverVisuals(7), new PacketSyncDataLongAndCoverVisuals(0), new PacketSyncDataLongAndCoverVisuals(1), new PacketSyncDataLongAndCoverVisuals(2), new PacketSyncDataLongAndCoverVisuals(3), new PacketSyncDataLongAndCoverVisuals(4), new PacketSyncDataLongAndCoverVisuals(5), new PacketSyncDataLongAndCoverVisuals(6), new PacketSyncDataLongAndCoverVisuals(7), new PacketSyncDataByteArrayAndCoverVisuals(0), new PacketSyncDataByteArrayAndCoverVisuals(1), new PacketSyncDataByteArrayAndCoverVisuals(2), new PacketSyncDataByteArrayAndCoverVisuals(3), new PacketSyncDataByteArrayAndCoverVisuals(4), new PacketSyncDataByteArrayAndCoverVisuals(5), new PacketSyncDataByteArrayAndCoverVisuals(6), new PacketSyncDataByteArrayAndCoverVisuals(7));
    NW_AP2 = new NetworkHandler(MD.GAPI.mID, "GAP2", new PacketSyncDataByte(0), new PacketSyncDataByte(1), new PacketSyncDataByte(2), new PacketSyncDataByte(3), new PacketSyncDataByte(4), new PacketSyncDataByte(5), new PacketSyncDataByte(6), new PacketSyncDataByte(7), new PacketSyncDataShort(0), new PacketSyncDataShort(1), new PacketSyncDataShort(2), new PacketSyncDataShort(3), new PacketSyncDataShort(4), new PacketSyncDataShort(5), new PacketSyncDataShort(6), new PacketSyncDataShort(7), new PacketSyncDataInteger(0), new PacketSyncDataInteger(1), new PacketSyncDataInteger(2), new PacketSyncDataInteger(3), new PacketSyncDataInteger(4), new PacketSyncDataInteger(5), new PacketSyncDataInteger(6), new PacketSyncDataInteger(7), new PacketSyncDataLong(0), new PacketSyncDataLong(1), new PacketSyncDataLong(2), new PacketSyncDataLong(3), new PacketSyncDataLong(4), new PacketSyncDataLong(5), new PacketSyncDataLong(6), new PacketSyncDataLong(7), new PacketSyncDataByteArray(0), new PacketSyncDataByteArray(1), new PacketSyncDataByteArray(2), new PacketSyncDataByteArray(3), new PacketSyncDataByteArray(4), new PacketSyncDataByteArray(5), new PacketSyncDataByteArray(6), new PacketSyncDataByteArray(7), new PacketSyncDataIDs(0), new PacketSyncDataIDs(1), new PacketSyncDataIDs(2), new PacketSyncDataIDs(3), new PacketSyncDataIDs(4), new PacketSyncDataIDs(5), new PacketSyncDataIDs(6), new PacketSyncDataIDs(7), new PacketSyncDataByteAndIDs(0), new PacketSyncDataByteAndIDs(1), new PacketSyncDataByteAndIDs(2), new PacketSyncDataByteAndIDs(3), new PacketSyncDataByteAndIDs(4), new PacketSyncDataByteAndIDs(5), new PacketSyncDataByteAndIDs(6), new PacketSyncDataByteAndIDs(7), new PacketSyncDataShortAndIDs(0), new PacketSyncDataShortAndIDs(1), new PacketSyncDataShortAndIDs(2), new PacketSyncDataShortAndIDs(3), new PacketSyncDataShortAndIDs(4), new PacketSyncDataShortAndIDs(5), new PacketSyncDataShortAndIDs(6), new PacketSyncDataShortAndIDs(7), new PacketSyncDataIntegerAndIDs(0), new PacketSyncDataIntegerAndIDs(1), new PacketSyncDataIntegerAndIDs(2), new PacketSyncDataIntegerAndIDs(3), new PacketSyncDataIntegerAndIDs(4), new PacketSyncDataIntegerAndIDs(5), new PacketSyncDataIntegerAndIDs(6), new PacketSyncDataIntegerAndIDs(7), new PacketSyncDataLongAndIDs(0), new PacketSyncDataLongAndIDs(1), new PacketSyncDataLongAndIDs(2), new PacketSyncDataLongAndIDs(3), new PacketSyncDataLongAndIDs(4), new PacketSyncDataLongAndIDs(5), new PacketSyncDataLongAndIDs(6), new PacketSyncDataLongAndIDs(7), new PacketSyncDataByteArrayAndIDs(0), new PacketSyncDataByteArrayAndIDs(1), new PacketSyncDataByteArrayAndIDs(2), new PacketSyncDataByteArrayAndIDs(3), new PacketSyncDataByteArrayAndIDs(4), new PacketSyncDataByteArrayAndIDs(5), new PacketSyncDataByteArrayAndIDs(6), new PacketSyncDataByteArrayAndIDs(7), new PacketSyncDataIDsAndCovers(0), new PacketSyncDataIDsAndCovers(1), new PacketSyncDataIDsAndCovers(2), new PacketSyncDataIDsAndCovers(3), new PacketSyncDataIDsAndCovers(4), new PacketSyncDataIDsAndCovers(5), new PacketSyncDataIDsAndCovers(6), new PacketSyncDataIDsAndCovers(7), new PacketSyncDataByteAndIDsAndCovers(0), new PacketSyncDataByteAndIDsAndCovers(1), new PacketSyncDataByteAndIDsAndCovers(2), new PacketSyncDataByteAndIDsAndCovers(3), new PacketSyncDataByteAndIDsAndCovers(4), new PacketSyncDataByteAndIDsAndCovers(5), new PacketSyncDataByteAndIDsAndCovers(6), new PacketSyncDataByteAndIDsAndCovers(7), new PacketSyncDataShortAndIDsAndCovers(0), new PacketSyncDataShortAndIDsAndCovers(1), new PacketSyncDataShortAndIDsAndCovers(2), new PacketSyncDataShortAndIDsAndCovers(3), new PacketSyncDataShortAndIDsAndCovers(4), new PacketSyncDataShortAndIDsAndCovers(5), new PacketSyncDataShortAndIDsAndCovers(6), new PacketSyncDataShortAndIDsAndCovers(7), new PacketSyncDataIntegerAndIDsAndCovers(0), new PacketSyncDataIntegerAndIDsAndCovers(1), new PacketSyncDataIntegerAndIDsAndCovers(2), new PacketSyncDataIntegerAndIDsAndCovers(3), new PacketSyncDataIntegerAndIDsAndCovers(4), new PacketSyncDataIntegerAndIDsAndCovers(5), new PacketSyncDataIntegerAndIDsAndCovers(6), new PacketSyncDataIntegerAndIDsAndCovers(7), new PacketSyncDataLongAndIDsAndCovers(0), new PacketSyncDataLongAndIDsAndCovers(1), new PacketSyncDataLongAndIDsAndCovers(2), new PacketSyncDataLongAndIDsAndCovers(3), new PacketSyncDataLongAndIDsAndCovers(4), new PacketSyncDataLongAndIDsAndCovers(5), new PacketSyncDataLongAndIDsAndCovers(6), new PacketSyncDataLongAndIDsAndCovers(7), new PacketSyncDataByteArrayAndIDsAndCovers(0), new PacketSyncDataByteArrayAndIDsAndCovers(1), new PacketSyncDataByteArrayAndIDsAndCovers(2), new PacketSyncDataByteArrayAndIDsAndCovers(3), new PacketSyncDataByteArrayAndIDsAndCovers(4), new PacketSyncDataByteArrayAndIDsAndCovers(5), new PacketSyncDataByteArrayAndIDsAndCovers(6), new PacketSyncDataByteArrayAndIDsAndCovers(7), new PacketSyncDataCoverVisuals(0), new PacketSyncDataCoverVisuals(1), new PacketSyncDataCoverVisuals(2), new PacketSyncDataCoverVisuals(3), new PacketSyncDataCoverVisuals(4), new PacketSyncDataCoverVisuals(5), new PacketSyncDataCoverVisuals(6), new PacketSyncDataCoverVisuals(7), new PacketSyncDataByteAndCoverVisuals(0), new PacketSyncDataByteAndCoverVisuals(1), new PacketSyncDataByteAndCoverVisuals(2), new PacketSyncDataByteAndCoverVisuals(3), new PacketSyncDataByteAndCoverVisuals(4), new PacketSyncDataByteAndCoverVisuals(5), new PacketSyncDataByteAndCoverVisuals(6), new PacketSyncDataByteAndCoverVisuals(7), new PacketSyncDataShortAndCoverVisuals(0), new PacketSyncDataShortAndCoverVisuals(1), new PacketSyncDataShortAndCoverVisuals(2), new PacketSyncDataShortAndCoverVisuals(3), new PacketSyncDataShortAndCoverVisuals(4), new PacketSyncDataShortAndCoverVisuals(5), new PacketSyncDataShortAndCoverVisuals(6), new PacketSyncDataShortAndCoverVisuals(7), new PacketSyncDataIntegerAndCoverVisuals(0), new PacketSyncDataIntegerAndCoverVisuals(1), new PacketSyncDataIntegerAndCoverVisuals(2), new PacketSyncDataIntegerAndCoverVisuals(3), new PacketSyncDataIntegerAndCoverVisuals(4), new PacketSyncDataIntegerAndCoverVisuals(5), new PacketSyncDataIntegerAndCoverVisuals(6), new PacketSyncDataIntegerAndCoverVisuals(7), new PacketSyncDataLongAndCoverVisuals(0), new PacketSyncDataLongAndCoverVisuals(1), new PacketSyncDataLongAndCoverVisuals(2), new PacketSyncDataLongAndCoverVisuals(3), new PacketSyncDataLongAndCoverVisuals(4), new PacketSyncDataLongAndCoverVisuals(5), new PacketSyncDataLongAndCoverVisuals(6), new PacketSyncDataLongAndCoverVisuals(7), new PacketSyncDataByteArrayAndCoverVisuals(0), new PacketSyncDataByteArrayAndCoverVisuals(1), new PacketSyncDataByteArrayAndCoverVisuals(2), new PacketSyncDataByteArrayAndCoverVisuals(3), new PacketSyncDataByteArrayAndCoverVisuals(4), new PacketSyncDataByteArrayAndCoverVisuals(5), new PacketSyncDataByteArrayAndCoverVisuals(6), new PacketSyncDataByteArrayAndCoverVisuals(7));
    // Registering the TileEntity used for Meta-Generated Blocks to store the 32000 variations.
    GameRegistry.registerTileEntity(PrefixBlockTileEntity.class, "gt.MetaBlockTileEntity");
    // Creating and loading the Lang File.
    if (CODE_CLIENT) {
        tFile = new File(DirectoriesGT.MINECRAFT, "GregTech.lang");
        if (!tFile.exists())
            tFile = new File(DirectoriesGT.MINECRAFT, "gregtech.lang");
        LanguageHandler.sLangFile = new Configuration(tFile);
    } else {
        sBlockIconload.clear();
        sBlockIconload = null;
        sItemIconload.clear();
        sItemIconload = null;
    }
    // Creating and loading the Unification Config.
    OreDictManager.INSTANCE.mUnificationConfig = new Config("Unification.cfg");
    // Initialising the Re-Registrations.
    new LoaderOreDictReRegistrations().run();
    // Register the Falling MetaBlock Entity.
    EntityRegistry.registerModEntity(PrefixBlockFallingEntity.class, "gt.MetaBlockFallingEntity", 0, this, 160, 1, T);
    // Initialise Enchantments.
    new Enchantment_WerewolfDamage();
    new Enchantment_EnderDamage();
    new Enchantment_Radioactivity();
    new Enchantment_SlimeDamage();
    // Initialises the Fluid Display Item.
    IL.Display_Fluid.set(new ItemFluidDisplay());
    // Initialises the Integrated Circuit Item.
    IL.Circuit_Selector.set(new ItemIntegratedCircuit());
    // Initialises the Empty Slot Marker Item.
    IL.Empty_Slot.set(new ItemEmptySlot());
    // Register the GUI Handler.
    NetworkRegistry.INSTANCE.registerGuiHandler(this, api_proxy);
    // Fixing vanilla Oak Plank Slab Recipe.
    CR.remove(ST.make(Blocks.planks, 1, 0), ST.make(Blocks.planks, 1, 1), ST.make(Blocks.planks, 1, 2));
    CR.shaped(ST.make(Blocks.wooden_slab, 6, 0), CR.NONE, "WWW", 'W', ST.make(Blocks.planks, 1, 0));
    // Preventing a Water Dupe by registering this Recipe early so it won't be overridden
    RM.Canner.addRecipe1(T, 16, 16, ST.make(Items.glass_bottle, 1, 0), FL.Water.make(250), NF, ST.make(Items.potionitem, 1, 0));
    RM.Canner.addRecipe1(T, 16, 16, ST.make(Items.potionitem, 1, 0), ST.make(Items.glass_bottle, 1, 0));
    try {
        LoadController tLoadController = ((LoadController) UT.Reflection.getFieldContent(Loader.instance(), "modController", T, T));
        List<ModContainer> tModList = tLoadController.getActiveModList(), tNewModsList = new ArrayList<>(tModList.size());
        ModContainer tGregTech = null;
        for (short i = 0; i < tModList.size(); i++) {
            ModContainer tMod = tModList.get(i);
            if (tMod.getModId().equalsIgnoreCase(MD.GAPI.mID))
                tGregTech = tMod;
            else
                tNewModsList.add(tMod);
        }
        if (tGregTech != null)
            tNewModsList.add(0, tGregTech);
        UT.Reflection.setFieldContent(tLoadController, "activeModList", tNewModsList);
    } catch (Throwable e) {
        e.printStackTrace(ERR);
    }
    for (ICompat tCompat : ICompat.COMPAT_CLASSES) try {
        tCompat.onPreLoad(aEvent);
    } catch (Throwable e) {
        e.printStackTrace(ERR);
    }
}
Also used : Configuration(net.minecraftforge.common.config.Configuration) Enchantment_WerewolfDamage(gregapi.enchants.Enchantment_WerewolfDamage) Enchantment_EnderDamage(gregapi.enchants.Enchantment_EnderDamage) LoggerPlayerActivity(gregapi.log.LoggerPlayerActivity) ItemFluidDisplay(gregapi.item.ItemFluidDisplay) File(java.io.File) LoaderOreDictReRegistrations(gregapi.load.LoaderOreDictReRegistrations) Enchantment_SlimeDamage(gregapi.enchants.Enchantment_SlimeDamage) Config(gregapi.config.Config) ItemIntegratedCircuit(gregapi.item.ItemIntegratedCircuit) LogBuffer(gregapi.log.LogBuffer) ItemEmptySlot(gregapi.item.ItemEmptySlot) NetworkHandler(gregapi.network.NetworkHandler) OreDictMaterial(gregapi.oredict.OreDictMaterial) ICompat(gregapi.compat.ICompat) PrintStream(java.io.PrintStream) Enchantment_Radioactivity(gregapi.enchants.Enchantment_Radioactivity) OreDictPrefix(gregapi.oredict.OreDictPrefix)

Aggregations

OreDictPrefix (gregapi.oredict.OreDictPrefix)21 OreDictMaterial (gregapi.oredict.OreDictMaterial)10 ItemStack (net.minecraft.item.ItemStack)8 ArrayListNoNulls (gregapi.code.ArrayListNoNulls)6 FluidStack (net.minecraftforge.fluids.FluidStack)6 OreDictItemData (gregapi.oredict.OreDictItemData)5 IOreDictListenerEvent (gregapi.oredict.event.IOreDictListenerEvent)4 OreDictListenerEvent_Names (gregapi.oredict.event.OreDictListenerEvent_Names)4 ItemStackContainer (gregapi.code.ItemStackContainer)3 Block (net.minecraft.block.Block)3 HashSetNoNulls (gregapi.code.HashSetNoNulls)2 ICondition (gregapi.code.ICondition)2 And (gregapi.code.ICondition.And)2 Recipe (gregapi.recipes.Recipe)2 FluidContainerData (net.minecraftforge.fluids.FluidContainerRegistry.FluidContainerData)2 ComparableItem (cofh.lib.util.ComparableItem)1 SubscribeEvent (cpw.mods.fml.common.eventhandler.SubscribeEvent)1 BlockBase (gregapi.block.BlockBase)1 Drops (gregapi.block.behaviors.Drops)1 Drops_None (gregapi.block.behaviors.Drops_None)1