Search in sources :

Example 16 with OreDictPrefix

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

the class Loader_Recipes_Other method run.

@Override
public void run() {
    dust.addListener(new IOreDictListenerEvent() {

        @Override
        public void onOreRegistration(OreDictRegistrationContainer aEvent) {
            if (aEvent.mMaterial.mReRegistrations.contains(ANY.Wax) && !ST.isGT_(aEvent.mStack))
                CR.remove(aEvent.mStack);
        }
    });
    for (OreDictMaterial tWax : ANY.Wax.mToThis) {
        RM.Compressor.addRecipe1(T, 16, 16, OM.dust(tWax, U), plate.mat(tWax, 1));
        RM.Compressor.addRecipe1(T, 16, 16, OM.dust(tWax, U4), foil.mat(tWax, 1));
        RM.ic2_compressor(OM.dust(tWax, U), plate.mat(tWax, 1));
        RM.ic2_compressor(OM.dust(tWax, U4), foil.mat(tWax, 1));
    }
    RM.Mixer.addRecipe2(T, 16, 64, dust.mat(MT.Cu, 3), dust.mat(MT.Sn, 1), IL.Compound_Bronze.get(36));
    RM.Mixer.addRecipe2(T, 16, 64, dust.mat(MT.Cu, 3), dust.mat(MT.Zn, 1), IL.Compound_Brass.get(36));
    RM.Mixer.addRecipe2(T, 16, 80, dust.mat(MT.Brass, 4), dust.mat(MT.Bi, 1), IL.Compound_BismuthBronze.get(45));
    RM.Mixer.addRecipe2(T, 16, 80, IL.Compound_Brass.get(36), dust.mat(MT.Bi, 1), IL.Compound_BismuthBronze.get(45));
    RM.Mixer.addRecipe2(T, 16, 16, dustSmall.mat(MT.Cu, 3), dustSmall.mat(MT.Sn, 1), IL.Compound_Bronze.get(9));
    RM.Mixer.addRecipe2(T, 16, 16, dustSmall.mat(MT.Cu, 3), dustSmall.mat(MT.Zn, 1), IL.Compound_Brass.get(9));
    RM.Mixer.addRecipe2(T, 16, 80, dustSmall.mat(MT.Brass, 16), dustSmall.mat(MT.Bi, 4), IL.Compound_BismuthBronze.get(45));
    RM.Mixer.addRecipe2(T, 16, 80, IL.Compound_Brass.get(36), dustSmall.mat(MT.Bi, 4), IL.Compound_BismuthBronze.get(45));
    for (OreDictPrefix tPrefixA : new OreDictPrefix[] { dustTiny, nugget, scrapGt }) {
        RM.Mixer.addRecipe2(T, 16, 64, tPrefixA.mat(MT.Cu, 27), dust.mat(MT.Sn, 1), IL.Compound_Bronze.get(36));
        RM.Mixer.addRecipe2(T, 16, 64, tPrefixA.mat(MT.Cu, 27), dust.mat(MT.Zn, 1), IL.Compound_Brass.get(36));
        RM.Mixer.addRecipe2(T, 16, 80, tPrefixA.mat(MT.Brass, 36), dust.mat(MT.Bi, 1), IL.Compound_BismuthBronze.get(45));
        RM.Mixer.addRecipe2(T, 16, 64, tPrefixA.mat(MT.Cu, 27), dustSmall.mat(MT.Sn, 4), IL.Compound_Bronze.get(36));
        RM.Mixer.addRecipe2(T, 16, 64, tPrefixA.mat(MT.Cu, 27), dustSmall.mat(MT.Zn, 4), IL.Compound_Brass.get(36));
        RM.Mixer.addRecipe2(T, 16, 80, tPrefixA.mat(MT.Brass, 36), dustSmall.mat(MT.Bi, 4), IL.Compound_BismuthBronze.get(45));
        RM.Mixer.addRecipe2(T, 16, 22, dust.mat(MT.Cu, 1), tPrefixA.mat(MT.Sn, 3), IL.Compound_Bronze.get(12));
        RM.Mixer.addRecipe2(T, 16, 22, dust.mat(MT.Cu, 1), tPrefixA.mat(MT.Zn, 3), IL.Compound_Brass.get(12));
        RM.Mixer.addRecipe2(T, 16, 80, dust.mat(MT.Brass, 4), tPrefixA.mat(MT.Bi, 9), IL.Compound_BismuthBronze.get(45));
        RM.Mixer.addRecipe2(T, 16, 22, dustSmall.mat(MT.Cu, 4), tPrefixA.mat(MT.Sn, 3), IL.Compound_Bronze.get(12));
        RM.Mixer.addRecipe2(T, 16, 22, dustSmall.mat(MT.Cu, 4), tPrefixA.mat(MT.Zn, 3), IL.Compound_Brass.get(12));
        RM.Mixer.addRecipe2(T, 16, 80, dustSmall.mat(MT.Brass, 16), tPrefixA.mat(MT.Bi, 9), IL.Compound_BismuthBronze.get(45));
        RM.Mixer.addRecipe2(T, 16, 10, IL.Compound_Brass.get(4), tPrefixA.mat(MT.Bi, 1), IL.Compound_BismuthBronze.get(5));
        for (OreDictPrefix tPrefixB : new OreDictPrefix[] { dustTiny, nugget, scrapGt }) {
            RM.Mixer.addRecipe2(T, 16, 8, tPrefixA.mat(MT.Cu, 3), tPrefixB.mat(MT.Sn, 1), IL.Compound_Bronze.get(4));
            RM.Mixer.addRecipe2(T, 16, 8, tPrefixA.mat(MT.Cu, 3), tPrefixB.mat(MT.Zn, 1), IL.Compound_Brass.get(4));
            RM.Mixer.addRecipe2(T, 16, 10, tPrefixA.mat(MT.Brass, 4), tPrefixB.mat(MT.Bi, 1), IL.Compound_BismuthBronze.get(5));
        }
    }
    RM.Mixer.addRecipe2(T, 16, 64, dust.mat(MT.Cu, 1), dust.mat(MT.Redstone, 1), dust.mat(MT.Mingrade, 2));
    RM.Mixer.addRecipe2(T, 16, 16, dustSmall.mat(MT.Cu, 1), dustSmall.mat(MT.Redstone, 1), dustSmall.mat(MT.Mingrade, 2));
    RM.Mixer.addRecipe2(T, 16, 8, dustTiny.mat(MT.Cu, 1), dustTiny.mat(MT.Redstone, 1), dustTiny.mat(MT.Mingrade, 2));
    for (OreDictMaterial tSapphire : ANY.Sapphire.mToThis) {
        RM.Mixer.addRecipe2(T, 16, 144, OM.dust(tSapphire, 4 * U), OM.dust(MT.Redstone, 5 * U), OM.dust(MT.EnergiumRed, 9 * U));
        RM.Mixer.addRecipe2(T, 16, 144, OM.dust(tSapphire, 4 * U9), OM.dust(MT.Redstone, 5 * U9), OM.dust(MT.EnergiumRed, U));
        RM.Mixer.addRecipe2(T, 16, 144, OM.dust(tSapphire, 4 * U), OM.dust(MT.Nikolite, 5 * U), OM.dust(MT.EnergiumCyan, 9 * U));
        RM.Mixer.addRecipe2(T, 16, 144, OM.dust(tSapphire, 4 * U9), OM.dust(MT.Nikolite, 5 * U9), OM.dust(MT.EnergiumCyan, U));
    }
    for (OreDictMaterial tMat : ANY.Diamond.mToThis) {
        RM.Mixer.addRecipe2(T, 16, 256, OP.dust.mat(MT.Obsidian, 1), OP.dust.mat(tMat, 1), OP.dust.mat(MT.RefinedObsidian, 1));
        RM.Injector.addRecipe2(T, 16, 256, OP.dust.mat(MT.Obsidian, 1), OP.dust.mat(tMat, 1), MT.Ge.liquid(U, T), NF, OP.ingot.mat(MT.RefinedObsidian, 1));
    }
    for (OreDictMaterial tMat : ANY.Glowstone.mToThis) RM.Injector.addRecipe1(T, 16, 256, OP.dust.mat(tMat, 1), MT.Ge.liquid(U, T), NF, OP.ingot.mat(MT.RefinedGlowstone, 1));
    RM.Injector.addRecipe1(T, 16, 256, OP.dust.mat(MT.RefinedObsidian, 1), MT.Ge.liquid(U, T), NF, OP.ingot.mat(MT.RefinedObsidian, 1));
    RM.Compressor.addRecipe1(T, 16, 256, OP.dust.mat(MT.RefinedObsidian, 1), OP.plate.mat(MT.RefinedObsidian, 1));
    RM.ic2_compressor(OP.dust.mat(MT.RefinedObsidian, 1), OP.plate.mat(MT.RefinedObsidian, 1));
    new OreDictListenerEvent_Names() {

        @Override
        public void addAllListeners() {
            for (byte i = 0; i < 16; i++) {
                final byte aIndex = i;
                addListener(DYE_OREDICTS_MIXABLE[aIndex], new IOreDictListenerEvent() {

                    @Override
                    public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                        if (ST.container(aEvent.mStack, T) == null) {
                            for (FluidStack tWater : FL.waters(L)) RM.Mixer.addRecipe1(T, 16, 16, aEvent.mStack, tWater, FL.mul(DYE_FLUIDS_WATER[aIndex], 3, 2, F), ZL_IS);
                            ItemStack tStack = dust.mat(MT.DATA.Dye_Materials[aIndex], 1);
                            if (!ST.equal(tStack, aEvent.mStack, T))
                                RM.generify(aEvent.mStack, tStack);
                        }
                    }
                });
            }
            addListener(DYE_OREDICTS_LENS[DYE_INDEX_Green], new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    for (OreDictMaterial tMat : ANY.Diamond.mToThis) RM.LaserEngraver.addRecipe2(T, 256, 64, plateGem.mat(tMat, 1), ST.amount(0, aEvent.mStack), IL.Circuit_Crystal_Diamond.get(1));
                    for (OreDictMaterial tMat : ANY.Emerald.mToThis) RM.LaserEngraver.addRecipe2(T, 256, 64, plateGem.mat(tMat, 1), ST.amount(0, aEvent.mStack), IL.Circuit_Crystal_Emerald.get(1));
                    for (OreDictMaterial tMat : ANY.Sapphire.mToThis) if (tMat != MT.Ruby)
                        RM.LaserEngraver.addRecipe2(T, 256, 64, plateGem.mat(tMat, 1), ST.amount(0, aEvent.mStack), IL.Circuit_Crystal_Sapphire.get(1));
                    RM.LaserEngraver.addRecipe2(T, 256, 64, plateGem.mat(MT.Ruby, 1), ST.amount(0, aEvent.mStack), IL.Circuit_Crystal_Ruby.get(1));
                }
            });
            addListener(DYE_OREDICTS_LENS[DYE_INDEX_Red], new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    for (OreDictMaterial tMat : ANY.Cu.mToThis) RM.LaserEngraver.addRecipe2(T, 16, 64, foil.mat(tMat, 4), ST.amount(0, aEvent.mStack), IL.Circuit_Wire_Copper.get(1));
                    RM.LaserEngraver.addRecipe2(T, 16, 64, foil.mat(MT.Au, 4), ST.amount(0, aEvent.mStack), IL.Circuit_Wire_Gold.get(1));
                    RM.LaserEngraver.addRecipe2(T, 16, 64, foil.mat(MT.Pt, 4), ST.amount(0, aEvent.mStack), IL.Circuit_Wire_Platinum.get(1));
                    RM.LaserEngraver.addRecipe2(T, 16, 64, foil.mat(MT.Thaumium, 4), ST.amount(0, aEvent.mStack), IL.Circuit_Wire_Magic.get(1));
                    RM.LaserEngraver.addRecipe2(T, 16, 64, foil.mat(MT.Manasteel, 4), ST.amount(0, aEvent.mStack), IL.Circuit_Wire_Magic.get(1));
                    RM.LaserEngraver.addRecipe2(T, 16, 64, foil.mat(MT.Mithril, 4), ST.amount(0, aEvent.mStack), IL.Circuit_Wire_Magic.get(1));
                    RM.LaserEngraver.addRecipe2(T, 16, 64, foil.mat(MT.Enderium, 4), ST.amount(0, aEvent.mStack), IL.Circuit_Wire_Enderium.get(1));
                    RM.LaserEngraver.addRecipe2(T, 16, 64, foil.mat(MT.Signalum, 4), ST.amount(0, aEvent.mStack), IL.Circuit_Wire_Signalum.get(1));
                }
            });
            addListener(dust.dat(MT.HydratedCoal), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, OM.dust(MT.Coal), F, F, F);
                }
            });
            addListener(rockGt.dat(MT.Netherrack), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, rockGt.mat(MT.NetherBrick, 1), F, F, T);
                }
            });
            addListener(new Object[] { OD.itemRubber, "crushedDraconium", "gemHexorium", "ingotIron", "oreCoal", "oreIron", "oreHematite", "oreMagnetite", "oreBogIron", "oreBrownLimonite", "oreYellowLimonite", "oreSiderite", "oreTaconite", "oreGold", "oreRedstone", "oreLapis", "oreDiamond", "oreEmerald", "oreBauxite", "oreAluminium", "oreRutile", "oreTitanium", "oreTungsten", "oreSulfur", "oreSaltpeter", "oreNiter", "oreNitre" }, new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.rem_smelting(aEvent.mStack);
                }
            });
            addListener(OD.itemResin, new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.biomass(ST.amount(6, aEvent.mStack), 32);
                    RM.rem_smelting(aEvent.mStack);
                    RM.ic2_extractor(aEvent.mStack, OM.ingot(MT.Rubber, 7 * U9));
                    RM.Juicer.addRecipe1(T, 16, 64, aEvent.mStack, NF, FL.Latex.make(L / 2), NI);
                    RM.Squeezer.addRecipe1(T, 16, 64, aEvent.mStack, NF, FL.Latex.make(L), NI);
                    RM.Centrifuge.addRecipe1(T, 16, 64, aEvent.mStack, NF, FL.Latex.make(L), FL.Glue.make(250));
                    for (FluidStack tWater : FL.waters(250)) RM.Mixer.addRecipe1(T, 16, 16, aEvent.mStack, tWater, FL.Glue.make(250), ZL_IS);
                    RM.Laminator.addRecipe2(T, 16, 16, aEvent.mStack, ST.make(Blocks.piston, 1, W), ST.make(Blocks.sticky_piston, 1, 0));
                }
            });
            addListener(OD.itemClay, new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Mixer.addRecipeX(T, 16, 16, ST.array(aEvent.mStack, OM.dust(MT.Redstone), OM.dust(MT.Basalz, U9), OM.dust(MT.Obsidian)), OM.dust(MT.Petrotheum, 2 * U));
                }
            });
            addListener(OD.blockClay, new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Mixer.addRecipeX(T, 16, 64, ST.array(aEvent.mStack, OM.dust(MT.Redstone, U * 4), OM.dust(MT.Basalz, U9 * 4), OM.dust(MT.Obsidian, U * 4)), OM.dust(MT.Petrotheum, 8 * U));
                }
            });
            addListener(OD.itemGrassDry, new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Loom.addRecipe2(T, 16, 16, ST.tag(10), ST.amount(7, aEvent.mStack), IL.Rope_Grass.get(1));
                }
            });
            addListener(dustTiny.dat(ANY.Wood), dustTiny.dat(MT.Bark), dustTiny.dat(MT.Paper), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Mixer.addRecipe1(T, 16, 32, aEvent.mStack, MT.Glyceryl.fluid(U9, T), NF, OM.dust(MT.Dynamite, 2 * U9));
                    for (FluidStack tWater : FL.waters(125, 100)) RM.Bath.addRecipe1(T, 0, 16, ST.amount(9, aEvent.mStack), tWater, NF, ST.make(Items.paper, 1, 0));
                }
            });
            addListener(dustSmall.dat(ANY.Wood), dustSmall.dat(MT.Bark), dustSmall.dat(MT.Paper), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Mixer.addRecipe1(T, 16, 32, aEvent.mStack, MT.Glyceryl.fluid(U4, T), NF, OM.dust(MT.Dynamite, U2));
                    for (FluidStack tWater : FL.waters(125, 100)) RM.Bath.addRecipe1(T, 0, 16, ST.amount(4, aEvent.mStack), tWater, NF, ST.make(Items.paper, 1, 0));
                }
            });
            addListener(dust.dat(ANY.Wood), dust.dat(MT.Bark), dust.dat(MT.Paper), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Mixer.addRecipe1(T, 16, 32, aEvent.mStack, MT.Glyceryl.fluid(U, T), NF, OM.dust(MT.Dynamite, 2 * U));
                    for (FluidStack tWater : FL.waters(125, 100)) RM.Bath.addRecipe1(T, 0, 16, aEvent.mStack, tWater, NF, ST.make(Items.paper, 1, 0));
                }
            });
            addListener(stick.dat(ANY.WoodNormal), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Loom.addRecipe2(T, 16, 16, ST.make(Blocks.wool, 1, W), ST.amount(8, aEvent.mStack), ST.make(Items.painting, 1, 0));
                    RM.Loom.addRecipe2(T, 16, 16, ST.make(Items.leather, 1, W), ST.amount(8, aEvent.mStack), ST.make(Items.item_frame, 1, 0));
                }
            });
        }
    };
    if (FL.Turpentine.exists()) {
        if (FL.Resin.exists())
            RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.Resin.make(10), FL.Turpentine.make(6), FL.DistW.make(3));
        if (FL.Resin_Spruce.exists())
            RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.Resin_Spruce.make(10), FL.Turpentine.make(6), FL.DistW.make(3));
    }
    for (FluidStack tWater : FL.waters(1000)) {
        RM.Bath.addRecipe1(T, 0, 16, OM.dust(MT.Coal), FL.mul(tWater, 1, 8, T), NF, OM.dust(MT.HydratedCoal));
        RM.CryoMixer.addRecipeX(T, 16, 32, ST.array(OM.dust(MT.Redstone), OM.dust(MT.Blizz, U9), OM.dust(MT.NaNO3)), FL.mul(tWater, 1, 4, T), NF, OM.dust(MT.Cryotheum, 2 * U));
        RM.CryoMixer.addRecipeX(T, 16, 128, ST.array(OM.dust(MT.Redstone, U * 4), OM.dust(MT.Blizz, U9 * 4), OM.dust(MT.NaNO3, U * 4)), tWater, NF, OM.dust(MT.Cryotheum, 8 * U));
        RM.CryoMixer.addRecipeX(T, 16, 32, ST.array(OM.dust(MT.Redstone), OM.dust(MT.Blizz, U9), OM.dust(MT.KNO3)), FL.mul(tWater, 1, 4, T), NF, OM.dust(MT.Cryotheum, 2 * U));
        RM.CryoMixer.addRecipeX(T, 16, 128, ST.array(OM.dust(MT.Redstone, U * 4), OM.dust(MT.Blizz, U9 * 4), OM.dust(MT.KNO3, U * 4)), tWater, NF, OM.dust(MT.Cryotheum, 8 * U));
        RM.CryoMixer.addRecipeX(T, 16, 32, ST.array(OM.dust(MT.Redstone), OM.dust(MT.Blizz, U9), OM.dust(MT.Niter)), FL.mul(tWater, 1, 4, T), NF, OM.dust(MT.Cryotheum, 2 * U));
        RM.CryoMixer.addRecipeX(T, 16, 128, ST.array(OM.dust(MT.Redstone, U * 4), OM.dust(MT.Blizz, U9 * 4), OM.dust(MT.Niter, U * 4)), tWater, NF, OM.dust(MT.Cryotheum, 8 * U));
        RM.Mixer.addRecipeX(T, 16, 64, ST.array(gem.mat(MT.ChargedCertusQuartz, 1), gem.mat(MT.VoidQuartz, 1)), FL.mul(tWater, 1, 2, T), NF, gem.mat(MT.Fluix, 2));
        RM.Mixer.addRecipeX(T, 16, 64, ST.array(dust.mat(MT.ChargedCertusQuartz, 1), dust.mat(MT.VoidQuartz, 1)), FL.mul(tWater, 1, 2, T), NF, dust.mat(MT.Fluix, 2));
        RM.Mixer.addRecipeX(T, 16, 64, ST.array(gem.mat(MT.ChargedCertusQuartz, 1), gem.mat(MT.NetherQuartz, 1), dust.mat(MT.Redstone, 1)), FL.mul(tWater, 1, 2, T), NF, gem.mat(MT.Fluix, 2));
        RM.Mixer.addRecipeX(T, 16, 64, ST.array(dust.mat(MT.ChargedCertusQuartz, 1), dust.mat(MT.NetherQuartz, 1), dust.mat(MT.Redstone, 1)), FL.mul(tWater, 1, 2, T), NF, dust.mat(MT.Fluix, 2));
        RM.Mixer.addRecipeX(T, 16, 64, ST.array(gem.mat(MT.ChargedCertusQuartz, 1), gem.mat(MT.MilkyQuartz, 1), dust.mat(MT.Redstone, 1)), FL.mul(tWater, 1, 2, T), NF, gem.mat(MT.Fluix, 2));
        RM.Mixer.addRecipeX(T, 16, 64, ST.array(dust.mat(MT.ChargedCertusQuartz, 1), dust.mat(MT.MilkyQuartz, 1), dust.mat(MT.Redstone, 1)), FL.mul(tWater, 1, 2, T), NF, dust.mat(MT.Fluix, 2));
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.ConstructionFoam), FL.mul(tWater, 1, 10, T), FL.CFoam.make(100), ZL_IS);
        for (OreDictMaterial tClay : ANY.Clay.mToThis) for (OreDictMaterial tSand : ANY.SiO2.mToThis) {
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.Stone, MT.Concrete, MT.Talc, MT.STONES.Rhyolite, MT.STONES.Gneiss, MT.STONES.Shale, MT.Oilshale, MT.Dolomite, MT.STONES.Chert, MT.Asbestos }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.CFoam.make(1000), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.CFoam.make(4000), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Diorite, MT.STONES.Marble, MT.Chalk, MT.CaCO3, MT.Endstone, MT.STONES.Livingrock, MT.STONES.Holystone }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_White], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_White], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Basalt, MT.STONES.Gabbro, MT.STONES.GraniteBlack, MT.STONES.Deepslate }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_Black], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_Black], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Migmatite, MT.STONES.Eclogite, MT.STONES.SpaceRock, MT.STONES.Slate }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_Gray], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_Gray], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Andesite, MT.STONES.Dacite, MT.STONES.Deadrock, MT.STONES.Greywacke, MT.STONES.MoonRock, MT.STONES.MoonTurf }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_LightGray], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_LightGray], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Blueschist }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_LightBlue], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_LightBlue], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Greenschist, MT.STONES.Betweenstone, MT.PrismarineLight }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_Lime], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_Lime], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Pitstone, MT.PrismarineDark }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_Green], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_Green], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Redrock, MT.STONES.MarsRock, MT.STONES.MarsSand, MT.Netherrack, MT.STONES.GraniteRed, MT.STONES.Granite }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_Red], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_Red], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Komatiite }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_Yellow], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_Yellow], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Limestone }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_Orange], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_Orange], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Quartzite, MT.STONES.Siltstone }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_Pink], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_Pink], 40), ZL_IS);
            }
            for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Umber, MT.STONES.Kimberlite }) {
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 6), OM.dust(tSand, U * 2), OM.dust(tClay, U4)), FL.mul(tWater, 1), FL.mul(DYED_C_FOAMS[DYE_INDEX_Brown], 10), ZL_IS);
                RM.Mixer.addRecipeX(T, F, F, F, T, 16, 256, ST.array(OM.dust(tRock, U * 24), OM.dust(tSand, U * 8), OM.dust(tClay, U)), FL.mul(tWater, 4), FL.mul(DYED_C_FOAMS[DYE_INDEX_Brown], 40), ZL_IS);
            }
        }
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Indigo, U9), FL.mul(tWater, L, 1000, T), FL.make("indigo", L), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 36, OM.dust(MT.Indigo, U4), FL.mul(tWater, 9 * L / 4, 1000, T), FL.make("indigo", 9 * L / 4), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 144, OM.dust(MT.Indigo), FL.mul(tWater, 9 * L, 1000, T), FL.make("indigo", 9 * L), ZL_IS);
        // Concrete
        RM.Mixer.addRecipe1(T, 16, 144, blockDust.mat(MT.Concrete, 1), FL.mul(tWater, 9, 2, T), FL.Concrete.make(9 * L), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, dust.mat(MT.Concrete, 1), FL.mul(tWater, 1, 2, T), FL.Concrete.make(L), ZL_IS);
    }
    for (OreDictMaterial tRock : ANY.Stone.mToThis) for (OreDictMaterial tCalcite : ANY.Calcite.mToThis) if (tRock != MT.Concrete && !tRock.mReRegistrations.contains(ANY.Calcite))
        for (OreDictMaterial tAsh : ANY.Ash.mToThis) {
            RM.Mixer.addRecipeX(T, 16, 1296, ST.array(blockDust.mat(tRock, 9), blockDust.mat(tCalcite, 1), blockDust.mat(tAsh, 1)), blockDust.mat(MT.Concrete, 11));
            RM.Mixer.addRecipeX(T, 16, 1296, ST.array(blockDust.mat(tRock, 9), blockDust.mat(tCalcite, 1), dust.mat(tAsh, 9)), blockDust.mat(MT.Concrete, 11));
            RM.Mixer.addRecipeX(T, 16, 1296, ST.array(blockDust.mat(tRock, 9), dust.mat(tCalcite, 9), blockDust.mat(tAsh, 1)), blockDust.mat(MT.Concrete, 11));
            RM.Mixer.addRecipeX(T, 16, 144, ST.array(blockDust.mat(tRock, 1), dust.mat(tCalcite, 1), dust.mat(tAsh, 1)), dust.mat(MT.Concrete, 11));
            RM.Mixer.addRecipeX(T, 16, 16, ST.array(dust.mat(tRock, 9), dust.mat(tCalcite, 1), dust.mat(tAsh, 1)), dust.mat(MT.Concrete, 11));
        }
    for (OreDictMaterial tIron : ANY.Iron.mToThis) RM.Drying.addRecipe1(T, 16, 16, stick.mat(tIron, 1), FL.Concrete.make(L), FL.DistW.make(8), ST.make(BlocksGT.ConcreteReinforced, 1, DYE_INDEX_LightGray));
    RM.Drying.addRecipe1(T, 16, 16, ST.tag(0), FL.Concrete.make(L), FL.DistW.make(8), ST.make(BlocksGT.Concrete, 1, DYE_INDEX_LightGray));
    // Asphalt
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.Stone, MT.Concrete, MT.Talc, MT.STONES.Rhyolite, MT.STONES.Gneiss, MT.STONES.Shale, MT.Oilshale, MT.Dolomite, MT.STONES.Chert }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_Gray));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Diorite, MT.STONES.Marble, MT.Chalk, MT.CaCO3, MT.Endstone, MT.STONES.Livingrock, MT.STONES.Holystone }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_White));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Basalt, MT.STONES.Gabbro, MT.STONES.GraniteBlack, MT.STONES.Deepslate }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_Black));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Migmatite, MT.STONES.Eclogite, MT.STONES.SpaceRock, MT.STONES.Slate }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_Gray));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Andesite, MT.STONES.Dacite, MT.STONES.Deadrock, MT.STONES.Greywacke, MT.STONES.MoonRock, MT.STONES.MoonTurf }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_LightGray));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Blueschist }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_LightBlue));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Greenschist, MT.STONES.Betweenstone, MT.PrismarineLight }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_Lime));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Pitstone, MT.PrismarineDark }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_Lime));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Redrock, MT.STONES.MarsRock, MT.STONES.MarsSand, MT.Netherrack, MT.STONES.GraniteRed, MT.STONES.Granite }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_Red));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Komatiite }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_Yellow));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Limestone }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_Orange));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Quartzite, MT.STONES.Siltstone }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_Pink));
    for (OreDictMaterial tRock : new OreDictMaterial[] { MT.STONES.Umber, MT.STONES.Kimberlite }) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tRock), MT.Asphalt.liquid(U, T), NF, ST.make(BlocksGT.Asphalt, 1, DYE_INDEX_Brown));
    ItemStack x, y;
    CR.remove(x = dust.mat(MT.S, 1), x, x, x, ST.make(Items.coal, 1, 0), x, x, x, x);
    CR.remove(x, x, x, x, ST.make(Items.coal, 1, 1), x, x, x, x);
    CR.remove(y = dust.mat(MT.KNO3, 1), y, x, dust.mat(MT.Charcoal, 1));
    CR.remove(y, x, y, y, ST.make(Items.coal, 1, 1), y, y, y, y);
    CR.remove(y, y, y, y, ST.make(Items.coal, 1, 1), y, y, y, y);
    CR.remove(y, y, x, dust.mat(MT.Coal, 1));
    CR.remove(ST.make(Items.quartz, 1, 0), ST.make(Items.coal, 1, 0));
    CR.remove(ST.make(Items.quartz, 1, 0), ST.make(Items.coal, 1, 1));
    CR.remove(NI, x = ST.make(Items.coal, 1, 0), NI, x, y = ST.make(Items.iron_ingot, 1, 0), x, NI, x, NI);
    CR.remove(NI, NI, NI, NI, y, NI, NI, y, NI);
    CR.remove(NI, NI, NI, NI, y = ingot.mat(MT.Al, 1), NI, NI, y, NI);
    CR.remove(NI, NI, NI, NI, y = ingot.mat(MT.Steel, 1), NI, NI, y, NI);
    CR.remove(x, x, x, x, ingot.mat(MT.W, 1), x, x, x, x);
    CR.remove(x = dust.mat(MT.Cu, 1), x, x, y = dust.mat(MT.Sn, 1));
    CR.remove(x, y, x, y, x, y, x, y, x);
    CR.remove(x, x, x, dust.mat(MT.Zn, 1));
    CR.remove(x, y = dust.mat(MT.Ni, 1));
    CR.remove(x = dust.mat(MT.Fe, 1), x, y);
    CR.remove(dust.mat(MT.Cu, 1), dust.mat(MT.Sn, 1));
    CR.remove(dust.mat(MT.Cu, 1), dust.mat(MT.Zn, 1));
    CR.remove(dust.mat(MT.Cu, 1), dust.mat(MT.Redstone, 1));
    CR.remove(dust.mat(MT.Fe, 1), dust.mat(MT.Mn, 1));
    CR.remove(dust.mat(MT.Fe, 1), dust.mat(MT.Bronze, 1));
    CR.remove(dust.mat(MT.Au, 1), dust.mat(MT.Bronze, 1));
    CR.remove(dust.mat(MT.Au, 1), dust.mat(MT.Ag, 1));
    CR.remove(dust.mat(MT.Au, 1), dust.mat(MT.Fe, 1));
    CR.remove(dust.mat(MT.Infuscolium, 1), dust.mat(MT.DeepIron, 1));
    CR.remove(dust.mat(MT.ShadowIron, 1), dust.mat(MT.Lemurite, 1));
    CR.remove(dust.mat(MT.Alduorite, 1), dust.mat(MT.Ceruclase, 1));
    CR.remove(dust.mat(MT.Mithril, 1), dust.mat(MT.Rubracium, 1));
    CR.remove(dust.mat(MT.Pt, 1), dust.mat(MT.Orichalcum, 1));
    CR.remove(dust.mat(MT.Eximite, 1), dust.mat(MT.Meutoite, 1));
    CR.remove(dust.mat(MT.Adamantine, 1), dust.mat(MT.Atl, 1));
    CR.remove(dust.mat(MT.Prometheum, 1), dust.mat(MT.Kalendrite, 1));
    CR.remove(x = dust.mat(MT.Clay, 1), x, dust.mat(MT.PotassiumFeldspar, 1), dust.mat(MT.SiO2, 1));
    CR.remove(dust.mat(MT.Redstone, 1), dust.mat(MT.Nikolite, 1));
    // ----------------------------------------------------------------------------
    CR.shaped(stick.mat(MT.PetrifiedWood, 9), CR.DEF, "X", "X", 'X', rockGt.dat(MT.PetrifiedWood));
    CR.shaped(plate.mat(MT.PetrifiedWood, 9), CR.DEF, "XX", "XX", 'X', rockGt.dat(MT.PetrifiedWood));
    CR.shaped(ST.make(Blocks.stone_slab, 9, 2), CR.DEF, "XX", 'X', rockGt.dat(MT.PetrifiedWood));
    CR.shaped(plateTiny.mat(MT.Paper, 9), CR.DEF, "b ", " X", 'X', plate.dat(MT.Paper));
    CR.shaped(plateTiny.mat(MT.Paper, 9), CR.DEF, "q ", " X", 'X', plate.dat(MT.Paper));
    for (OreDictMaterial tWax : ANY.Wax.mToThis) {
        CR.shaped(ring.mat(tWax, 1), CR.DEF, "k", "X", 'X', plate.dat(tWax));
        CR.shaped(casingSmall.mat(tWax, 1), CR.DEF, "X", "k", 'X', plate.dat(tWax));
    }
    CR.shaped(ring.mat(MT.Rubber, 1), CR.DEF, "k", "X", 'X', plate.dat(MT.Rubber));
    CR.shaped(casingSmall.mat(MT.Rubber, 1), CR.DEF, "X", "k", 'X', plate.dat(MT.Rubber));
    CR.shaped(gearGt.mat(MT.Stone, 1), CR.DEF, "SPS", "PfP", "SPS", 'P', stoneSmooth, 'S', OD.buttonStone);
    CR.shaped(gearGt.mat(MT.Stone, 1), CR.DEF, "SPS", "PfP", "SPS", 'P', stoneSmooth, 'S', rockGt.dat(MT.Stone));
    CR.shaped(gearGt.mat(MT.Stone, 1), CR.DEF, "SPS", "PfP", "SPS", 'P', stoneSmooth, 'S', stick.dat(MT.Stone));
    CR.shaped(gearGtSmall.mat(MT.Stone, 1), CR.DEF, "P ", " f", 'P', stoneSmooth);
    for (OreDictMaterial tMat : OreDictMaterial.MATERIAL_MAP.values()) if (!tMat.containsAny(TD.Properties.INVALID_MATERIAL, TD.Compounds.COATED, TD.Properties.WOOD) && tMat.mTargetRegistration == tMat)
        CR.shaped(gearGtSmall.mat(tMat, 1), CR.ONLY_IF_HAS_RESULT | CR.DEF_NCC, "P ", tMat.contains(TD.Properties.STONE) ? " f" : " h", 'P', plate.dat(tMat));
    RM.Slicer.addRecipe2(T, 16, 16, ST.make(Items.paper, 1, W), IL.Shape_Slicer_Grid.get(0), plateTiny.mat(MT.Paper, 9));
    if (FL.Mana_TE.exists()) {
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.dirt, 1, 1), FL.Mana_TE.make(1), NF, ST.make(Blocks.dirt, 1, 2));
        if (IL.EtFu_Dirt.exists())
            RM.Bath.addRecipe1(T, 0, 16, IL.EtFu_Dirt.get(1), FL.Mana_TE.make(1), NF, ST.make(Blocks.dirt, 1, 2));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.dirt, 1, 0), FL.Mana_TE.make(1), NF, ST.make(Blocks.grass, 1, 0));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.dirt, 1, 2), FL.Mana_TE.make(1), NF, ST.make(Blocks.mycelium, 1, 0));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.glass, 1, W), FL.Mana_TE.make(1), NF, ST.make(Blocks.sand, 1, 0));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.stained_glass, 1, W), FL.Mana_TE.make(1), NF, ST.make(Blocks.sand, 1, 0));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.cobblestone, 1, W), FL.Mana_TE.make(1), NF, ST.make(Blocks.mossy_cobblestone, 1, 0));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.stonebrick, 1, 0), FL.Mana_TE.make(1), NF, ST.make(Blocks.stonebrick, 1, 1));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.stone, 1, 0), FL.Mana_TE.make(1), NF, ST.make(Blocks.stonebrick, 1, 3));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.lapis_ore, 1, W), FL.Mana_TE.make(5), NF, ST.make(Blocks.lapis_block, 1, 0));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.redstone_ore, 1, W), FL.Mana_TE.make(5), NF, ST.make(Blocks.redstone_block, 1, 0));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.lit_redstone_ore, 1, W), FL.Mana_TE.make(5), NF, ST.make(Blocks.redstone_block, 1, 0));
    }
    RM.Bath.addRecipe2(T, 0, 16, ST.make(Items.paper, 2, W), ST.tag(2), FL.Glue.make(125), NF, plateDouble.mat(MT.Paper, 1));
    RM.Bath.addRecipe2(T, 0, 32, ST.make(Items.paper, 3, W), ST.tag(3), FL.Glue.make(250), NF, plateTriple.mat(MT.Paper, 1));
    RM.Bath.addRecipe2(T, 0, 48, ST.make(Items.paper, 4, W), ST.tag(4), FL.Glue.make(375), NF, plateQuadruple.mat(MT.Paper, 1));
    RM.Bath.addRecipe2(T, 0, 64, ST.make(Items.paper, 5, W), ST.tag(5), FL.Glue.make(500), NF, plateQuintuple.mat(MT.Paper, 1));
    // RM.Bath             .addRecipe2(T,  0,  128, ST.make(Items.paper, 9, W), ST.tag(9), FL.Glue.make(1000), NF, plateDense.mat(MT.Paper, 1));
    MultiTileEntityRegistry tRegistry = MultiTileEntityRegistry.getRegistry("gt.multitileentity");
    for (byte i = 0; i < 16; i++) for (FluidStack tDye : DYE_FLUIDS[i]) {
        RM.Bath.addRecipe1(T, 0, 16, ST.make(BlocksGT.CFoam, 1, W), FL.mul(tDye, 1, 24, T), NF, ST.make(BlocksGT.CFoam, 1, i));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(BlocksGT.Asphalt, 1, W), FL.mul(tDye, 1, 24, T), NF, ST.make(BlocksGT.Asphalt, 1, i));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(BlocksGT.Concrete, 1, W), FL.mul(tDye, 1, 24, T), NF, ST.make(BlocksGT.Concrete, 1, i));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(BlocksGT.ConcreteReinforced, 1, W), FL.mul(tDye, 1, 24, T), NF, ST.make(BlocksGT.ConcreteReinforced, 1, i));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(((BlockMetaType) BlocksGT.CFoam).mSlabs[0], 1, W), FL.mul(tDye, 1, 48, T), NF, ST.make(((BlockMetaType) BlocksGT.CFoam).mSlabs[0], 1, i));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(((BlockMetaType) BlocksGT.Asphalt).mSlabs[0], 1, W), FL.mul(tDye, 1, 48, T), NF, ST.make(((BlockMetaType) BlocksGT.Asphalt).mSlabs[0], 1, i));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(((BlockMetaType) BlocksGT.Concrete).mSlabs[0], 1, W), FL.mul(tDye, 1, 48, T), NF, ST.make(((BlockMetaType) BlocksGT.Concrete).mSlabs[0], 1, i));
        RM.Bath.addRecipe1(T, 0, 16, ST.make(((BlockMetaType) BlocksGT.ConcreteReinforced).mSlabs[0], 1, W), FL.mul(tDye, 1, 48, T), NF, ST.make(((BlockMetaType) BlocksGT.ConcreteReinforced).mSlabs[0], 1, i));
        if (tRegistry != null)
            for (byte j = 0; j < 16; j++) {
                RM.Bath.addRecipe1(F, 0, 16, tRegistry.getItem(32452 + j), FL.mul(tDye, 1, 144, T), NF, tRegistry.getItem(32452 + i));
                RM.Bath.addRecipe1(F, 0, 16, tRegistry.getItem(32468 + j), FL.mul(tDye, 1, 144, T), NF, tRegistry.getItem(32468 + i));
                RM.Bath.addRecipe1(F, 0, 16, tRegistry.getItem(32484 + j), FL.mul(tDye, 1, 144, T), NF, tRegistry.getItem(32484 + i));
            }
    }
    for (FluidStack tDye : DYE_FLUIDS[DYE_INDEX_Green]) RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.grass, 1, W), FL.mul(tDye, 1, 24, T), NF, ST.make(BlocksGT.Grass, 1, 0));
    for (FluidStack tDye : DYE_FLUIDS[DYE_INDEX_Lime]) RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.grass, 1, W), FL.mul(tDye, 1, 24, T), NF, ST.make(BlocksGT.Grass, 1, 1));
    for (FluidStack tDye : DYE_FLUIDS[DYE_INDEX_Black]) RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.grass, 1, W), FL.mul(tDye, 1, 24, T), NF, ST.make(BlocksGT.Grass, 1, 2));
    for (FluidStack tDye : DYE_FLUIDS[DYE_INDEX_LightGray]) RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.grass, 1, W), FL.mul(tDye, 1, 24, T), NF, ST.make(BlocksGT.Grass, 1, 3));
    for (byte i = 0; i < 16; i++) {
        for (FluidStack tDye : DYE_FLUIDS[i]) if (tDye.getFluid() != DYE_FLUIDS_CHEMICAL[i].getFluid()) {
            RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.mul(tDye, 3, 2, T), MT.SunflowerOil.liquid(U50, T)), FL.mul(DYE_FLUIDS_CHEMICAL[i], 2), ZL_IS);
            RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.mul(tDye, 3, 2, T), MT.OliveOil.liquid(U50, T)), FL.mul(DYE_FLUIDS_CHEMICAL[i], 2), ZL_IS);
            RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.mul(tDye, 3, 2, T), MT.NutOil.liquid(U50, T)), FL.mul(DYE_FLUIDS_CHEMICAL[i], 2), ZL_IS);
            RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.mul(tDye, 3, 2, T), MT.SeedOil.liquid(U50, T)), FL.mul(DYE_FLUIDS_CHEMICAL[i], 2), ZL_IS);
            RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.mul(tDye, 3, 2, T), MT.LinOil.liquid(U50, T)), FL.mul(DYE_FLUIDS_CHEMICAL[i], 2), ZL_IS);
            RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.mul(tDye, 3, 2, T), MT.HempOil.liquid(U50, T)), FL.mul(DYE_FLUIDS_CHEMICAL[i], 2), ZL_IS);
        }
        RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[i], 1, 9, T), FL.CFoam.make(100)), DYED_C_FOAMS[i], ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Pd, U4), DYED_C_FOAMS[i], DYED_C_FOAMS_OWNED[i], ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 64, OM.dust(MT.Pd), FL.mul(DYED_C_FOAMS[i], 4), FL.mul(DYED_C_FOAMS_OWNED[i], 4), ZL_IS);
        // TODO: Foamer
        for (String tFluid : FluidsGT.AIR) if (FL.exists(tFluid))
            RM.Injector.addRecipe0(T, 16, 16, FL.array(DYED_C_FOAMS[i], FL.make(tFluid, 1000)), ZL_FS, ST.make(BlocksGT.CFoamFresh, 1, i));
        RM.Drying.addRecipe1(T, 16, 16, ST.make(BlocksGT.CFoamFresh, 1, i), ST.make(BlocksGT.CFoam, 1, i));
    }
    for (OreDictMaterial tClay : ANY.Clay.mToThis) {
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Redstone), OM.dust(MT.Basalz, U9), OM.dust(tClay), OM.dust(MT.Obsidian)), OM.dust(MT.Petrotheum, 2 * U));
    }
    for (OreDictMaterial tMat : ANY.SiO2.mToThis) {
        RM.Mixer.addRecipeX(T, 16, 64, ST.array(IL.Clay_Ball_White.get(2), OM.dust(tMat), OM.dust(MT.PotassiumFeldspar)), OM.dust(MT.Porcelain, U * 4));
        RM.Mixer.addRecipeX(T, 16, 64, ST.array(OM.dust(MT.Kaolinite, U * 2), OM.dust(tMat), OM.dust(MT.PotassiumFeldspar)), OM.dust(MT.Porcelain, U * 4));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Kaolinite, U2), OM.dust(tMat, U4), OM.dust(MT.PotassiumFeldspar, U4)), OM.dust(MT.Porcelain));
    }
    for (OreDictMaterial tGlowstone : ANY.Glowstone.mToThis) {
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Stone), OM.dust(MT.Netherrack), OM.dust(MT.Redstone), OM.dust(tGlowstone)), OM.dust(MT.ArcaneCompound, U2));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Stone, U4), OM.dust(MT.Netherrack, U4), OM.dust(MT.Redstone, U4), OM.dust(tGlowstone, U4)), OM.dust(MT.ArcaneCompound, U8));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Stone, U9), OM.dust(MT.Netherrack, U9), OM.dust(MT.Redstone, U9), OM.dust(tGlowstone, U9)), OM.dust(MT.ArcaneCompound, U18));
    }
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Ag), OM.dust(MT.I)), OM.dust(MT.AgI, 2 * U));
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Ag, U4), OM.dust(MT.I, U4)), OM.dust(MT.AgI, 2 * U4));
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Ag, U9), OM.dust(MT.I, U9)), OM.dust(MT.AgI, 2 * U9));
    for (OreDictMaterial tMat : ANY.Quartz.mToThis) {
        ItemStack tDust = dust.mat(tMat, 1), tGem = gem.mat(tMat, 1);
        if (ST.valid(tDust)) {
            RM.Mixer.addRecipe2(T, 16, 16, OM.dust(MT.C, U * 2), tDust, OM.dust(MT.BlackQuartz));
            RM.Mixer.addRecipe2(T, 16, 16, OM.dust(MT.Coal), tDust, OM.dust(MT.BlackQuartz));
            RM.Mixer.addRecipe2(T, 16, 16, OM.dust(MT.Charcoal), tDust, OM.dust(MT.BlackQuartz));
        }
        if (ST.valid(tGem)) {
            RM.Mixer.addRecipe2(T, 16, 16, OM.dust(MT.C, U * 2), tGem, OM.dust(MT.BlackQuartz));
            RM.Mixer.addRecipe2(T, 16, 16, OM.dust(MT.Coal), tGem, OM.dust(MT.BlackQuartz));
            RM.Mixer.addRecipe2(T, 16, 16, OM.dust(MT.Charcoal), tGem, OM.dust(MT.BlackQuartz));
        }
    }
    for (OreDictMaterial tNiter : new OreDictMaterial[] { MT.NaNO3, MT.KNO3, MT.Niter }) {
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.C, 2 * U), OM.dust(tNiter), OM.dust(MT.Blaze, U9)), OM.dust(MT.Gunpowder, 4 * U));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Charcoal, 2 * U), OM.dust(tNiter), OM.dust(MT.Blaze, U9)), OM.dust(MT.Gunpowder, 4 * U));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Coal), OM.dust(tNiter), OM.dust(MT.Blaze, U9)), OM.dust(MT.Gunpowder, 4 * U));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.CoalCoke), OM.dust(tNiter), OM.dust(MT.Blaze, U9)), OM.dust(MT.Gunpowder, 4 * U));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.C, 2 * U), OM.dust(tNiter), OM.dust(MT.S)), OM.dust(MT.Gunpowder, 4 * U));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Charcoal, 2 * U), OM.dust(tNiter), OM.dust(MT.S)), OM.dust(MT.Gunpowder, 4 * U));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Coal), OM.dust(tNiter), OM.dust(MT.S)), OM.dust(MT.Gunpowder, 4 * U));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.CoalCoke), OM.dust(tNiter), OM.dust(MT.S)), OM.dust(MT.Gunpowder, 4 * U));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.C, 2 * U4), OM.dust(tNiter, U4), OM.dust(MT.S, U4)), OM.dust(MT.Gunpowder, 4 * U4));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Charcoal, 2 * U4), OM.dust(tNiter, U4), OM.dust(MT.S, U4)), OM.dust(MT.Gunpowder, 4 * U4));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Coal, U4), OM.dust(tNiter, U4), OM.dust(MT.S, U4)), OM.dust(MT.Gunpowder, 4 * U4));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.CoalCoke, U4), OM.dust(tNiter, U4), OM.dust(MT.S, U4)), OM.dust(MT.Gunpowder, 4 * U4));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.C, 2 * U9), OM.dust(tNiter, U9), OM.dust(MT.S, U9)), OM.dust(MT.Gunpowder, 4 * U9));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Charcoal, 2 * U9), OM.dust(tNiter, U9), OM.dust(MT.S, U9)), OM.dust(MT.Gunpowder, 4 * U9));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Coal, U9), OM.dust(tNiter, U9), OM.dust(MT.S, U9)), OM.dust(MT.Gunpowder, 4 * U9));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.CoalCoke, U9), OM.dust(tNiter, U9), OM.dust(MT.S, U9)), OM.dust(MT.Gunpowder, 4 * U9));
        for (OreDictMaterial tMat : ANY.SiO2.mToThis) RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Redstone), OM.dust(tNiter), OM.dust(MT.Blitz, U9), OM.dust(tMat)), OM.dust(MT.Aerotheum, 2 * U));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Redstone), OM.dust(tNiter), OM.dust(MT.Blizz, U9), ST.make(Items.snowball, 1, W)), OM.dust(MT.Cryotheum, 2 * U));
        RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Redstone), OM.dust(tNiter), OM.dust(MT.Blizz, U9), OM.dust(MT.Snow, U4)), OM.dust(MT.Cryotheum, 2 * U));
        RM.Mixer.addRecipeX(T, 16, 64, ST.array(OM.dust(MT.Redstone, 4 * U), OM.dust(tNiter, 4 * U), OM.dust(MT.Blizz, 4 * U9), ST.make(Blocks.snow, 1, W)), OM.dust(MT.Cryotheum, 8 * U));
        RM.Mixer.addRecipeX(T, 16, 64, ST.array(OM.dust(MT.Redstone, 4 * U), OM.dust(tNiter, 4 * U), OM.dust(MT.Blizz, 4 * U9), OM.dust(MT.Snow)), OM.dust(MT.Cryotheum, 8 * U));
    }
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Redstone), OM.dust(MT.Coal), OM.dust(MT.S)), FL.Blaze.make(L), NF, OM.dust(MT.Pyrotheum, 2 * U));
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Redstone), OM.dust(MT.Blaze, U9), OM.dust(MT.Coal), OM.dust(MT.S)), OM.dust(MT.Pyrotheum, 2 * U));
    if (FL.Mana_TE.exists())
        RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Pyrotheum.make(1), FL.Cryotheum.make(1), FL.Petrotheum.make(1), FL.Aerotheum.make(1)), FL.array(FL.Mana_TE.make(4)), ZL_IS);
    RM.Mixer.addRecipeX(T, 16, 32, ST.array(OM.dust(MT.Fe), OM.dust(MT.LiveRoot), OM.dust(MT.Au, U9)), OM.dust(MT.IronWood, U * 2));
    RM.Mixer.addRecipe2(T, 16, 32, OM.dust(MT.GildedIron), OM.dust(MT.LiveRoot), OM.dust(MT.IronWood, U * 2));
    // Dyes
    for (FluidStack[] tDyes : new FluidStack[][] { DYE_FLUIDS_WATER, DYE_FLUIDS_FLOWER, DYE_FLUIDS_CHEMICAL }) {
        RM.Mixer.addRecipe0(T, 16, 64, FL.array(tDyes[DYE_INDEX_Red], tDyes[DYE_INDEX_Blue]), FL.mul(tDyes[DYE_INDEX_Purple], 2), ZL_IS);
        RM.Mixer.addRecipe0(T, 16, 64, FL.array(tDyes[DYE_INDEX_Green], tDyes[DYE_INDEX_Blue]), FL.mul(tDyes[DYE_INDEX_Cyan], 2), ZL_IS);
        RM.Mixer.addRecipe0(T, 16, 64, FL.array(tDyes[DYE_INDEX_Red], tDyes[DYE_INDEX_White]), FL.mul(tDyes[DYE_INDEX_Pink], 2), ZL_IS);
        RM.Mixer.addRecipe0(T, 16, 64, FL.array(tDyes[DYE_INDEX_Green], tDyes[DYE_INDEX_White]), FL.mul(tDyes[DYE_INDEX_Lime], 2), ZL_IS);
        RM.Mixer.addRecipe0(T, 16, 64, FL.array(tDyes[DYE_INDEX_Blue], tDyes[DYE_INDEX_White]), FL.mul(tDyes[DYE_INDEX_LightBlue], 2), ZL_IS);
        RM.Mixer.addRecipe0(T, 16, 64, FL.array(tDyes[DYE_INDEX_Purple], tDyes[DYE_INDEX_Pink]), FL.mul(tDyes[DYE_INDEX_Magenta], 2), ZL_IS);
        RM.Mixer.addRecipe0(T, 16, 64, FL.array(tDyes[DYE_INDEX_Red], tDyes[DYE_INDEX_Yellow]), FL.mul(tDyes[DYE_INDEX_Orange], 2), ZL_IS);
        RM.Mixer.addRecipe0(T, 16, 64, FL.array(tDyes[DYE_INDEX_Black], tDyes[DYE_INDEX_White]), FL.mul(tDyes[DYE_INDEX_Gray], 2), ZL_IS);
        RM.Mixer.addRecipe0(T, 16, 64, FL.array(tDyes[DYE_INDEX_Gray], tDyes[DYE_INDEX_White]), FL.mul(tDyes[DYE_INDEX_LightGray], 2), ZL_IS);
    }
    // Glass
    for (int i = 0; i < 16; i++) {
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Na2SO4), FL.array(MT.Glass.liquid(U * 9 * 4, T), FL.mul(DYE_FLUIDS_CHEMICAL[i], 1, 1, T)), ZL_FS, ST.make(BlocksGT.Glass, 4, i));
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Na2SO4, U4), FL.array(MT.Glass.liquid(U * 9, T), FL.mul(DYE_FLUIDS_CHEMICAL[i], 1, 4, T)), ZL_FS, ST.make(BlocksGT.Glass, 1, i));
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.K2SO4), FL.array(MT.Glass.liquid(U * 9 * 4, T), FL.mul(DYE_FLUIDS_CHEMICAL[i], 1, 1, T)), ZL_FS, ST.make(BlocksGT.Glass, 4, i));
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.K2SO4, U4), FL.array(MT.Glass.liquid(U * 9, T), FL.mul(DYE_FLUIDS_CHEMICAL[i], 1, 4, T)), ZL_FS, ST.make(BlocksGT.Glass, 1, i));
        for (OreDictMaterial tMat : ANY.Glowstone.mToThis) {
            RM.Injector.addRecipe2(T, 16, 32, dust.mat(tMat, 1), ST.make(BlocksGT.Glass, 1, i), ST.make(BlocksGT.GlowGlass, 1, i));
            RM.Injector.addRecipe2(T, 16, 32, dustSmall.mat(tMat, 4), ST.make(BlocksGT.Glass, 1, i), ST.make(BlocksGT.GlowGlass, 1, i));
            RM.Injector.addRecipe2(T, 16, 32, dust.mat(tMat, 1), ST.make(((BlockMetaType) BlocksGT.Glass).mSlabs[0], 2, i), ST.make(((BlockMetaType) BlocksGT.GlowGlass).mSlabs[0], 2, i));
            RM.Injector.addRecipe2(T, 16, 16, dustSmall.mat(tMat, 2), ST.make(((BlockMetaType) BlocksGT.Glass).mSlabs[0], 1, i), ST.make(((BlockMetaType) BlocksGT.GlowGlass).mSlabs[0], 1, i));
        }
    }
    // Lubricant
    for (OreDictMaterial tMat : new OreDictMaterial[] { MT.Talc, MT.Redstone }) {
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Frying.make(1000), FL.lube(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Sunflower.make(1000), FL.lube(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Olive.make(1000), FL.lube(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Nut.make(1000), FL.lube(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Lin.make(1000), FL.lube(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Hemp.make(1000), FL.lube(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Fish.make(1000), FL.lube(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Whale.make(1000), FL.lube(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Seed.make(1000), FL.lube(1000), ZL_IS);
        if (FL.Oil_Plant.exists())
            RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Plant.make(1000), FL.lube(1000), ZL_IS);
        if (FL.Oil_Canola.exists())
            RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Canola.make(1000), FL.lube(2000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Creosote.make(1000), FL.lube(2000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Soulsand.make(1000), FL.lube(3000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Light.make(1000), FL.lube(3000), ZL_IS);
        if (FL.Oil_Light2.exists())
            RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Light2.make(1000), FL.lube(3000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Normal.make(1000), FL.lube(4000), ZL_IS);
        if (FL.Oil_HotCrude.exists())
            RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_HotCrude.make(1000), FL.lube(4000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Medium.make(1000), FL.lube(4000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Heavy.make(1000), FL.lube(5000), ZL_IS);
        if (FL.Oil_Heavy2.exists())
            RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_Heavy2.make(1000), FL.lube(5000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.Oil_ExtraHeavy.make(1000), FL.lube(6000), ZL_IS);
    }
    // Other
    RM.Lightning.addRecipe2(T, 16, 2048, ST.tag(1), gem.mat(MT.CertusQuartz, 1), gem.mat(MT.ChargedCertusQuartz, 1));
    for (OreDictMaterial tMat : ANY.SiO2.mToThis) {
        RM.Press.addRecipeX(T, 16, 16, ST.array(dust.mat(tMat, 2), dust.mat(MT.Gunpowder, 2), ST.make(Items.string, 1, W)), IL.Boomstick.get(1));
        RM.Press.addRecipeX(T, 16, 16, ST.array(dust.mat(tMat, 2), dust.mat(MT.Gunpowder, 2), ST.make((Item) plantGtFiber.mRegisteredPrefixItems.get(0), 1, W)), IL.Boomstick.get(1));
        RM.Press.addRecipeX(T, 16, 144, ST.array(blockDust.mat(tMat, 2), blockDust.mat(MT.Gunpowder, 2), ST.make(Items.string, 9, W)), IL.Boomstick.get(9));
        RM.Press.addRecipeX(T, 16, 144, ST.array(blockDust.mat(tMat, 2), blockDust.mat(MT.Gunpowder, 2), ST.make((Item) plantGtFiber.mRegisteredPrefixItems.get(0), 9, W)), IL.Boomstick.get(9));
    }
    RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Dynamite, 1), ST.make(Items.string, 1, W)), IL.Dynamite.get(1));
    RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Dynamite, 1), ST.make((Item) plantGtFiber.mRegisteredPrefixItems.get(0), 1, W)), IL.Dynamite.get(1));
    RM.Press.addRecipeX(T, 16, 144, ST.array(ST.tag(1), blockDust.mat(MT.Dynamite, 1), ST.make(Items.string, 9, W)), IL.Dynamite.get(9));
    RM.Press.addRecipeX(T, 16, 144, ST.array(ST.tag(1), blockDust.mat(MT.Dynamite, 1), ST.make((Item) plantGtFiber.mRegisteredPrefixItems.get(0), 9, W)), IL.Dynamite.get(9));
    RM.Press.addRecipeX(T, 16, 64, ST.array(ST.tag(2), dust.mat(MT.Dynamite, 2), ST.make(Items.string, 1, W)), IL.Dynamite_Strong.get(1));
    RM.Press.addRecipeX(T, 16, 64, ST.array(ST.tag(2), dust.mat(MT.Dynamite, 2), ST.make((Item) plantGtFiber.mRegisteredPrefixItems.get(0), 1, W)), IL.Dynamite_Strong.get(1));
    RM.Press.addRecipeX(T, 16, 576, ST.array(ST.tag(2), blockDust.mat(MT.Dynamite, 2), ST.make(Items.string, 9, W)), IL.Dynamite_Strong.get(9));
    RM.Press.addRecipeX(T, 16, 576, ST.array(ST.tag(2), blockDust.mat(MT.Dynamite, 2), ST.make((Item) plantGtFiber.mRegisteredPrefixItems.get(0), 9, W)), IL.Dynamite_Strong.get(9));
    RM.Press.addRecipeX(T, 16, 16, ST.array(IL.Shape_Press_Bullet_Casing_Small.get(0), dustDiv72.mat(MT.Gunpowder, 8), plateTiny.mat(MT.Brass, 1)), bulletGtSmall.mat(MT.Empty, 1));
    RM.Press.addRecipeX(T, 16, 32, ST.array(IL.Shape_Press_Bullet_Casing_Medium.get(0), dustDiv72.mat(MT.Gunpowder, 16), plateTiny.mat(MT.Brass, 2)), bulletGtMedium.mat(MT.Empty, 1));
    RM.Press.addRecipeX(T, 16, 64, ST.array(IL.Shape_Press_Bullet_Casing_Large.get(0), dustDiv72.mat(MT.Gunpowder, 24), plateTiny.mat(MT.Brass, 3)), bulletGtLarge.mat(MT.Empty, 1));
    RM.Press.addRecipeX(T, 16, 16, ST.array(IL.Shape_Press_Bullet_Casing_Small.get(0), dustTiny.mat(MT.Gunpowder, 1), plateTiny.mat(MT.Brass, 1)), bulletGtSmall.mat(MT.Empty, 1));
    RM.Press.addRecipeX(T, 16, 32, ST.array(IL.Shape_Press_Bullet_Casing_Medium.get(0), dustTiny.mat(MT.Gunpowder, 2), plateTiny.mat(MT.Brass, 2)), bulletGtMedium.mat(MT.Empty, 1));
    RM.Press.addRecipeX(T, 16, 64, ST.array(IL.Shape_Press_Bullet_Casing_Large.get(0), dustTiny.mat(MT.Gunpowder, 3), plateTiny.mat(MT.Brass, 3)), bulletGtLarge.mat(MT.Empty, 1));
    RM.Press.addRecipeX(T, 16, 144, ST.array(IL.Shape_Press_Bullet_Casing_Small.get(0), dustSmall.mat(MT.Gunpowder, 4), plateTiny.mat(MT.Brass, 9)), bulletGtSmall.mat(MT.Empty, 9));
    RM.Press.addRecipeX(T, 16, 288, ST.array(IL.Shape_Press_Bullet_Casing_Medium.get(0), dustSmall.mat(MT.Gunpowder, 8), plateTiny.mat(MT.Brass, 18)), bulletGtMedium.mat(MT.Empty, 9));
    RM.Press.addRecipeX(T, 16, 192, ST.array(IL.Shape_Press_Bullet_Casing_Large.get(0), dustSmall.mat(MT.Gunpowder, 4), plateTiny.mat(MT.Brass, 9)), bulletGtLarge.mat(MT.Empty, 3));
    RM.Press.addRecipeX(T, 16, 144, ST.array(IL.Shape_Press_Bullet_Casing_Small.get(0), dust.mat(MT.Gunpowder, 1), plateTiny.mat(MT.Brass, 9)), bulletGtSmall.mat(MT.Empty, 9));
    RM.Press.addRecipeX(T, 16, 288, ST.array(IL.Shape_Press_Bullet_Casing_Medium.get(0), dust.mat(MT.Gunpowder, 2), plateTiny.mat(MT.Brass, 18)), bulletGtMedium.mat(MT.Empty, 9));
    RM.Press.addRecipeX(T, 16, 192, ST.array(IL.Shape_Press_Bullet_Casing_Large.get(0), dust.mat(MT.Gunpowder, 1), plateTiny.mat(MT.Brass, 9)), bulletGtLarge.mat(MT.Empty, 3));
    for (byte i = 0; i < 16; i++) {
        RM.Drying.addRecipe0(T, 16, 40, FL.mul(DYE_FLUIDS_WATER[i], 1, 6, T), FL.DistW.make(20), dustTiny.mat(MT.DATA.Dye_Materials[i], 1));
        RM.Drying.addRecipe0(T, 16, 20, FL.mul(DYE_FLUIDS_FLOWER[i], 1, 6, T), FL.DistW.make(10), dustTiny.mat(MT.DATA.Dye_Materials[i], 1));
    }
    RM.Centrifuge.addRecipe0(T, 64, 16, MT.FishOil.liquid(U8, T), MT.Hg.liquid(1, T), ZL_IS);
    RM.Centrifuge.addRecipe0(T, 64, 16, MT.WhaleOil.liquid(U8, T), MT.Hg.liquid(1, T), ZL_IS);
    RM.Coagulator.addRecipe0(T, 0, 256, FL.Latex.make(L / 9), NF, nugget.mat(MT.Rubber, 1));
    for (FluidStack tFluid : FL.array(MT.He.gas(U, T), MT.Ne.gas(U, T), MT.Ar.gas(U, T), MT.Kr.gas(U, T), MT.Xe.gas(U, T), MT.Rn.gas(U, T))) if (tFluid != null) {
        RM.CrystallisationCrucible.addRecipe1(T, 16, 72000, OM.dust(MT.Si, U9), FL.array(tFluid, MT.Si.liquid(35 * U9, T)), NF, bouleGt.mat(MT.Si, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 16, 72000, OM.dust(MT.Ge, U9), FL.array(tFluid, MT.Ge.liquid(35 * U9, T)), NF, bouleGt.mat(MT.Ge, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 16, 72000, OM.dust(MT.RedstoneAlloy, U9), FL.array(tFluid, MT.RedstoneAlloy.liquid(35 * U9, T)), NF, bouleGt.mat(MT.RedstoneAlloy, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 16, 72000, OM.dust(MT.NikolineAlloy, U9), FL.array(tFluid, MT.NikolineAlloy.liquid(35 * U9, T)), NF, bouleGt.mat(MT.NikolineAlloy, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 16, 648000, OM.dust(MT.Si), FL.array(FL.mul(tFluid, 9), MT.Si.liquid(35 * U, T)), NF, bouleGt.mat(MT.Si, 9));
        RM.CrystallisationCrucible.addRecipe1(T, 16, 648000, OM.dust(MT.Ge), FL.array(FL.mul(tFluid, 9), MT.Ge.liquid(35 * U, T)), NF, bouleGt.mat(MT.Ge, 9));
        RM.CrystallisationCrucible.addRecipe1(T, 16, 648000, OM.dust(MT.RedstoneAlloy), FL.array(FL.mul(tFluid, 9), MT.RedstoneAlloy.liquid(35 * U, T)), NF, bouleGt.mat(MT.RedstoneAlloy, 9));
        RM.CrystallisationCrucible.addRecipe1(T, 16, 648000, OM.dust(MT.NikolineAlloy), FL.array(FL.mul(tFluid, 9), MT.NikolineAlloy.liquid(35 * U, T)), NF, bouleGt.mat(MT.NikolineAlloy, 9));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 18000, OM.dust(MT.Al2O3, U9), FL.array(tFluid, MT.Al2O3.liquid(29 * U9, T)), NF, bouleGt.mat(MT.Sapphire, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 156000, OM.dust(MT.Al2O3), FL.array(FL.mul(tFluid, 9), MT.Al2O3.liquid(29 * U, T)), NF, bouleGt.mat(MT.Sapphire, 9));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 18000, OM.dust(MT.Mg, 2 * U3), FL.array(tFluid, MT.Al2O3.liquid(10 * U3, T)), NF, bouleGt.mat(MT.GreenSapphire, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 18000, OM.dust(MT.Ti, 2 * U3), FL.array(tFluid, MT.Al2O3.liquid(10 * U3, T)), NF, bouleGt.mat(MT.YellowSapphire, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 18000, OM.dust(MT.Cu, 2 * U3), FL.array(tFluid, MT.Al2O3.liquid(10 * U3, T)), NF, bouleGt.mat(MT.OrangeSapphire, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 18000, OM.dust(MT.Fe, 2 * U3), FL.array(tFluid, MT.Al2O3.liquid(10 * U3, T)), NF, bouleGt.mat(MT.BlueSapphire, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 18000, OM.dust(MT.V, 2 * U3), FL.array(tFluid, MT.Al2O3.liquid(10 * U3, T)), NF, bouleGt.mat(MT.PurpleSapphire, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 18000, OM.dust(MT.Cr, 2 * U3), FL.array(tFluid, MT.Al2O3.liquid(10 * U3, T)), NF, bouleGt.mat(MT.Ruby, 1));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 52000, OM.dust(MT.Mg, 2 * U), FL.array(FL.mul(tFluid, 3), MT.Al2O3.liquid(10 * U, T)), NF, bouleGt.mat(MT.GreenSapphire, 3));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 52000, OM.dust(MT.Ti, 2 * U), FL.array(FL.mul(tFluid, 3), MT.Al2O3.liquid(10 * U, T)), NF, bouleGt.mat(MT.YellowSapphire, 3));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 52000, OM.dust(MT.Cu, 2 * U), FL.array(FL.mul(tFluid, 3), MT.Al2O3.liquid(10 * U, T)), NF, bouleGt.mat(MT.OrangeSapphire, 3));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 52000, OM.dust(MT.Fe, 2 * U), FL.array(FL.mul(tFluid, 3), MT.Al2O3.liquid(10 * U, T)), NF, bouleGt.mat(MT.BlueSapphire, 3));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 52000, OM.dust(MT.V, 2 * U), FL.array(FL.mul(tFluid, 3), MT.Al2O3.liquid(10 * U, T)), NF, bouleGt.mat(MT.PurpleSapphire, 3));
        RM.CrystallisationCrucible.addRecipe1(T, 256, 52000, OM.dust(MT.Cr, 2 * U), FL.array(FL.mul(tFluid, 3), MT.Al2O3.liquid(10 * U, T)), NF, bouleGt.mat(MT.Ruby, 3));
    }
    for (ItemStack tTNT : ST.array(ST.make(Blocks.tnt, 8, W), IL.IC2_ITNT.get(4), IL.Boomstick.get(12), IL.Dynamite.get(2), IL.Dynamite_Strong.get(1))) if (ST.valid(tTNT)) {
        for (OreDictMaterial tMat : ANY.Diamond.mToThis) {
            OreDictMaterial tOutput = MT.DiamondIndustrial;
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(0)), plateGem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(1)), gem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 2), ST.mul(4, tTNT), ST.tag(2)), gemFlawless.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 4), ST.mul(8, tTNT), ST.tag(3)), gemExquisite.mat(tOutput, 1));
        }
        for (OreDictMaterial tMat : ANY.Sapphire.mToThis) {
            OreDictMaterial tOutput = MT.Sapphire;
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(0)), plateGem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(1)), gem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 2), ST.mul(4, tTNT), ST.tag(2)), gemFlawless.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 4), ST.mul(8, tTNT), ST.tag(3)), gemExquisite.mat(tOutput, 1));
        }
        for (OreDictMaterial tMat : ANY.Emerald.mToThis) {
            OreDictMaterial tOutput = MT.Emerald;
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(0)), plateGem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(1)), gem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 2), ST.mul(4, tTNT), ST.tag(2)), gemFlawless.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 4), ST.mul(8, tTNT), ST.tag(3)), gemExquisite.mat(tOutput, 1));
        }
        for (OreDictMaterial tMat : ANY.Amethyst.mToThis) {
            OreDictMaterial tOutput = tMat;
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(0)), plateGem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(1)), gem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 2), ST.mul(4, tTNT), ST.tag(2)), gemFlawless.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 4), ST.mul(8, tTNT), ST.tag(3)), gemExquisite.mat(tOutput, 1));
        }
        for (OreDictMaterial tMat : ANY.Garnet.mToThis) {
            OreDictMaterial tOutput = tMat;
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(0)), plateGem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(1)), gem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 2), ST.mul(4, tTNT), ST.tag(2)), gemFlawless.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 4), ST.mul(8, tTNT), ST.tag(3)), gemExquisite.mat(tOutput, 1));
        }
        for (OreDictMaterial tMat : ANY.Jasper.mToThis) {
            OreDictMaterial tOutput = tMat;
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(0)), plateGem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(1)), gem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 2), ST.mul(4, tTNT), ST.tag(2)), gemFlawless.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 4), ST.mul(8, tTNT), ST.tag(3)), gemExquisite.mat(tOutput, 1));
        }
        for (OreDictMaterial tMat : ANY.TigerEye.mToThis) {
            OreDictMaterial tOutput = tMat;
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(0)), plateGem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(1)), gem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 2), ST.mul(4, tTNT), ST.tag(2)), gemFlawless.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 4), ST.mul(8, tTNT), ST.tag(3)), gemExquisite.mat(tOutput, 1));
        }
        for (OreDictMaterial tMat : ANY.Aventurine.mToThis) {
            OreDictMaterial tOutput = tMat;
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(0)), plateGem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(1)), gem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 2), ST.mul(4, tTNT), ST.tag(2)), gemFlawless.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 4), ST.mul(8, tTNT), ST.tag(3)), gemExquisite.mat(tOutput, 1));
        }
        for (OreDictMaterial tMat : new OreDictMaterial[] { MT.Spinel, MT.BalasRuby, MT.Topaz, MT.BlueTopaz, MT.Tanzanite, MT.Amazonite, MT.Alexandrite, MT.Opal, MT.OnyxRed, MT.OnyxBlack, MT.Olivine, MT.Dioptase, MT.Craponite }) {
            OreDictMaterial tOutput = tMat;
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(0)), plateGem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 1), tTNT, ST.tag(1)), gem.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 2), ST.mul(4, tTNT), ST.tag(2)), gemFlawless.mat(tOutput, 1));
            RM.ImplosionCompressor.addRecipeX(T, 0, 256, ST.array(dust.mat(tMat, 4), ST.mul(8, tTNT), ST.tag(3)), gemExquisite.mat(tOutput, 1));
        }
    }
    for (int i = 0; i < 16; i++) RM.Loom.addRecipe2(T, 16, 16, ST.tag(10), plantGtFiber.mat(MT.DATA.Dye_Materials[15 - i], 4), IL.Rope.get(1));
    RM.Loom.addRecipe2(T, 16, 16, ST.tag(10), plantGtFiber.mat(MT.Cu, 4), IL.Rope.get(1));
    RM.Loom.addRecipe2(T, 16, 16, ST.tag(10), ST.make(Items.string, 4, W), IL.Rope_Silk.get(1));
    RM.Loom.addRecipe2(T, 16, 16, ST.tag(10), wireFine.mat(MT.Plastic, 4), IL.Rope_Plastic.get(1));
    RM.CokeOven.addRecipe1(T, 0, 3600, gem.mat(MT.Coal, 1), NF, MT.Creosote.liquid(U2, F), gem.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, nugget.mat(MT.Coal, 9), NF, MT.Creosote.liquid(U2, F), ingot.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, chunkGt.mat(MT.Coal, 4), NF, MT.Creosote.liquid(U2, F), ingot.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 7200, billet.mat(MT.Coal, 3), NF, MT.Creosote.liquid(U, F), ingot.mat(MT.CoalCoke, 2));
    RM.CokeOven.addRecipe1(T, 0, 3600, ingot.mat(MT.Coal, 1), NF, MT.Creosote.liquid(U2, F), ingot.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 7200, oreRaw.mat(MT.Coal, 1), NF, MT.Creosote.liquid(U, F), ingot.mat(MT.CoalCoke, 2));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushed.mat(MT.Coal, 1), NF, MT.Creosote.liquid(U2, F), ingot.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedTiny.mat(MT.Coal, 9), NF, MT.Creosote.liquid(U2, F), ingot.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedPurified.mat(MT.Coal, 1), NF, MT.Creosote.liquid(U2, F), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedPurifiedTiny.mat(MT.Coal, 9), NF, MT.Creosote.liquid(U2, F), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedCentrifuged.mat(MT.Coal, 1), NF, MT.Creosote.liquid(U2, F), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedCentrifugedTiny.mat(MT.Coal, 9), NF, MT.Creosote.liquid(U2, F), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1), chunkGt.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 32400, blockRaw.mat(MT.Coal, 1), NF, MT.Creosote.liquid(9 * U, F), blockIngot.mat(MT.CoalCoke, 2));
    RM.CokeOven.addRecipe1(T, 0, 32400, blockIngot.mat(MT.Coal, 1), NF, MT.Creosote.liquid(9 * U2, F), blockIngot.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 32400, blockGem.mat(MT.Coal, 1), NF, MT.Creosote.liquid(9 * U2, F), blockGem.mat(MT.CoalCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, gem.mat(MT.Lignite, 1), NF, MT.Creosote.liquid(3 * U4, F), gem.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, nugget.mat(MT.Lignite, 9), NF, MT.Creosote.liquid(3 * U4, F), ingot.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, chunkGt.mat(MT.Lignite, 4), NF, MT.Creosote.liquid(3 * U4, F), ingot.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 7200, billet.mat(MT.Lignite, 3), NF, MT.Creosote.liquid(3 * U2, F), ingot.mat(MT.LigniteCoke, 2));
    RM.CokeOven.addRecipe1(T, 0, 3600, ingot.mat(MT.Lignite, 1), NF, MT.Creosote.liquid(3 * U4, F), ingot.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 7200, oreRaw.mat(MT.Lignite, 1), NF, MT.Creosote.liquid(3 * U2, F), ingot.mat(MT.LigniteCoke, 2));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushed.mat(MT.Lignite, 1), NF, MT.Creosote.liquid(3 * U4, F), ingot.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedTiny.mat(MT.Lignite, 9), NF, MT.Creosote.liquid(3 * U4, F), ingot.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedPurified.mat(MT.Lignite, 1), NF, MT.Creosote.liquid(3 * U4, F), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedPurifiedTiny.mat(MT.Lignite, 9), NF, MT.Creosote.liquid(3 * U4, F), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedCentrifuged.mat(MT.Lignite, 1), NF, MT.Creosote.liquid(3 * U4, F), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedCentrifugedTiny.mat(MT.Lignite, 9), NF, MT.Creosote.liquid(3 * U4, F), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1), chunkGt.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 32400, blockRaw.mat(MT.Lignite, 1), NF, MT.Creosote.liquid(27 * U2, F), blockIngot.mat(MT.LigniteCoke, 2));
    RM.CokeOven.addRecipe1(T, 0, 32400, blockIngot.mat(MT.Lignite, 1), NF, MT.Creosote.liquid(27 * U4, F), blockIngot.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 32400, blockGem.mat(MT.Lignite, 1), NF, MT.Creosote.liquid(27 * U4, F), blockGem.mat(MT.LigniteCoke, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, dust.mat(MT.Oilshale, 1), NF, MT.Oil.liquid(U40, F), dustTiny.mat(MT.Asphalt, 1));
    RM.CokeOven.addRecipe1(T, 0, 7200, oreRaw.mat(MT.Oilshale, 1), NF, MT.Oil.liquid(U20, F), dustTiny.mat(MT.Asphalt, 2));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushed.mat(MT.Oilshale, 1), NF, MT.Oil.liquid(U40, F), dustTiny.mat(MT.Asphalt, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedTiny.mat(MT.Oilshale, 9), NF, MT.Oil.liquid(U40, F), dustTiny.mat(MT.Asphalt, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedPurified.mat(MT.Oilshale, 1), NF, MT.Oil.liquid(U40, F), dustTiny.mat(MT.Asphalt, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedPurifiedTiny.mat(MT.Oilshale, 9), NF, MT.Oil.liquid(U40, F), dustTiny.mat(MT.Asphalt, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedCentrifuged.mat(MT.Oilshale, 1), NF, MT.Oil.liquid(U40, F), dustTiny.mat(MT.Asphalt, 1));
    RM.CokeOven.addRecipe1(T, 0, 3600, crushedCentrifugedTiny.mat(MT.Oilshale, 9), NF, MT.Oil.liquid(U40, F), dustTiny.mat(MT.Asphalt, 1));
    RM.CokeOven.addRecipe1(T, 0, 32400, blockDust.mat(MT.Oilshale, 1), NF, MT.Oil.liquid(9 * U40, F), dust.mat(MT.Asphalt, 1));
    RM.Nanofab.addRecipe2(T, 16, 64, ST.tag(0), dustDiv72.mat(MT.C, 18), foil.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(0), dustTiny.mat(MT.C, 9), foil.mat(MT.Graphene, 4));
    RM.Nanofab.addRecipe2(T, 16, 64, ST.tag(0), dustSmall.mat(MT.C, 1), foil.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(0), dust.mat(MT.C, 1), foil.mat(MT.Graphene, 4));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(1), dustTiny.mat(MT.C, 9), plate.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(1), dustSmall.mat(MT.C, 4), plate.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(1), dust.mat(MT.C, 1), plate.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(2), dustTiny.mat(MT.C, 9), plateCurved.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(2), dustSmall.mat(MT.C, 4), plateCurved.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(2), dust.mat(MT.C, 1), plateCurved.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 128, ST.tag(3), dustDiv72.mat(MT.C, 36), casingSmall.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(3), dustTiny.mat(MT.C, 9), casingSmall.mat(MT.Graphene, 2));
    RM.Nanofab.addRecipe2(T, 16, 128, ST.tag(3), dustSmall.mat(MT.C, 2), casingSmall.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(3), dust.mat(MT.C, 1), casingSmall.mat(MT.Graphene, 2));
    RM.Nanofab.addRecipe2(T, 16, 32, ST.tag(4), dustDiv72.mat(MT.C, 9), wireFine.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(4), dustTiny.mat(MT.C, 9), wireFine.mat(MT.Graphene, 8));
    RM.Nanofab.addRecipe2(T, 16, 64, ST.tag(4), dustSmall.mat(MT.C, 1), wireFine.mat(MT.Graphene, 2));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(4), dust.mat(MT.C, 1), wireFine.mat(MT.Graphene, 8));
    RM.Nanofab.addRecipe2(T, 16, 128, ST.tag(5), dustDiv72.mat(MT.C, 36), wireGt01.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(5), dustTiny.mat(MT.C, 9), wireGt01.mat(MT.Graphene, 2));
    RM.Nanofab.addRecipe2(T, 16, 128, ST.tag(5), dustSmall.mat(MT.C, 2), wireGt01.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(5), dust.mat(MT.C, 1), wireGt01.mat(MT.Graphene, 2));
    RM.Nanofab.addRecipe2(T, 16, 32, ST.tag(6), dustDiv72.mat(MT.C, 9), bolt.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(6), dustTiny.mat(MT.C, 9), bolt.mat(MT.Graphene, 8));
    RM.Nanofab.addRecipe2(T, 16, 64, ST.tag(6), dustSmall.mat(MT.C, 1), bolt.mat(MT.Graphene, 2));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(6), dust.mat(MT.C, 1), bolt.mat(MT.Graphene, 8));
    RM.Nanofab.addRecipe2(T, 16, 128, ST.tag(7), dustDiv72.mat(MT.C, 36), stick.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(7), dustTiny.mat(MT.C, 9), stick.mat(MT.Graphene, 2));
    RM.Nanofab.addRecipe2(T, 16, 128, ST.tag(7), dustSmall.mat(MT.C, 2), stick.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(7), dust.mat(MT.C, 1), stick.mat(MT.Graphene, 2));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(8), dustTiny.mat(MT.C, 9), stickLong.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(8), dustSmall.mat(MT.C, 4), stickLong.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(8), dust.mat(MT.C, 1), stickLong.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 64, ST.tag(9), dustDiv72.mat(MT.C, 18), ring.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(9), dustTiny.mat(MT.C, 9), ring.mat(MT.Graphene, 4));
    RM.Nanofab.addRecipe2(T, 16, 64, ST.tag(9), dustSmall.mat(MT.C, 1), ring.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(9), dust.mat(MT.C, 1), ring.mat(MT.Graphene, 4));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(10), dustTiny.mat(MT.C, 9), gearGtSmall.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(10), dustSmall.mat(MT.C, 4), gearGtSmall.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(10), dust.mat(MT.C, 1), gearGtSmall.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 1024, ST.tag(11), dustTiny.mat(MT.C, 36), gearGt.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 1024, ST.tag(11), dustSmall.mat(MT.C, 16), gearGt.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 1024, ST.tag(11), dust.mat(MT.C, 4), gearGt.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 1088, ST.tag(12), dustSmall.mat(MT.C, 17), rotor.mat(MT.Graphene, 1));
    RM.Nanofab.addRecipe2(T, 16, 4352, ST.tag(12), dust.mat(MT.C, 17), rotor.mat(MT.Graphene, 4));
    RM.Nanofab.addRecipe2(T, 16, 128, ST.tag(13), dustDiv72.mat(MT.C, 36), pipeTiny.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(13), dustTiny.mat(MT.C, 9), pipeTiny.mat(MT.C, 2));
    RM.Nanofab.addRecipe2(T, 16, 128, ST.tag(13), dustSmall.mat(MT.C, 2), pipeTiny.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(13), dust.mat(MT.C, 1), pipeTiny.mat(MT.C, 2));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(14), dustTiny.mat(MT.C, 9), pipeSmall.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(14), dustSmall.mat(MT.C, 4), pipeSmall.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 256, ST.tag(14), dust.mat(MT.C, 1), pipeSmall.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 768, ST.tag(15), dustTiny.mat(MT.C, 27), pipeMedium.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 768, ST.tag(15), dustSmall.mat(MT.C, 12), pipeMedium.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 768, ST.tag(15), dust.mat(MT.C, 3), pipeMedium.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 1536, ST.tag(16), dustTiny.mat(MT.C, 54), pipeLarge.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 1536, ST.tag(16), dustSmall.mat(MT.C, 24), pipeLarge.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 1536, ST.tag(16), dust.mat(MT.C, 6), pipeLarge.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 3072, ST.tag(17), dustSmall.mat(MT.C, 48), pipeHuge.mat(MT.C, 1));
    RM.Nanofab.addRecipe2(T, 16, 3072, ST.tag(17), dust.mat(MT.C, 12), pipeHuge.mat(MT.C, 1));
    if (FL.Ender_TE.exists()) {
        RM.Massfab.addRecipe2(T, 16, 144, ST.tag(1), dustDiv72.mat(MT.AncientDebris, 1), NF, FL.Ender_TE.make(250), ZL_IS);
        RM.Massfab.addRecipe2(T, 16, 144 * 8, ST.tag(1), dustTiny.mat(MT.AncientDebris, 1), NF, FL.Ender_TE.make(250 * 8), ZL_IS);
        RM.Massfab.addRecipe2(T, 16, 144 * 18, ST.tag(1), dustSmall.mat(MT.AncientDebris, 1), NF, FL.Ender_TE.make(250 * 18), ZL_IS);
        RM.Massfab.addRecipe2(T, 16, 144 * 72, ST.tag(1), dust.mat(MT.AncientDebris, 1), NF, FL.Ender_TE.make(250 * 72), ZL_IS);
        RM.Massfab.addRecipe2(T, 16, 144 * 72, ST.tag(1), ingot.mat(MT.AncientDebris, 1), NF, FL.Ender_TE.make(250 * 72), ZL_IS);
        RM.Massfab.addRecipe2(T, 16, 144 * 648, ST.tag(1), blockDust.mat(MT.AncientDebris, 1), NF, FL.Ender_TE.make(250 * 648), ZL_IS);
        RM.Replicator.addRecipe1(T, 16, 144, ST.tag(0), FL.Ender_TE.make(250), NF, gem.mat(MT.EnderPearl, 1));
        RM.Lightning.addRecipe1(T, 512, 512, blockSolid.mat(MT.Netherite, 1), FL.array(FL.Ender_TE.make(1000), FL.Oil_Soulsand.make(5000)), ZL_FS, gem.mat(MT.NetherStar, 1));
    }
    RM.Massfab.addRecipe2(T, 16, 144, ST.tag(0), dustDiv72.mat(MT.AncientDebris, 1), NF, FL.Ender.make(L), ZL_IS);
    RM.Massfab.addRecipe2(T, 16, 144 * 8, ST.tag(0), dustTiny.mat(MT.AncientDebris, 1), NF, FL.Ender.make(L * 8), ZL_IS);
    RM.Massfab.addRecipe2(T, 16, 144 * 18, ST.tag(0), dustSmall.mat(MT.AncientDebris, 1), NF, FL.Ender.make(L * 18), ZL_IS);
    RM.Massfab.addRecipe2(T, 16, 144 * 72, ST.tag(0), dust.mat(MT.AncientDebris, 1), NF, FL.Ender.make(L * 72), ZL_IS);
    RM.Massfab.addRecipe2(T, 16, 144 * 72, ST.tag(0), ingot.mat(MT.AncientDebris, 1), NF, FL.Ender.make(L * 72), ZL_IS);
    RM.Massfab.addRecipe2(T, 16, 144 * 648, ST.tag(0), blockDust.mat(MT.AncientDebris, 1), NF, FL.Ender.make(L * 648), ZL_IS);
    RM.Replicator.addRecipe1(T, 16, 144, ST.tag(0), FL.Ender.make(L), NF, gem.mat(MT.EnderPearl, 1));
    RM.Lightning.addRecipe1(T, 512, 512, blockSolid.mat(MT.Netherite, 1), FL.array(FL.Ender.make(L * 4), FL.Oil_Soulsand.make(5000)), ZL_FS, gem.mat(MT.NetherStar, 1));
    RM.Fusion.addRecipe1(F, -8192, 730, ST.tag(1), FL.array(MT.D.gas(U * 2, T)), FL.array(MT.He_3.gas(U2, F), MT.T.gas(U2, F)), ZL_IS).setSpecialNumber(730L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 1130, ST.tag(1), FL.array(MT.T.gas(U * 2, T)), FL.array(MT.He.gas(U, F)), ZL_IS).setSpecialNumber(1130L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 1290, ST.tag(1), FL.array(MT.He_3.gas(U * 2, T)), FL.array(MT.He.gas(U, F)), ZL_IS).setSpecialNumber(1290L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, 0, 1890, ST.tag(1), FL.array(MT.He.gas(U * 2, T)), FL.array(MT.Be_8.liquid(U, F)), ZL_IS).setSpecialNumber(1890L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, 0, 3214, ST.tag(1), FL.array(MT.Be_8.liquid(U * 2, T)), FL.array(MT.O.gas(U, F)), ZL_IS).setSpecialNumber(3214L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 546, ST.tag(2), FL.array(MT.H.gas(U, T), MT.B_11.liquid(U, T)), FL.array(MT.He.gas(3 * U, F)), ZL_IS).setSpecialNumber(8469L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 315, ST.tag(2), FL.array(MT.H.gas(U, T), MT.C.liquid(U, T)), FL.array(MT.C_13.liquid(U, F)), ZL_IS).setSpecialNumber(315L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 754, ST.tag(2), FL.array(MT.H.gas(U, T), MT.C_13.liquid(U, T)), FL.array(MT.N.gas(U, F)), ZL_IS).setSpecialNumber(754L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 1404, ST.tag(2), FL.array(MT.H.gas(U * 2, T), MT.N.gas(U, T)), FL.array(MT.He.gas(U2, F), MT.C.liquid(U2, F), MT.O.gas(U2, F)), ZL_IS).setSpecialNumber(1404L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 455, ST.tag(2), FL.array(MT.H.gas(U * 2, T), MT.O.gas(U, T)), FL.array(MT.He.gas(U2, F), MT.F.gas(U2, F), MT.N.gas(U2, F)), ZL_IS).setSpecialNumber(455L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 1760, ST.tag(2), FL.array(MT.D.gas(U, T), MT.T.gas(U, T)), FL.array(MT.He.gas(U, F)), ZL_IS).setSpecialNumber(1760L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 1830, ST.tag(2), FL.array(MT.D.gas(U, T), MT.He_3.gas(U, T)), FL.array(MT.He.gas(U, F)), ZL_IS).setSpecialNumber(1830L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 2640, ST.tag(2), FL.array(MT.T.gas(U, T), MT.He_3.gas(U, T)), FL.array(MT.He.gas(3 * U4, F), MT.D.gas(U4, F)), ZL_IS).setSpecialNumber(2640L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 3336, ST.tag(2), FL.array(MT.D.gas(U, T), MT.Li_6.liquid(U, T)), FL.array(MT.He.gas(3 * U8, F), MT.He_3.gas(U8, F), MT.Li.liquid(U8, F), MT.Be_7.liquid(U8, F)), ZL_IS).setSpecialNumber(3336L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 1690, ST.tag(2), FL.array(MT.He_3.gas(U, T), MT.Li_6.liquid(U, T)), FL.array(MT.He.gas(2 * U, F)), ZL_IS).setSpecialNumber(1690L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 736, ST.tag(2), FL.array(MT.He.gas(U, T), MT.Be_8.liquid(U, T)), FL.array(MT.C.liquid(U, F)), ZL_IS).setSpecialNumber(736L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 716, ST.tag(2), FL.array(MT.He.gas(U, T), MT.C.liquid(U, T)), FL.array(MT.O.gas(U, F)), ZL_IS).setSpecialNumber(716L * 8192L * 16L);
    RM.Fusion.addRecipe1(F, -8192, 1956, ST.tag(2), FL.array(MT.Ad.liquid(U, T), MT.Be_7.liquid(U, T)), FL.array(MT.W.liquid(U, F), MT.He.gas(16 * U, F), MT.He_3.gas(24 * U, F), MT.T.gas(24 * U, F)), dust.mat(MT.Vb, 1)).setSpecialNumber(94956L * 8192L * 16L);
    for (OreDictMaterial tMaterial : OreDictMaterial.MATERIAL_ARRAY) if (tMaterial != null && tMaterial.mNeutrons + tMaterial.mProtons > 0 && tMaterial.contains(TD.Atomic.ELEMENT) && !tMaterial.contains(TD.Atomic.ANTIMATTER)) {
        ItemStack tInput = dust.mat(tMaterial, 1);
        if (tInput != null)
            RM.Massfab.addRecipe1(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072, tInput, NF, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons));
        tInput = ingot.mat(tMaterial, 1);
        if (tInput != null)
            RM.Massfab.addRecipe1(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072, tInput, NF, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons));
        tInput = plate.mat(tMaterial, 1);
        if (tInput != null)
            RM.Massfab.addRecipe1(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072, tInput, NF, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons));
        tInput = plateGem.mat(tMaterial, 1);
        if (tInput != null)
            RM.Massfab.addRecipe1(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072, tInput, NF, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons));
        tInput = gem.mat(tMaterial, 1);
        if (tInput != null)
            RM.Massfab.addRecipe1(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072, tInput, NF, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons));
        tInput = blockDust.mat(tMaterial, 1);
        if (tInput != null)
            RM.Massfab.addRecipe1(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072 * 9, tInput, NF, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons * 9), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons * 9));
        tInput = blockIngot.mat(tMaterial, 1);
        if (tInput != null)
            RM.Massfab.addRecipe1(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072 * 9, tInput, NF, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons * 9), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons * 9));
        tInput = blockPlate.mat(tMaterial, 1);
        if (tInput != null)
            RM.Massfab.addRecipe1(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072 * 9, tInput, NF, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons * 9), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons * 9));
        tInput = blockPlateGem.mat(tMaterial, 1);
        if (tInput != null)
            RM.Massfab.addRecipe1(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072 * 9, tInput, NF, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons * 9), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons * 9));
        tInput = blockGem.mat(tMaterial, 1);
        if (tInput != null)
            RM.Massfab.addRecipe1(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072 * 9, tInput, NF, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons * 9), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons * 9));
        FluidStack tFluid = tMaterial.liquid(U, T);
        if (!FL.Error.is(tFluid))
            RM.Massfab.addRecipe0(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072, tFluid, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons));
        tFluid = tMaterial.gas(U, T);
        if (!FL.Error.is(tFluid))
            RM.Massfab.addRecipe0(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072, tFluid, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons));
        tFluid = tMaterial.plasma(U, T);
        if (!FL.Error.is(tFluid))
            RM.Massfab.addRecipe0(T, 1, (tMaterial.mNeutrons + tMaterial.mProtons) * 131072, tFluid, tMaterial.mProtons < 1 ? NF : FL.MatterCharged.make(tMaterial.mProtons), tMaterial.mNeutrons < 1 ? NF : FL.MatterNeutral.make(tMaterial.mNeutrons));
    }
}
Also used : OreDictMaterial(gregapi.oredict.OreDictMaterial) OreDictListenerEvent_Names(gregapi.oredict.event.OreDictListenerEvent_Names) MultiTileEntityRegistry(gregapi.block.multitileentity.MultiTileEntityRegistry) IOreDictListenerEvent(gregapi.oredict.event.IOreDictListenerEvent) FluidStack(net.minecraftforge.fluids.FluidStack) BlockMetaType(gregapi.block.metatype.BlockMetaType) OreDictPrefix(gregapi.oredict.OreDictPrefix) ItemStack(net.minecraft.item.ItemStack)

Example 17 with OreDictPrefix

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

the class Loader_Recipes_Extruder method run.

@Override
public void run() {
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Plate.get(0), OP.plate.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Plate_Curved.get(0), OP.plateCurved.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Rod.get(0), OP.stick.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Rod_Long.get(0), OP.stickLong.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 16, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Bolt.get(0), OP.bolt.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Ingot.get(0), IL.NeLi_Blackstone_Bricks.get(1, IL.NePl_Blackstone_Bricks.get(1, ST.make(BlocksGT.Basalt, 1, BlockStones.BRICK))));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Block.get(0), IL.NeLi_Blackstone_Polished.get(1, IL.NePl_Blackstone_Polished.get(1, ST.make(BlocksGT.Basalt, 1, BlockStones.STONE))));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Shovel.get(0), OP.toolHeadRawShovel.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Sword.get(0), OP.toolHeadRawSword.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Hoe.get(0), OP.toolHeadRawHoe.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Pickaxe.get(0), OP.toolHeadRawPickaxe.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Axe.get(0), OP.toolHeadRawAxe.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 256, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Gear.get(0), OP.gearGt.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Gear_Small.get(0), OP.gearGtSmall.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 384, IL.Module_Blackstone_Generator.get(0), IL.Shape_Extruder_Hammer.get(0), OP.toolHeadHammer.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Plate.get(0), OP.plate.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Plate_Curved.get(0), OP.plateCurved.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Rod.get(0), OP.stick.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Rod_Long.get(0), OP.stickLong.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 16, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Bolt.get(0), OP.bolt.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Ingot.get(0), IL.NeLi_Blackstone_Bricks.get(1, IL.NePl_Blackstone_Bricks.get(1, ST.make(BlocksGT.Basalt, 1, BlockStones.BRICK))));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Block.get(0), IL.NeLi_Blackstone_Polished.get(1, IL.NePl_Blackstone_Polished.get(1, ST.make(BlocksGT.Basalt, 1, BlockStones.STONE))));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Shovel.get(0), OP.toolHeadRawShovel.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Sword.get(0), OP.toolHeadRawSword.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Hoe.get(0), OP.toolHeadRawHoe.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Pickaxe.get(0), OP.toolHeadRawPickaxe.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Axe.get(0), OP.toolHeadRawAxe.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 256, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Gear.get(0), OP.gearGt.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Gear_Small.get(0), OP.gearGtSmall.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 384, IL.Module_Blackstone_Generator.get(0), IL.Shape_SimpleEx_Hammer.get(0), OP.toolHeadHammer.mat(MT.STONES.Blackstone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Plate.get(0), OP.plate.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Plate_Curved.get(0), OP.plateCurved.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Rod.get(0), OP.stick.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Rod_Long.get(0), OP.stickLong.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 16, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Bolt.get(0), OP.bolt.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Ingot.get(0), IL.NeLi_Basalt_Polished.get(1, IL.NePl_Basalt_Polished.get(1, ST.make(BlocksGT.Basalt, 1, BlockStones.BRICK))));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Block.get(0), IL.NeLi_Basalt.get(1, IL.NePl_Basalt.get(1, ST.make(BlocksGT.Basalt, 1, BlockStones.STONE))));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Shovel.get(0), OP.toolHeadRawShovel.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Sword.get(0), OP.toolHeadRawSword.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Hoe.get(0), OP.toolHeadRawHoe.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Pickaxe.get(0), OP.toolHeadRawPickaxe.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Axe.get(0), OP.toolHeadRawAxe.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 256, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Gear.get(0), OP.gearGt.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Gear_Small.get(0), OP.gearGtSmall.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 384, IL.Module_Basalt_Generator.get(0), IL.Shape_Extruder_Hammer.get(0), OP.toolHeadHammer.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Plate.get(0), OP.plate.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Plate_Curved.get(0), OP.plateCurved.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Rod.get(0), OP.stick.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Rod_Long.get(0), OP.stickLong.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 16, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Bolt.get(0), OP.bolt.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Ingot.get(0), IL.NeLi_Basalt_Polished.get(1, IL.NePl_Basalt_Polished.get(1, ST.make(BlocksGT.Basalt, 1, BlockStones.BRICK))));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Block.get(0), IL.NeLi_Basalt.get(1, IL.NePl_Basalt.get(1, ST.make(BlocksGT.Basalt, 1, BlockStones.STONE))));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Shovel.get(0), OP.toolHeadRawShovel.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Sword.get(0), OP.toolHeadRawSword.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Hoe.get(0), OP.toolHeadRawHoe.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Pickaxe.get(0), OP.toolHeadRawPickaxe.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Axe.get(0), OP.toolHeadRawAxe.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 256, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Gear.get(0), OP.gearGt.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Gear_Small.get(0), OP.gearGtSmall.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 384, IL.Module_Basalt_Generator.get(0), IL.Shape_SimpleEx_Hammer.get(0), OP.toolHeadHammer.mat(MT.STONES.Basalt, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Plate.get(0), OP.plate.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Plate_Curved.get(0), OP.plateCurved.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Rod.get(0), OP.stick.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Rod_Long.get(0), OP.stickLong.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 16, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Bolt.get(0), OP.bolt.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Ingot.get(0), ST.make(Blocks.stonebrick, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Block.get(0), ST.make(Blocks.stone, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Shovel.get(0), OP.toolHeadRawShovel.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Sword.get(0), OP.toolHeadRawSword.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Hoe.get(0), OP.toolHeadRawHoe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Pickaxe.get(0), OP.toolHeadRawPickaxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Axe.get(0), OP.toolHeadRawAxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 256, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Gear.get(0), OP.gearGt.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Gear_Small.get(0), OP.gearGtSmall.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 384, IL.Module_Stone_Generator.get(0), IL.Shape_Extruder_Hammer.get(0), OP.toolHeadHammer.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Plate.get(0), OP.plate.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Plate_Curved.get(0), OP.plateCurved.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Rod.get(0), OP.stick.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Rod_Long.get(0), OP.stickLong.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 16, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Bolt.get(0), OP.bolt.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Ingot.get(0), ST.make(Blocks.stonebrick, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Block.get(0), ST.make(Blocks.stone, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Shovel.get(0), OP.toolHeadRawShovel.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Sword.get(0), OP.toolHeadRawSword.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Hoe.get(0), OP.toolHeadRawHoe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Pickaxe.get(0), OP.toolHeadRawPickaxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Axe.get(0), OP.toolHeadRawAxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 256, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Gear.get(0), OP.gearGt.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Gear_Small.get(0), OP.gearGtSmall.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 384, IL.Module_Stone_Generator.get(0), IL.Shape_SimpleEx_Hammer.get(0), OP.toolHeadHammer.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_Extruder_Plate.get(0), OP.plate.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_Extruder_Plate_Curved.get(0), OP.plateCurved.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_Extruder_Rod.get(0), OP.stick.mat(MT.Stone, 2));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_Extruder_Rod_Long.get(0), OP.stickLong.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 8, ST.make(Blocks.stone, 1, W), IL.Shape_Extruder_Bolt.get(0), OP.bolt.mat(MT.Stone, 8));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_Extruder_Ingot.get(0), ST.make(Blocks.stonebrick, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_Extruder_Block.get(0), ST.make(Blocks.stone, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_Extruder_Shovel.get(0), OP.toolHeadRawShovel.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, ST.make(Blocks.stone, 2, W), IL.Shape_Extruder_Sword.get(0), OP.toolHeadRawSword.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, ST.make(Blocks.stone, 2, W), IL.Shape_Extruder_Hoe.get(0), OP.toolHeadRawHoe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 96, ST.make(Blocks.stone, 3, W), IL.Shape_Extruder_Pickaxe.get(0), OP.toolHeadRawPickaxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 96, ST.make(Blocks.stone, 3, W), IL.Shape_Extruder_Axe.get(0), OP.toolHeadRawAxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, ST.make(Blocks.stone, 4, W), IL.Shape_Extruder_Gear.get(0), OP.gearGt.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_Extruder_Gear_Small.get(0), OP.gearGtSmall.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, ST.make(Blocks.stone, 6, W), IL.Shape_Extruder_Hammer.get(0), OP.toolHeadHammer.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_SimpleEx_Plate.get(0), OP.plate.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_SimpleEx_Plate_Curved.get(0), OP.plateCurved.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_SimpleEx_Rod.get(0), OP.stick.mat(MT.Stone, 2));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_SimpleEx_Rod_Long.get(0), OP.stickLong.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 8, ST.make(Blocks.stone, 1, W), IL.Shape_SimpleEx_Bolt.get(0), OP.bolt.mat(MT.Stone, 8));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_SimpleEx_Ingot.get(0), ST.make(Blocks.stonebrick, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_SimpleEx_Block.get(0), ST.make(Blocks.stone, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_SimpleEx_Shovel.get(0), OP.toolHeadRawShovel.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, ST.make(Blocks.stone, 2, W), IL.Shape_SimpleEx_Sword.get(0), OP.toolHeadRawSword.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, ST.make(Blocks.stone, 2, W), IL.Shape_SimpleEx_Hoe.get(0), OP.toolHeadRawHoe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 96, ST.make(Blocks.stone, 3, W), IL.Shape_SimpleEx_Pickaxe.get(0), OP.toolHeadRawPickaxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 96, ST.make(Blocks.stone, 3, W), IL.Shape_SimpleEx_Axe.get(0), OP.toolHeadRawAxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, ST.make(Blocks.stone, 4, W), IL.Shape_SimpleEx_Gear.get(0), OP.gearGt.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.stone, 1, W), IL.Shape_SimpleEx_Gear_Small.get(0), OP.gearGtSmall.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, ST.make(Blocks.stone, 6, W), IL.Shape_SimpleEx_Hammer.get(0), OP.toolHeadHammer.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_Extruder_Plate.get(0), OP.plate.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_Extruder_Plate_Curved.get(0), OP.plateCurved.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_Extruder_Rod.get(0), OP.stick.mat(MT.Stone, 2));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_Extruder_Rod_Long.get(0), OP.stickLong.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 8, ST.make(Blocks.cobblestone, 1, W), IL.Shape_Extruder_Bolt.get(0), OP.bolt.mat(MT.Stone, 8));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_Extruder_Ingot.get(0), ST.make(Blocks.stonebrick, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_Extruder_Block.get(0), ST.make(Blocks.stone, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_Extruder_Shovel.get(0), OP.toolHeadRawShovel.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, ST.make(Blocks.cobblestone, 2, W), IL.Shape_Extruder_Sword.get(0), OP.toolHeadRawSword.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, ST.make(Blocks.cobblestone, 2, W), IL.Shape_Extruder_Hoe.get(0), OP.toolHeadRawHoe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 96, ST.make(Blocks.cobblestone, 3, W), IL.Shape_Extruder_Pickaxe.get(0), OP.toolHeadRawPickaxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 96, ST.make(Blocks.cobblestone, 3, W), IL.Shape_Extruder_Axe.get(0), OP.toolHeadRawAxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, ST.make(Blocks.cobblestone, 4, W), IL.Shape_Extruder_Gear.get(0), OP.gearGt.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_Extruder_Gear_Small.get(0), OP.gearGtSmall.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, ST.make(Blocks.cobblestone, 6, W), IL.Shape_Extruder_Hammer.get(0), OP.toolHeadHammer.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_SimpleEx_Plate.get(0), OP.plate.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_SimpleEx_Plate_Curved.get(0), OP.plateCurved.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_SimpleEx_Rod.get(0), OP.stick.mat(MT.Stone, 2));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_SimpleEx_Rod_Long.get(0), OP.stickLong.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 8, ST.make(Blocks.cobblestone, 1, W), IL.Shape_SimpleEx_Bolt.get(0), OP.bolt.mat(MT.Stone, 8));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_SimpleEx_Ingot.get(0), ST.make(Blocks.stonebrick, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_SimpleEx_Block.get(0), ST.make(Blocks.stone, 1, 0));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_SimpleEx_Shovel.get(0), OP.toolHeadRawShovel.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, ST.make(Blocks.cobblestone, 2, W), IL.Shape_SimpleEx_Sword.get(0), OP.toolHeadRawSword.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 64, ST.make(Blocks.cobblestone, 2, W), IL.Shape_SimpleEx_Hoe.get(0), OP.toolHeadRawHoe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 96, ST.make(Blocks.cobblestone, 3, W), IL.Shape_SimpleEx_Pickaxe.get(0), OP.toolHeadRawPickaxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 96, ST.make(Blocks.cobblestone, 3, W), IL.Shape_SimpleEx_Axe.get(0), OP.toolHeadRawAxe.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 128, ST.make(Blocks.cobblestone, 4, W), IL.Shape_SimpleEx_Gear.get(0), OP.gearGt.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 32, ST.make(Blocks.cobblestone, 1, W), IL.Shape_SimpleEx_Gear_Small.get(0), OP.gearGtSmall.mat(MT.Stone, 1));
    RM.Extruder.addRecipe2(T, F, F, F, T, 16, 192, ST.make(Blocks.cobblestone, 6, W), IL.Shape_SimpleEx_Hammer.get(0), OP.toolHeadHammer.mat(MT.Stone, 1));
    // Iterate over all possible Extruder Fodder that, for simplicity sake, is not too big or small.
    ArrayListNoNulls<OreDictPrefix> tPrefixList = new ArrayListNoNulls<>();
    for (OreDictPrefix tPrefix : OreDictPrefix.VALUES) if (tPrefix.containsAny(TD.Prefix.EXTRUDER_FODDER, TD.Prefix.INGOT_BASED, TD.Prefix.GEM_BASED, TD.Prefix.DUST_BASED) && tPrefix.mAmount >= U64 && tPrefix.mAmount <= U && U % tPrefix.mAmount == 0)
        tPrefixList.add(tPrefix);
    // Yes I know the for loops inside of this only iterate over one or two things, but this looks way better than having two different Styles.
    for (OreDictPrefix tPrefix : tPrefixList) {
        // Do not add MT.Wax to this, would lead to an Exploit that allows non-food-grade Wax to be used for Pills.
        for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.WaxPlant, MT.WaxParaffin }) {
            long tEUt = 16, tCostsPerUnit = 64;
            ItemStack tStack = tPrefix.mat(tMaterial, U / tPrefix.mAmount);
            if (ST.valid(tStack)) {
                RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit, tStack, IL.Shape_Extruder_Bottle.get(0), IL.Pill_Empty.get(1));
                RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit, tStack, IL.Shape_SimpleEx_Bottle.get(0), IL.Pill_Empty.get(1));
            }
        }
        for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.WaxBee }) {
            long tEUt = 16, tCostsPerUnit = 64;
            ItemStack tStack = tPrefix.mat(tMaterial, U / tPrefix.mAmount);
            if (ST.valid(tStack)) {
                RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit, tStack, IL.Shape_Extruder_Bottle.get(0), IL.Pill_Empty.get(1));
                RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit, tStack, IL.Shape_SimpleEx_Bottle.get(0), IL.Pill_Empty.get(1));
                if (tStack.stackSize * 3 <= tStack.getMaxStackSize()) {
                    RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit * 3, ST.mul_(3, tStack), IL.Shape_Extruder_Cell.get(0), IL.FR_WaxCapsule.get(4));
                    RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit * 3, ST.mul_(3, tStack), IL.Shape_SimpleEx_Cell.get(0), IL.FR_WaxCapsule.get(4));
                }
            }
        }
        for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.WaxRefractory }) {
            long tEUt = 16, tCostsPerUnit = 64;
            ItemStack tStack = tPrefix.mat(tMaterial, U / tPrefix.mAmount);
            if (ST.valid(tStack)) {
                if (tStack.stackSize * 3 <= tStack.getMaxStackSize()) {
                    RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit * 3, ST.mul_(3, tStack), IL.Shape_Extruder_Cell.get(0), IL.FR_RefractoryCapsule.get(4));
                    RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit * 3, ST.mul_(3, tStack), IL.Shape_SimpleEx_Cell.get(0), IL.FR_RefractoryCapsule.get(4));
                }
            }
        }
        for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.WaxMagic, MT.WaxAmnesic }) {
            long tEUt = 16, tCostsPerUnit = 64;
            ItemStack tStack = tPrefix.mat(tMaterial, U / tPrefix.mAmount);
            if (ST.valid(tStack)) {
                if (tStack.stackSize * 3 <= tStack.getMaxStackSize()) {
                    RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit * 3, ST.mul_(3, tStack), IL.Shape_Extruder_Cell.get(0), IL.FR_MagicCapsule.get(4));
                    RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit * 3, ST.mul_(3, tStack), IL.Shape_SimpleEx_Cell.get(0), IL.FR_MagicCapsule.get(4));
                }
            }
        }
        for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.Glass }) {
            long tEUt = 16, tCostsPerUnit = 64;
            ItemStack tStack = tPrefix.mat(tMaterial, U / tPrefix.mAmount), tPlate = OP.plateGem.mat(tMaterial, 1);
            if (ST.valid(tStack)) {
                if (!ST.equal(tStack, tPlate, T)) {
                    RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit, tStack, IL.Shape_Extruder_Plate.get(0), tPlate);
                    RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit, tStack, IL.Shape_SimpleEx_Plate.get(0), tPlate);
                }
                RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit, tStack, IL.Shape_Extruder_Cell.get(0), OP.chemtube.mat(MT.Empty, 3));
                RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit, tStack, IL.Shape_SimpleEx_Cell.get(0), OP.chemtube.mat(MT.Empty, 3));
                RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit, tStack, IL.Shape_Extruder_Bottle.get(0), IL.Bottle_Empty.get(1));
                RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit, tStack, IL.Shape_SimpleEx_Bottle.get(0), IL.Bottle_Empty.get(1));
            }
        }
        for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.Plastic }) {
            long tEUt = 16, tCostsPerUnit = 64;
            ItemStack tStack = tPrefix.mat(tMaterial, U / tPrefix.mAmount);
            if (ST.valid(tStack)) {
                if (tStack.stackSize * 3 <= tStack.getMaxStackSize()) {
                    RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit * 3, ST.mul_(3, tStack), IL.Shape_Extruder_Cell.get(0), IL.PlasticCan.get(1));
                    RM.Extruder.addRecipe2(T, F, F, F, T, tEUt, tCostsPerUnit * 3, ST.mul_(3, tStack), IL.Shape_SimpleEx_Cell.get(0), IL.PlasticCan.get(1));
                }
            }
        }
        for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.Sn }) {
            long tEUt = 16, tCostsPerUnit = 64;
            ItemStack tStack = tPrefix.mat(tMaterial, U / tPrefix.mAmount);
            if (ST.valid(tStack)) {
                RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit, tStack, IL.Shape_Extruder_Cell.get(0), IL.Cell_Empty.get(1));
                RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit, tStack, IL.Shape_SimpleEx_Cell.get(0), IL.Cell_Empty.get(1));
                RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit, tStack, IL.Shape_Extruder_Bottle.get(0), IL.IC2_Food_Can_Empty.get(2));
                RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit, tStack, IL.Shape_SimpleEx_Bottle.get(0), IL.IC2_Food_Can_Empty.get(2));
            }
        }
        for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.TinAlloy }) {
            long tEUt = 16, tCostsPerUnit = 64;
            ItemStack tStack = tPrefix.mat(tMaterial, U / tPrefix.mAmount);
            if (ST.valid(tStack)) {
                RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit, tStack, IL.Shape_Extruder_Cell.get(0), IL.Food_Can_Empty.get(1));
                RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit, tStack, IL.Shape_SimpleEx_Cell.get(0), IL.Food_Can_Empty.get(1));
            }
        }
        for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.Zr }) {
            long tEUt = 96, tCostsPerUnit = Math.max(64, (long) (((tMaterial.mMeltingPoint - DEF_ENV_TEMP) * (1 + tMaterial.getWeight(U))) / 6144));
            ItemStack tStack = tPrefix.mat(tMaterial, U / tPrefix.mAmount);
            if (ST.valid(tStack)) {
                RM.Extruder.addRecipe2(T, F, F, F, F, tEUt, tCostsPerUnit, tStack, IL.Shape_Extruder_Cell.get(0), IL.Reactor_Rod_Empty.get(1));
            }
        }
    }
}
Also used : OreDictMaterial(gregapi.oredict.OreDictMaterial) OreDictPrefix(gregapi.oredict.OreDictPrefix) ItemStack(net.minecraft.item.ItemStack) ArrayListNoNulls(gregapi.code.ArrayListNoNulls)

Example 18 with OreDictPrefix

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

the class Loader_Recipes_Food method run.

@Override
public void run() {
    RM.food_can(ST.make(Items.rotten_flesh, 1, W), 4, "Canned Meat", IL.CANS_ROTTEN);
    RM.food_can(ST.make(Items.spider_eye, 1, W), 2, "Canned Spider Eye", IL.CANS_ROTTEN);
    for (ItemStack tStack : ST.array(dustTiny.mat(MT.FishCooked, 9), dustSmall.mat(MT.FishCooked, 4), dust.mat(MT.FishCooked, 1), nugget.mat(MT.FishCooked, 9), chunkGt.mat(MT.FishCooked, 4), billet.mat(MT.FishCooked, 2), ingot.mat(MT.FishCooked, 1))) RM.food_can(tStack, 2, "Canned Fish", IL.CANS_FISH);
    for (ItemStack tStack : ST.array(dustTiny.mat(MT.MeatCooked, 9), dustSmall.mat(MT.MeatCooked, 4), dust.mat(MT.MeatCooked, 1), nugget.mat(MT.MeatCooked, 9), chunkGt.mat(MT.MeatCooked, 4), billet.mat(MT.MeatCooked, 2), ingot.mat(MT.MeatCooked, 1))) RM.food_can(tStack, 2, "Canned Meat", IL.CANS_MEAT);
    for (ItemStack tStack : ST.array(dustTiny.mat(MT.Tofu, 9), dustSmall.mat(MT.Tofu, 4), dust.mat(MT.Tofu, 1), nugget.mat(MT.Tofu, 9), chunkGt.mat(MT.Tofu, 4), billet.mat(MT.Tofu, 2), ingot.mat(MT.Tofu, 1))) RM.food_can(tStack, 2, "Canned Tofu", IL.CANS_VEGGIE);
    for (ItemStack tStack : ST.array(dustTiny.mat(MT.SoylentGreen, 9), dustSmall.mat(MT.SoylentGreen, 4), dust.mat(MT.SoylentGreen, 1), nugget.mat(MT.SoylentGreen, 9), chunkGt.mat(MT.SoylentGreen, 4), billet.mat(MT.SoylentGreen, 2), ingot.mat(MT.SoylentGreen, 1))) RM.food_can(tStack, 2, "Canned Emerald Green", IL.CANS_VEGGIE);
    OreDictPrefix[] tPrefixListA = new OreDictPrefix[] { dustTiny, dustSmall, dust }, tPrefixListB = new OreDictPrefix[] { nugget, chunkGt, ingot };
    OreDictMaterial[] tMaterialList = new OreDictMaterial[] { MT.MeatRotten, MT.MeatRaw, MT.MeatCooked, MT.FishRotten, MT.FishRaw, MT.FishCooked, MT.SoylentGreen, MT.Tofu };
    for (int i = 0; i < tPrefixListA.length; i++) for (int j = 0; j < tMaterialList.length; j++) {
        RM.Compressor.addRecipe1(T, 16, 16, tPrefixListA[i].mat(tMaterialList[j], 1), tPrefixListB[i].mat(tMaterialList[j], 1));
        RM.ic2_compressor(tPrefixListA[i].mat(tMaterialList[j], 1), tPrefixListB[i].mat(tMaterialList[j], 1));
    }
    RM.Fermenter.addRecipe1(T, 16, 16, dustTiny.mat(MT.MeatRaw, 1), dustTiny.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 36, dustSmall.mat(MT.MeatRaw, 1), dustSmall.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 144, dust.mat(MT.MeatRaw, 1), dust.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 16, nugget.mat(MT.MeatRaw, 1), nugget.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 36, chunkGt.mat(MT.MeatRaw, 1), chunkGt.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 96, billet.mat(MT.MeatRaw, 1), billet.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 144, ingot.mat(MT.MeatRaw, 1), ingot.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 16, dustTiny.mat(MT.MeatCooked, 1), dustTiny.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 36, dustSmall.mat(MT.MeatCooked, 1), dustSmall.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 144, dust.mat(MT.MeatCooked, 1), dust.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 16, nugget.mat(MT.MeatCooked, 1), nugget.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 36, chunkGt.mat(MT.MeatCooked, 1), chunkGt.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 96, billet.mat(MT.MeatCooked, 1), billet.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 144, ingot.mat(MT.MeatCooked, 1), ingot.mat(MT.MeatRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 16, dustTiny.mat(MT.FishRaw, 1), dustTiny.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 36, dustSmall.mat(MT.FishRaw, 1), dustSmall.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 144, dust.mat(MT.FishRaw, 1), dust.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 16, nugget.mat(MT.FishRaw, 1), nugget.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 36, chunkGt.mat(MT.FishRaw, 1), chunkGt.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 96, billet.mat(MT.FishRaw, 1), billet.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 144, ingot.mat(MT.FishRaw, 1), ingot.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 16, dustTiny.mat(MT.FishCooked, 1), dustTiny.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 36, dustSmall.mat(MT.FishCooked, 1), dustSmall.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 144, dust.mat(MT.FishCooked, 1), dust.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 16, nugget.mat(MT.FishCooked, 1), nugget.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 36, chunkGt.mat(MT.FishCooked, 1), chunkGt.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 96, billet.mat(MT.FishCooked, 1), billet.mat(MT.FishRotten, 1));
    RM.Fermenter.addRecipe1(T, 16, 144, ingot.mat(MT.FishCooked, 1), ingot.mat(MT.FishRotten, 1));
    new OreDictListenerEvent_Names() {

        @Override
        public void addAllListeners() {
            addListener(dust.dat(MT.Wheat), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.rem_smelting(aEvent.mStack);
                }
            });
            addListener(dustSmall.dat(MT.Wheat), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.rem_smelting(aEvent.mStack);
                }
            });
            addListener(dustTiny.dat(MT.Wheat), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.rem_smelting(aEvent.mStack);
                }
            });
            addListener(ingot.dat(MT.MeatRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, ingot.mat(MT.MeatCooked, 1), F, T, F);
                }
            });
            addListener(billet.dat(MT.MeatRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, billet.mat(MT.MeatCooked, 1), F, T, F);
                }
            });
            addListener(chunkGt.dat(MT.MeatRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, chunkGt.mat(MT.MeatCooked, 1), F, T, F);
                }
            });
            addListener(nugget.dat(MT.MeatRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, nugget.mat(MT.MeatCooked, 1), F, T, F);
                }
            });
            addListener(dust.dat(MT.MeatRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, dust.mat(MT.MeatCooked, 1), F, T, F);
                }
            });
            addListener(dustSmall.dat(MT.MeatRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, dustSmall.mat(MT.MeatCooked, 1), F, T, F);
                }
            });
            addListener(dustTiny.dat(MT.MeatRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, dustTiny.mat(MT.MeatCooked, 1), F, T, F);
                }
            });
            addListener(ingot.dat(MT.FishRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, ingot.mat(MT.FishCooked, 1), F, T, F);
                }
            });
            addListener(billet.dat(MT.FishRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, billet.mat(MT.FishCooked, 1), F, T, F);
                }
            });
            addListener(chunkGt.dat(MT.FishRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, chunkGt.mat(MT.FishCooked, 1), F, T, F);
                }
            });
            addListener(nugget.dat(MT.FishRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, nugget.mat(MT.FishCooked, 1), F, T, F);
                }
            });
            addListener(dust.dat(MT.FishRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, dust.mat(MT.FishCooked, 1), F, T, F);
                }
            });
            addListener(dustSmall.dat(MT.FishRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, dustSmall.mat(MT.FishCooked, 1), F, T, F);
                }
            });
            addListener(dustTiny.dat(MT.FishRaw), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.add_smelting(aEvent.mStack, dustTiny.mat(MT.FishCooked, 1), F, T, F);
                }
            });
            addListener("foodVanilla", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!OM.prefixcontains(aEvent.mStack, TD.Prefix.DUST_BASED)) {
                        RM.Shredder.addRecipe1(T, 16, 16, aEvent.mStack, OM.dust(MT.Vanilla));
                        RM.Mortar.addRecipe1(T, 16, 16, aEvent.mStack, OM.dust(MT.Vanilla, U2));
                    }
                }
            });
            addListener("foodCheese", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Slicer.addRecipe2(T, 16, 16, aEvent.mStack, IL.Shape_Slicer_Flat.get(0), IL.Food_Cheese_Sliced.get(4));
                    if (!OM.prefixcontains(aEvent.mStack, TD.Prefix.DUST_BASED)) {
                        RM.Shredder.addRecipe1(T, 16, 16, aEvent.mStack, OM.dust(MT.Cheese));
                        RM.Mortar.addRecipe1(T, 16, 16, aEvent.mStack, OM.dust(MT.Cheese, U2));
                    }
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 8, 0, 8);
                }
            });
            addListener("foodDough", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.rem_smelting(aEvent.mStack);
                    RM.RollingMill.addRecipe1(T, 16, 16, aEvent.mStack, IL.Food_Dough_Flat.get(1));
                    RM.Mixer.addRecipe2(T, 16, 16, aEvent.mStack, gemChipped.mat(MT.Sugar, 4), IL.Food_Dough_Sugar.get(2));
                    RM.Mixer.addRecipe2(T, 16, 16, aEvent.mStack, OM.dust(MT.Sugar), IL.Food_Dough_Sugar.get(2));
                    RM.Mixer.addRecipe2(T, 16, 16, aEvent.mStack, OM.dust(MT.Cocoa), IL.Food_Dough_Chocolate.get(1));
                    RM.Mixer.addRecipe2(T, 16, 16, aEvent.mStack, OM.dust(MT.Chocolate), IL.Food_Dough_Chocolate.get(2));
                    RM.Press.addRecipe2(T, 16, 16, ST.amount(1, aEvent.mStack), IL.Shape_Foodmold_Bun.get(0), IL.Food_Bun_Raw.get(1));
                    RM.Press.addRecipe2(T, 16, 32, ST.amount(2, aEvent.mStack), IL.Shape_Foodmold_Bread.get(0), IL.Food_Bread_Raw.get(1));
                    RM.Press.addRecipe2(T, 16, 48, ST.amount(3, aEvent.mStack), IL.Shape_Foodmold_Baguette.get(0), IL.Food_Baguette_Raw.get(1));
                    RM.Press.addRecipe2(T, 16, 64, ST.amount(4, aEvent.mStack), IL.Shape_Foodmold_Toast.get(0), IL.Food_Toast_Raw.get(1));
                }
            });
            addListener("foodSugarDough", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Press.addRecipe2(T, 16, 64, ST.amount(4, aEvent.mStack), IL.Shape_Foodmold_Cylinder.get(0), IL.Food_CakeBottom_Raw.get(1));
                }
            });
            addListener("foodRaisins", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Bath.addRecipe1(T, 0, 16, aEvent.mStack, MT.Chocolate.liquid(U4, T), NF, IL.Food_Raisins_Chocolate.get(1));
                    RM.Mixer.addRecipe2(T, 16, 16, IL.Food_Ice_Cream.get(1), aEvent.mStack, NF, NF, IL.Food_Ice_Cream_Raisin.get(1));
                }
            });
            addListener(dust.dat(MT.PepperBlack), dust.dat(MT.Licorice), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) (200 + DYE_INDEX_Black));
                }
            });
            addListener(dust.dat(MT.Mint), dust.dat(MT.Tea), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) (200 + DYE_INDEX_Lime));
                }
            });
            addListener(dust.dat(MT.Pistachio), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) (200 + DYE_INDEX_Green));
                }
            });
            addListener(new Object[] { dust.dat(MT.Snow), dust.dat(MT.Sugar), dust.dat(MT.PEZ), dust.dat(MT.Rice), dust.dat(MT.NaCl), dust.dat(MT.KCl) }, new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) (200 + DYE_INDEX_White));
                }
            });
            addListener(dust.dat(MT.Ice), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) (200 + DYE_INDEX_LightBlue));
                }
            });
            addListener(dust.dat(MT.Curry), dust.dat(MT.Corn), dust.dat(MT.Cheese), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) (200 + DYE_INDEX_Yellow));
                }
            });
            addListener(dust.dat(MT.Chili), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) (200 + DYE_INDEX_Red));
                }
            });
            addListener(new Object[] { dust.dat(MT.Nougat), dust.dat(MT.Vanilla), dust.dat(MT.Nutmeg), dust.dat(MT.Peanut), dust.dat(MT.Hazelnut), dust.dat(MT.Almond), dust.dat(MT.Cocoa), dust.dat(MT.Chocolate), dust.dat(MT.Cinnamon), dust.dat(MT.Coffee) }, new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) (200 + DYE_INDEX_Brown));
                }
            });
            addListener("foodSilkentofu", dust.dat(MT.Tofu), "foodFirmtofu", ingot.dat(MT.Tofu), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 35);
                }
            });
            addListener("foodCaramel", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Mixer.addRecipe2(T, 16, 16, IL.Food_Ice_Cream.get(1), aEvent.mStack, NF, NF, IL.Food_Ice_Cream_Caramel.get(1));
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_Brown);
                }
            });
            addListener("foodSaladdressing", "foodQuark", "foodCustard", "foodMayo", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_White);
                }
            });
            addListener("foodButter", "foodMustard", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_Yellow);
                }
            });
            addListener("foodMangochutney", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_Orange);
                }
            });
            addListener("foodKetchup", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_Red);
                }
            });
            addListener("foodNutella", "foodMaplesyrup", "foodGravy", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_Brown);
                }
            });
            addListener("foodSoysauce", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_Lime);
                }
            });
            addListener("foodVegemite", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_Black);
                }
            });
            addListener("foodChocolatebar", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 21);
                }
            });
            addListener("foodBaconraw", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 37);
                }
            });
            addListener("foodBaconcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.Mixer.addRecipe2(T, 16, 16, IL.Food_Ice_Cream.get(1), aEvent.mStack, NF, NF, IL.Food_Ice_Cream_Bacon.get(1));
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 38);
                }
            });
            addListener("foodEpicbacon", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 38);
                }
            });
            addListener("foodZombiejerky", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 38);
                }
            });
            addListener("foodChum", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, 4, "SPAM", IL.CANS_CHUM);
                    RM.Mixer.addRecipe2(T, 16, 16, IL.Food_Ice_Cream.get(4), aEvent.mStack, NF, NF, IL.Food_Ice_Cream_Chum.get(4));
                    for (OreDictMaterial tMat : ANY.Wood.mToThis) {
                        ItemStack tStick = OP.stick.mat(tMat, 1);
                        if (ST.valid(tStick)) {
                            RM.Boxinator.addRecipe2(T, 16, 16, aEvent.mStack, tStick, IL.Food_Chum_On_Stick.get(1));
                            if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                                Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 39);
                        }
                    }
                }
            });
            addListener(new OreDictListenerEvent_TwoNames("foodSugarDough", "foodRaisins") {

                @Override
                public void onOreRegistration(ItemStack aStack1, ItemStack aStack2) {
                    if (!IL.Food_Dough_Sugar_Raisins.equal(aStack1, F, T) && !IL.Food_Dough_Sugar_Chocolate_Raisins.equal(aStack1, F, T))
                        RM.Mixer.addRecipe2(T, 16, 16, aStack1, aStack2, IL.Food_Dough_Sugar_Raisins.get(1));
                }
            });
            addListener(new OreDictListenerEvent_TwoNames("foodSugarDough", "foodChocolateraisins") {

                @Override
                public void onOreRegistration(ItemStack aStack1, ItemStack aStack2) {
                    if (!IL.Food_Dough_Sugar_Raisins.equal(aStack1, F, T) && !IL.Food_Dough_Sugar_Chocolate_Raisins.equal(aStack1, F, T))
                        RM.Mixer.addRecipe2(T, 16, 16, aStack1, aStack2, IL.Food_Dough_Sugar_Chocolate_Raisins.get(1));
                }
            });
            addListener("materialHoneycomb", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Centrifuge.addRecipe1(T, 16, 64, aEvent.mStack, NF, FL.Honey.make(90), OM.dust(MT.WaxBee));
                    RM.Squeezer.addRecipe1(T, 16, 64, aEvent.mStack, NF, FL.Honey.make(90), OM.dust(MT.WaxBee));
                    RM.Juicer.addRecipe1(T, 16, 64, aEvent.mStack, NF, FL.Honey.make(90), OM.dust(MT.WaxBee));
                    RM.Mortar.addRecipe1(T, 16, 64, aEvent.mStack, OM.dust(MT.WaxBee));
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 22);
                }
            });
            addListener("materialWaxcomb", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Centrifuge.addRecipe1(T, 16, 64, aEvent.mStack, OM.dust(MT.WaxBee));
                    RM.Squeezer.addRecipe1(T, 16, 64, aEvent.mStack, OM.dust(MT.WaxBee));
                    RM.Juicer.addRecipe1(T, 16, 64, aEvent.mStack, OM.dust(MT.WaxBee));
                    RM.Mortar.addRecipe1(T, 16, 64, aEvent.mStack, OM.dust(MT.WaxBee));
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 22);
                }
            });
            addListener("listAlljelly", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_Purple);
                }
            });
            addListener("listAllnutbutter", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_Brown);
                }
            });
            addListener("listAllcookingoil", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_Lime);
                }
            });
            addListener("listAllyogurt", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, DYE_INDEX_White);
                }
            });
            addListener("foodFriedegg", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 43);
                }
            });
            addListener("foodBoiledegg", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.Slicer.addRecipe2(T, 16, 16, aEvent.mStack, IL.Shape_Slicer_Flat.get(0), IL.Food_Egg_Sliced.get(4));
                }
            });
            addListener("foodScrambledegg", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) (200 + DYE_INDEX_Yellow));
                }
            });
            addListener(OD.itemEgg, new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    if (FL.Water_Hot.exists())
                        RM.Bath.addRecipe1(T, 0, 128, aEvent.mStack, FL.Water_Hot.make(100), FL.Water.make(100), (ST.equal(aEvent.mStack, Items.egg) ? IL.Food_Brown_Egg_Boiled : IL.Food_White_Egg_Boiled).get(1));
                    if (FL.Water_Boiling.exists())
                        RM.Bath.addRecipe1(T, 0, 128, aEvent.mStack, FL.Water_Boiling.make(100), FL.Water.make(100), (ST.equal(aEvent.mStack, Items.egg) ? IL.Food_Brown_Egg_Boiled : IL.Food_White_Egg_Boiled).get(1));
                    RM.Bath.addRecipe1(T, 0, 128, aEvent.mStack, FL.Water_Geothermal.make(100), FL.Water.make(100), (ST.equal(aEvent.mStack, Items.egg) ? IL.Food_Brown_Egg_Boiled : IL.Food_White_Egg_Boiled).get(1));
                    RM.Autoclave.addRecipe2(T, 0, 128, aEvent.mStack, ST.tag(0), FL.Steam.make(800), FL.DistW.make(5), (ST.equal(aEvent.mStack, Items.egg) ? IL.Food_Brown_Egg_Boiled : IL.Food_White_Egg_Boiled).get(1));
                    RM.Mixer.addRecipe2(T, 16, 16, aEvent.mStack, OP.stick.mat(MT.WoodTreated, 0), IL.Food_Egg_Scrambled.get(1));
                    // There not gonna be a Squeezer Recipe!
                    RM.Juicer.addRecipe1(T, 16, 16, aEvent.mStack, IL.Food_Egg_White.get(1), IL.Food_Egg_Yolk.get(1));
                    RM.Centrifuge.addRecipe1(T, 16, 64, aEvent.mStack, IL.Food_Egg_White.get(1), IL.Food_Egg_Yolk.get(1));
                    RM.add_smelting(aEvent.mStack, IL.Food_Egg_Fried.get(1));
                }
            });
            addListener(OD.itemEgg, "foodScrambledegg", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    for (OreDictMaterial tMat : ANY.Flour.mToThis) RM.Mixer.addRecipe2(T, 16, 16, aEvent.mStack, OM.dust(tMat), IL.Food_Dough_Egg.get(1));
                }
            });
            addListener("listAllmeatraw", "foodScrapmeat", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack) || OM.is_("listAllfishraw", aEvent.mStack) || ST.container(aEvent.mStack, T) != null)
                        return;
                    OreDictItemData tData = OM.anydata_(aEvent.mStack);
                    if (tData == null) {
                        RM.Fermenter.addRecipe1(T, 16, 288, aEvent.mStack, ST.make(Items.rotten_flesh, 1, 0));
                        RM.Mortar.addRecipe1(T, 16, 16, aEvent.mStack, OM.dust(MT.MeatRaw));
                    } else if (tData.mPrefix == null) {
                        RM.Fermenter.addRecipe1(T, 16, 288, aEvent.mStack, ST.make(Items.rotten_flesh, 1, 0));
                        OreDictMaterial tMeat = MT.MeatRaw;
                        long tAmount = 0;
                        for (OreDictMaterialStack tMaterialStack : tData.getAllMaterialStacks()) {
                            if (tMaterialStack.mMaterial.contains(TD.Properties.MEAT))
                                tAmount += tMaterialStack.mAmount;
                            if (tMaterialStack.mMaterial.contains(TD.Properties.ROTTEN))
                                tMeat = MT.MeatRotten;
                        }
                        if (tAmount > 0)
                            RM.Mortar.addRecipe1(T, 16, 16, aEvent.mStack, OM.dust(tMeat, tAmount));
                    }
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 29);
                }
            });
            addListener("listAllfishraw", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack) || ST.container(aEvent.mStack, T) != null)
                        return;
                    OreDictItemData tData = OM.anydata_(aEvent.mStack);
                    RM.generify(aEvent.mStack, ST.make(Items.fish, 1, 0));
                    if (tData == null) {
                        RM.Mortar.addRecipe1(T, 16, 16, aEvent.mStack, OM.dust(MT.FishRaw));
                    } else if (tData.mPrefix == null) {
                        OreDictMaterial tMeat = MT.FishRaw;
                        long tAmount = 0;
                        for (OreDictMaterialStack tMaterialStack : tData.getAllMaterialStacks()) {
                            if (tMaterialStack.mMaterial.contains(TD.Properties.MEAT))
                                tAmount += tMaterialStack.mAmount;
                            if (tMaterialStack.mMaterial.contains(TD.Properties.ROTTEN))
                                tMeat = MT.FishRotten;
                        }
                        if (tAmount > 0)
                            RM.Mortar.addRecipe1(T, 16, 16, aEvent.mStack, OM.dust(tMeat, tAmount));
                    }
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 24);
                }
            });
            addListener("foodScrapmeat", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 4, 0, 12);
                    for (ItemStack tStack : ST.array(IL.Food_Potato_Poisonous.get(1), IL.FZ_Sludge.get(1), IL.IE_Slag.get(1), IL.TE_Slag.get(1), IL.TE_Slag_Rich.get(1))) if (ST.valid(tStack)) {
                        RM.Mixer.addRecipeX(T, 16, 256, ST.array(aEvent.mStack, ST.make(Items.fermented_spider_eye, 1, W), OM.dust(MT.MeatRotten), OM.dust(MT.Bone), IL.Food_Potato_Poisonous.get(1), IL.IC2_Scrap.get(1, ST.make(Blocks.red_mushroom, 1, W))), FL.array(FL.Purple_Drink.make(1000), FL.Oil_Fish.make(1000)), FL.Sludge.make(1000), IL.Food_Chum.get(8));
                        RM.Mixer.addRecipeX(T, 16, 256, ST.array(aEvent.mStack, ST.make(Items.fermented_spider_eye, 1, W), OM.dust(MT.FishRotten), OM.dust(MT.Bone), IL.Food_Potato_Poisonous.get(1), IL.IC2_Scrap.get(1, ST.make(Blocks.red_mushroom, 1, W))), FL.array(FL.Purple_Drink.make(1000), FL.Oil_Fish.make(1000)), FL.Sludge.make(1000), IL.Food_Chum.get(8));
                        RM.Mixer.addRecipeX(T, 16, 256, ST.array(aEvent.mStack, ST.make(Items.fermented_spider_eye, 1, W), OM.dust(MT.MeatRotten), OM.dust(MT.Bone), IL.Food_Potato_Poisonous.get(1), IL.IC2_Scrap.get(1, ST.make(Blocks.red_mushroom, 1, W))), FL.array(FL.Purple_Drink.make(1000), FL.Oil_Whale.make(500)), FL.Sludge.make(1000), IL.Food_Chum.get(8));
                        RM.Mixer.addRecipeX(T, 16, 256, ST.array(aEvent.mStack, ST.make(Items.fermented_spider_eye, 1, W), OM.dust(MT.FishRotten), OM.dust(MT.Bone), IL.Food_Potato_Poisonous.get(1), IL.IC2_Scrap.get(1, ST.make(Blocks.red_mushroom, 1, W))), FL.array(FL.Purple_Drink.make(1000), FL.Oil_Whale.make(500)), FL.Sludge.make(1000), IL.Food_Chum.get(8));
                    }
                }
            });
            addListener("listAllfishraw", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    OreDictItemData tData = OM.anydata_(aEvent.mStack);
                    if (OM.materialcontained(tData, MT.Tofu, MT.SoylentGreen))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Fish", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_FISH);
                    if (ST.container(aEvent.mStack, T) != null || ST.meta_(aEvent.mStack) == W)
                        return;
                    long tFishOilAmount = U;
                    OreDictMaterialStack tByProduct = null;
                    if (tData == null)
                        tByProduct = OM.stack(MT.FishRaw, U);
                    else
                        for (OreDictMaterialStack tMat : tData.getAllMaterialStacks()) {
                            if (tMat.mMaterial == MT.FishOil)
                                tFishOilAmount = tMat.mAmount;
                            else if (tMat.mMaterial != MT.Bone || tByProduct == null)
                                tByProduct = tMat.copy(tMat.mMaterial == MT.FishRaw ? tMat.mAmount / 2 : tMat.mAmount);
                        }
                    RM.Squeezer.addRecipe1(T, 16, 32, aEvent.mStack, NF, MT.FishOil.liquid(tFishOilAmount, F), OM.dust(tByProduct));
                    RM.Juicer.addRecipe1(T, 16, 32, aEvent.mStack, NF, MT.FishOil.liquid(tFishOilAmount / 2, F), OM.dust(tByProduct));
                }
            });
            addListener("listAllfishcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Fish", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_FISH);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 12);
                    if (!ST.isGT(aEvent.mStack) && !Sandwiches.INGREDIENTS.containsKey(aEvent.mStack, F))
                        Sandwiches.INGREDIENTS.put(aEvent.mStack, (byte) 25);
                }
            });
            addListener("listAllribraw", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Ribs", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 24);
                }
            });
            addListener("listAllribcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Ribs", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 24);
                    RM.Bath.addRecipe1(T, 0, 16, aEvent.mStack, FL.Sauce_BBQ.make(250), NF, IL.Food_Rib_BBQ.get(1));
                }
            });
            addListener("listAllbeefraw", "listAllbeefcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Beef", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 16);
                }
            });
            addListener("listAllchickenraw", "listAllchickencooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Chicken", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 12);
                }
            });
            addListener("listAllmuttonraw", "listAllmuttoncooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Mutton", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 16);
                }
            });
            addListener("listAllporkraw", "listAllporkcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Pork", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 16);
                }
            });
            addListener("listAllrabbitraw", "listAllrabbitcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Rabbit", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 12);
                }
            });
            addListener("listAllturkeyraw", "listAllturkeycooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Turkey", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 20);
                }
            });
            addListener("listAllcrabyraw", "listAllcrabcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Crab", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 12);
                }
            });
            addListener("listAllratraw", "listAllratcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Rat", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 12);
                }
            });
            addListener("listAllturtleraw", "listAllturtlecooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Turtle", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 16);
                }
            });
            addListener("listAllostrichraw", "listAllostrichcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Ostrich", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 16);
                }
            });
            addListener("listAllvenisonraw", "listAllvenisoncooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Venison", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 16);
                }
            });
            addListener("listAlltitanraw", "listAlltitancooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Titan Meat", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 8, 0, 0, 0, 16);
                }
            });
            addListener("listAllhamraw", "listAllhamcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Ham", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 24);
                }
            });
            addListener("listAllhorseraw", "listAllhorsecooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Horse", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 12);
                }
            });
            addListener("listAlldograw", "listAlldogcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Dog", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 12);
                }
            });
            addListener("foodBaconraw", "foodBaconcooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Bacon", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 0, 0, 6);
                }
            });
            addListener("listAllhydraraw", "listAllhydracooked", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (OD.listAllmeatsubstitute.is_(aEvent.mStack))
                        return;
                    RM.food_can(aEvent.mStack, Math.max(1, ST.food(aEvent.mStack)), "Canned Hydra", ST.rotten(aEvent.mStack) ? IL.CANS_ROTTEN : IL.CANS_MEAT);
                    if (!ST.isGT(aEvent.mStack))
                        FoodsGT.put(aEvent.mStack, 0, 0, 20, 0, 40);
                }
            });
            addListener("listAllmushroom", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (!ST.equal(aEvent.mStack, Blocks.brown_mushroom))
                        RM.Mixer.addRecipe2(T, 16, 16, aEvent.mStack, ST.make(Blocks.brown_mushroom, 1, W), NF, FL.Soup_Mushroom.make(1000), ZL_IS);
                }
            });
            addListener("listAllpropolis", OD.itemResin, new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    for (OreDictMaterial tMat : ANY.Ash.mToThis) {
                        RM.Mixer.addRecipeX(T, 16, 16, ST.array(ingot.mat(MT.Peat, 2), OM.dust(tMat, U * 2), aEvent.mStack), ingotDouble.mat(MT.PeatBituminous, 1));
                        RM.Mixer.addRecipeX(T, 16, 16, ST.array(dust.mat(MT.Peat, 1), OM.dust(tMat, U), aEvent.mStack), dust.mat(MT.PeatBituminous, 1));
                    }
                }
            });
            addListener(OD.itemTar, new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Mixer.addRecipe2(T, 16, 16, ingot.mat(MT.Peat, 1), aEvent.mStack, ingotDouble.mat(MT.PeatBituminous, 1));
                    RM.Mixer.addRecipe2(T, 16, 16, dust.mat(MT.Peat, 1), aEvent.mStack, dust.mat(MT.PeatBituminous, 2));
                }
            });
            addListener("dropHoney", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    if (FL.getFluid(aEvent.mStack, T) != null || OM.is_("bucketHoney", aEvent.mStack) || OM.is_("bottleHoney", aEvent.mStack))
                        return;
                    RM.Squeezer.addRecipe1(T, 16, 16, 500, aEvent.mStack, NF, FL.Honey.make(100), IL.FR_Propolis.get(1));
                    RM.Juicer.addRecipe1(T, 16, 16, 500, aEvent.mStack, NF, FL.Honey.make(100), IL.FR_Propolis.get(1));
                }
            });
            addListener("dropHoneydew", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Squeezer.addRecipe1(T, 16, 16, aEvent.mStack, NF, FL.Honeydew.make(100), ZL_IS);
                    RM.Juicer.addRecipe1(T, 16, 16, aEvent.mStack, NF, FL.Honeydew.make(100), ZL_IS);
                }
            });
            addListener("dropRoyalJelly", new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    RM.Mixer.addRecipe1(T, 16, 16, aEvent.mStack, FL.Honeydew.make(200), FL.Ambrosia.make(400), ZL_IS);
                    RM.Squeezer.addRecipe1(T, 16, 16, aEvent.mStack, NF, FL.RoyalJelly.make(100), ZL_IS);
                    RM.Juicer.addRecipe1(T, 16, 16, aEvent.mStack, NF, FL.RoyalJelly.make(100), ZL_IS);
                }
            });
        }
    };
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.RoyalJelly.make(100), FL.Honeydew.make(200)), FL.array(FL.Ambrosia.make(400)), ZL_IS);
    // ----------------------------------------------------------------------------
    RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.RoyalJelly.make(10), FL.DistW.make(1), OM.dust(MT.Sugar));
    RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.Honey.make(100), FL.DistW.make(10), OM.dust(MT.Sugar, U2));
    RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.HoneyGrC.make(100), FL.DistW.make(10), OM.dust(MT.Sugar, U2));
    RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.HoneyBoP.make(100), FL.DistW.make(10), OM.dust(MT.Sugar, U2));
    RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.Honeydew.make(100), FL.DistW.make(10), OM.dust(MT.Sugar));
    RM.Distillery.addRecipe1(T, 16, 80, ST.tag(0), FL.Juice_Reed.make(100), FL.DistW.make(50), OM.dust(MT.Sugar));
    RM.Distillery.addRecipe1(T, 16, 80, ST.tag(0), FL.Juice_Beet.make(100), FL.DistW.make(50), OM.dust(MT.Sugar));
    RM.Distillery.addRecipe1(T, 16, 80, ST.tag(0), FL.Juice_Cactus.make(100), FL.DistW.make(50), ZL_IS);
    RM.Distillery.addRecipe1(T, 16, 80, ST.tag(0), FL.Sap_Maple.make(125), FL.Syrup_Maple.make(50), FL.DistW.make(50));
    RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.Juice_Lemon.make(4), FL.Alcopops.make(2), ZL_IS);
    RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.Juice_Lime.make(4), FL.Alcopops.make(2), ZL_IS);
    RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.Juice_Potato.make(4), FL.Vodka.make(2), ZL_IS);
    RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.Rum_White.make(2), FL.Rum_Dark.make(1), ZL_IS);
    RM.Distillery.addRecipe1(T, 16, 16, ST.tag(0), FL.ShortMead.make(2), FL.Mead.make(1), ZL_IS);
    RM.Distillery.addRecipe1(F, 16, 16, ST.tag(0), FL.Vodka.make(2), FL.Vodka.make(1), ZL_IS);
    RM.Distillery.addRecipe1(F, 16, 16, ST.tag(0), FL.Rum_Dark.make(2), FL.Rum_Dark.make(1), ZL_IS);
    RM.Distillery.addRecipe1(T, T, F, F, F, 16, 80, ST.tag(0), FL.Sap.make(125), FL.DistW.make(50), OM.dust(MT.Sugar));
    RM.Distillery.addRecipe1(T, 16, 128, OM.dust(MT.Chili), FL.Sauce_Hot.make(750), FL.Sauce_Diabolo.make(750), ZL_IS);
    RM.Distillery.addRecipe1(T, 64, 128, OM.dust(MT.Chili), FL.Sauce_Diabolo.make(750), FL.Sauce_Diablo.make(750), ZL_IS);
    RM.Distillery.addRecipe1(T, 64, 128, OM.dust(MT.Gunpowder), FL.Sauce_Diablo.make(250), FL.Sauce_Snitches.make(250), ZL_IS);
    RM.Distillery.addRecipe1(T, 64, 128, OM.dust(MT.Gunpowder), FL.Lemonade.make(250), FL.Grenade_Juice.make(250), ZL_IS);
    for (FluidStack tWater : FL.waters(1000)) {
        RM.Distillery.addRecipe1(T, 16, 48, OM.dust(MT.Coffee), FL.mul(tWater, 3, 4, T), FL.make("potion.darkcoffee", 750), ZL_IS);
        RM.Distillery.addRecipe1(T, 16, 16, OM.dust(MT.Coffee, U3), FL.mul(tWater, 1, 4, T), FL.make("potion.darkcoffee", 250), ZL_IS);
        for (OreDictMaterial tMat : ANY.Flour.mToThis) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tMat), FL.mul(tWater, 1, 4, T), NF, IL.Food_Dough.get(2));
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Milk), FL.mul(tWater, 1, 2, T), FL.Milk.make(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Honey), FL.mul(tWater, 1, 2, T), FL.Honey.make(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Honeydew), FL.mul(tWater, 1, 2, T), FL.Honeydew.make(1000), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Tea, U9), FL.mul(tWater, 750, 1000, T), FL.Tea.make(750), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 36, OM.dust(MT.Tea, U4), FL.mul(tWater, 1687, 1000, T), FL.Tea.make(1687), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 144, OM.dust(MT.Tea), FL.mul(tWater, 6750, 1000, T), FL.Tea.make(6750), ZL_IS);
        RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Mg), tWater, FL.Mineralwater.make(1000), ZL_IS);
        RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Ca), tWater, FL.Mineralwater.make(1000), ZL_IS);
        RM.Injector.addRecipe0(T, 16, 16, FL.array(FL.mul(tWater, 1, 4, T), MT.CO2.gas(U4, T)), FL.Soda.make(250), ZL_IS);
    }
    RM.Injector.addRecipe0(T, 16, 16, FL.array(FL.Mineralwater.make(250), MT.CO2.gas(U4, T)), FL.Mineralsoda.make(250), ZL_IS);
    RM.Injector.addRecipe0(T, 16, 16, FL.array(FL.Slime_Green.make(250), MT.CO2.gas(U4, T)), FL.BAWLS.make(250), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Milk.make(50), FL.Milk_Spoiled.make(50), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.MilkGrC.make(50), FL.Milk_Spoiled.make(50), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Honeydew.make(50), FL.ShortMead.make(50), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Pear.make(50), FL.Cider_Pear.make(25, FL.Cider_Apple), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Peach.make(50), FL.Cider_Peach.make(25, FL.Cider_Apple), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Ananas.make(50), FL.Cider_Ananas.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Apple.make(50), FL.Cider_Apple.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_AppleGrC.make(50), FL.Cider_Apple.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.Cider_Apple.make(50), FL.Vinegar_Apple.make(10), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.make_("potion.goldenapplejuice", 50), FL.make("potion.goldencider", 25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.make_("potion.idunsapplejuice", 50), FL.make("potion.notchesbrew", 25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Mash_Rice.make(50), FL.Sake.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Mash_Wheat.make(50), FL.Whiskey_Scotch.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.Whiskey_Scotch.make(50), FL.Whiskey_GlenMcKenner.make(10), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Mash_WheatHops.make(50), FL.Beer.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Mash_Hops.make(50), FL.Beer_Dark.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.Beer_Dark.make(50), FL.Beer_Dragonblood.make(10), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Reed.make(50), FL.Rum_White.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.Rum_White.make(50), FL.Vinegar_Cane.make(10), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.Rum_Dark.make(50), FL.Vinegar_Cane.make(10), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.Sake.make(50), FL.Vinegar_Rice.make(10), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.Wine_Grape_Red.make(50), FL.Vinegar_Grape.make(10), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.Wine_Grape_White.make(50), FL.Vinegar_Grape.make(10), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.Wine_Grape_Green.make(50), FL.Vinegar_Grape.make(10), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.Wine_Grape_Purple.make(50), FL.Vinegar_Grape.make(10), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Grape_Red.make(50), FL.Wine_Grape_Red.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Grape_White.make(50), FL.Wine_Grape_White.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Grape_Green.make(50), FL.Wine_Grape_Green.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Grape_Purple.make(50), FL.Wine_Grape_Purple.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Apricot.make(50), FL.Wine_Apricot.make(25, FL.Wine_Grape_Green), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Banana.make(50), FL.Wine_Banana.make(25, FL.Wine_Grape_Green), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Carrot.make(50), FL.Wine_Carrot.make(25, FL.Wine_Grape_Green), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Cherry.make(50), FL.Wine_Cherry.make(25, FL.Wine_Grape_Green), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Lemon.make(50), FL.Wine_Lemon.make(25), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Lime.make(50), FL.Wine_Citrus.make(25, FL.Wine_Lemon), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Orange.make(50), FL.Wine_Citrus.make(25, FL.Wine_Lemon), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Kiwi.make(50), FL.Wine_Citrus.make(25, FL.Wine_Lemon), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Cranberry.make(50), FL.Wine_Cranberry.make(25, FL.Wine_Grape_Green), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Elderberry.make(50), FL.Wine_Elderberry.make(25, FL.Wine_Grape_Green), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Plum.make(50), FL.Wine_Plum.make(25, FL.Wine_Grape_Green), ZL_IS);
    RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.Juice_Tomato.make(50), FL.Wine_Tomato.make(25, FL.Wine_Grape_Green), ZL_IS);
    if (FL.Wine_Fortified.exists())
        for (String tWine : FluidsGT.WINE) if (FL.exists(tWine) && !FL.Wine_Fortified.is(tWine))
            RM.Fermenter.addRecipe1(T, 16, 128, ST.tag(0), FL.make(tWine, 50), FL.Wine_Fortified.make(10), ZL_IS);
    if (FL.Wine_Fruit.exists())
        for (String tJuice : FluidsGT.FRUIT_JUICE) if (FL.exists(tJuice))
            RM.Fermenter.addRecipe1(T, 16, 64, ST.tag(0), FL.make(tJuice, 50), FL.Wine_Fruit.make(25), ZL_IS);
    CR.remove(ST.make(Items.water_bucket, 1, 0));
    CR.remove(ST.make(Items.milk_bucket, 1, 0));
    if (FL.Sap.exists())
        RM.Drying.addRecipe0(T, 16, 200, FL.Sap.make(250), FL.DistW.make(100), OM.dust(MT.Sugar));
    RM.Drying.addRecipe0(T, 16, 200, FL.Sap_Maple.make(250), FL.DistW.make(100), OM.dust(MT.Sugar));
    RM.Drying.addRecipe0(T, 16, 100, FL.Juice_Reed.make(200), FL.DistW.make(50), OM.dust(MT.Sugar));
    RM.Drying.addRecipe0(T, 16, 100, FL.Juice_Cactus.make(200), FL.DistW.make(50), ZL_IS);
    RM.Centrifuge.addRecipe0(T, 16, 16, FL.Milk.make(50), FL.Cream.make(50), ZL_IS);
    RM.Centrifuge.addRecipe0(T, 16, 16, FL.MilkGrC.make(50), FL.Cream.make(50), ZL_IS);
    RM.Centrifuge.addRecipe0(T, 16, 16, FL.MilkSoy.make(50), FL.Cream.make(50), ZL_IS);
    RM.Centrifuge.addRecipe0(T, 16, 16, FL.Juice_Coconut.make(50), FL.Cream_Coconut.make(50), ZL_IS);
    RM.Centrifuge.addRecipe0(T, 16, 64, FL.Cream.make(250), NF, IL.Food_Butter.get(1));
    RM.Mixer.addRecipe1(T, 16, 16, OP.stick.mat(MT.WoodTreated, 0), FL.MilkSoy.make(50), FL.Cream.make(50), ZL_IS);
    RM.Mixer.addRecipe1(T, 16, 16, OP.stick.mat(MT.WoodTreated, 0), FL.Milk.make(50), FL.Cream.make(50), ZL_IS);
    RM.Mixer.addRecipe1(T, 16, 16, OP.stick.mat(MT.WoodTreated, 0), FL.MilkGrC.make(50), FL.Cream.make(50), ZL_IS);
    RM.Mixer.addRecipe1(T, 16, 16, OP.stick.mat(MT.WoodTreated, 0), FL.Juice_Coconut.make(50), FL.Cream_Coconut.make(50), ZL_IS);
    RM.Mixer.addRecipe1(T, 16, 64, OP.stick.mat(MT.WoodTreated, 0), FL.Cream.make(250), NF, IL.Food_Butter.get(1));
    ItemStack tOutput = OreDictManager.INSTANCE.getFirstOre("dropHoney", 1);
    if (ST.valid(tOutput)) {
        RM.Coagulator.addRecipe0(T, 0, 16, FL.Honey.make(200), NF, tOutput);
        RM.Coagulator.addRecipe0(T, 0, 16, FL.HoneyGrC.make(200), NF, tOutput);
        RM.Coagulator.addRecipe0(T, 0, 16, FL.HoneyBoP.make(200), NF, tOutput);
    }
    tOutput = OreDictManager.INSTANCE.getFirstOre("dropHoneydew", 1);
    if (ST.valid(tOutput))
        RM.Coagulator.addRecipe0(T, 0, 16, FL.Honeydew.make(200), NF, tOutput);
    tOutput = IL.FR_Royal_Jelly.get(1, IL.HaC_Royal_Jelly.get(1));
    if (ST.valid(tOutput))
        RM.Coagulator.addRecipe0(T, 0, 16, FL.RoyalJelly.make(100), NF, tOutput);
    if (FL.Slime_Pink.exists()) {
        tOutput = OreDictManager.INSTANCE.getFirstOre("slimeballPink", 1);
        RM.Coagulator.addRecipe0(T, 0, 256, FL.Slime_Pink.make(250), NF, ST.valid(tOutput) ? tOutput : OP.nugget.mat(MT.MeatRaw, 1));
    }
    RM.Coagulator.addRecipe0(T, 0, 256, FL.Slime_Green.make(250), NF, ST.make(Items.slime_ball, 1, 0));
    RM.Coagulator.addRecipe0(T, 0, 1024, FL.Milk.make(1000), NF, IL.Food_Cheese.get(1));
    RM.Coagulator.addRecipe0(T, 0, 1024, FL.MilkGrC.make(1000), NF, IL.Food_Cheese.get(1));
    RM.Coagulator.addRecipe0(T, 0, 1024, FL.MilkSoy.make(250), NF, OM.dust(MT.Tofu));
    RM.Smelter.addRecipe0(T, 16, 1, FL.Oil_Sunflower.make(1), FL.Oil_Frying.make(1), ZL_IS);
    RM.Smelter.addRecipe0(T, 16, 1, FL.Oil_Olive.make(1), FL.Oil_Frying.make(1), ZL_IS);
    RM.Smelter.addRecipe0(T, 16, 1, FL.Oil_Nut.make(1), FL.Oil_Frying.make(1), ZL_IS);
    RM.Smelter.addRecipe0(T, 16, 1, FL.Oil_Hemp.make(1), FL.Oil_Frying.make(1), ZL_IS);
    RM.Smelter.addRecipe0(T, 16, 1, FL.Oil_Lin.make(1), FL.Oil_Frying.make(1), ZL_IS);
    RM.Smelter.addRecipe0(T, 16, 1, FL.Oil_Seed.make(1), FL.Oil_Frying.make(1), ZL_IS);
    RM.Smelter.addRecipe0(T, 16, 1, FL.Oil_Fish.make(1), FL.Oil_Frying.make(1), ZL_IS);
    RM.Smelter.addRecipe0(T, 16, 1, FL.Oil_Whale.make(1), FL.Oil_Frying.make(1), ZL_IS);
    RM.Smelter.addRecipe0(T, 16, 1, FL.Ice.make(1), FL.Water.make(1), ZL_IS);
    for (OreDictMaterial tMat : ANY.FlourGrains.mToThis) {
        RM.Mixer.addRecipe2(T, 16, 16, OM.dust(tMat), OM.dust(MT.MeatRaw), OM.ingot(MT.MeatRaw));
        RM.Mixer.addRecipe2(T, 16, 16, OM.dust(tMat), OM.dust(MT.FishRaw), OM.ingot(MT.FishRaw));
        RM.Mixer.addRecipe2(T, 16, 16, OM.dust(tMat), OM.dust(MT.MeatRotten), OM.ingot(MT.MeatRotten));
        RM.Mixer.addRecipe2(T, 16, 16, OM.dust(tMat), OM.dust(MT.FishRotten), OM.ingot(MT.FishRotten));
    }
    RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.OatAbyssal), FL.Juice_Hellderberry.make(100), NF, IL.Food_Dough_Abyssal.get(1));
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Mash_Wheat.make(50), FL.Mash_Hops.make(50)), FL.Mash_WheatHops.make(100), ZL_IS);
    RM.Mixer.addRecipe2(T, 16, 16, OM.dust(MT.Sugar), OM.dust(MT.Cocoa), OM.dust(MT.Chocolate, U * 2));
    RM.Mixer.addRecipe2(T, 16, 16, gemChipped.mat(MT.Sugar, 4), OM.dust(MT.Cocoa), OM.dust(MT.Chocolate, U * 2));
    RM.Mixer.addRecipe2(T, 16, 16, OM.dust(MT.Sugar, U4), OM.dust(MT.Cocoa, U4), OM.dust(MT.Chocolate, U2));
    RM.Mixer.addRecipe2(T, 16, 16, gemChipped.mat(MT.Sugar, 1), OM.dust(MT.Cocoa, U4), OM.dust(MT.Chocolate, U2));
    RM.Mixer.addRecipe2(T, 16, 16, OM.dust(MT.Sugar, U9), OM.dust(MT.Cocoa, U9), OM.dust(MT.Chocolate, 2 * U9));
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Lemonade.make(125), FL.Vodka.make(125)), FL.Leninade.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Juice_Ananas.make(150), FL.Cream_Coconut.make(50), FL.Rum_White.make(50)), FL.Pina_Colada.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.make("potion.darkcoffee", 125), FL.Milk.make(125)), FL.make("potion.coffee", 250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.make("potion.darkcoffee", 125), FL.MilkGrC.make(125)), FL.make("potion.coffee", 250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.make("potion.darkcoffee", 125), FL.MilkSoy.make(125)), FL.make("potion.coffee", 250), ZL_IS);
    for (ItemStack tStack : ST.array(dust.mat(MT.NaCl, 1), dustSmall.mat(MT.NaCl, 4), dustTiny.mat(MT.NaCl, 9))) {
        RM.Mixer.addRecipe2(T, 16, 16, tStack, IL.Food_Butter.get(1), NF, NF, IL.Food_Butter_Salted.get(1));
    }
    for (ItemStack tStack : ST.array(dust.mat(MT.Milk, 1), dustSmall.mat(MT.Milk, 4), dustTiny.mat(MT.Milk, 9))) {
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.make("potion.darkcoffee", 750), FL.make("potion.coffee", 750), ZL_IS);
    }
    for (ItemStack tStack : ST.array(dust.mat(MT.Peanut, 1), dustSmall.mat(MT.Peanut, 4), dustTiny.mat(MT.Peanut, 9))) {
        RM.Mixer.addRecipe1(T, 16, 64, tStack, FL.Cream.make(250), FL.Nutbutter_Peanut.make(250), ZL_IS);
    }
    for (ItemStack tStack : ST.array(dust.mat(MT.Hazelnut, 1), dustSmall.mat(MT.Hazelnut, 4), dustTiny.mat(MT.Hazelnut, 9))) {
        RM.Mixer.addRecipe1(T, 16, 64, tStack, FL.Cream_Chocolate.make(250), FL.Cream_Nutella.make(250), ZL_IS);
    }
    for (ItemStack tStack : ST.array(dust.mat(MT.Chocolate, 1), dustSmall.mat(MT.Chocolate, 4), dustTiny.mat(MT.Chocolate, 9))) {
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.Milk.make(750), FL.make("potion.darkchocolatemilk", 750), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.MilkGrC.make(750), FL.make("potion.darkchocolatemilk", 750), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.MilkSoy.make(750), FL.make("potion.darkchocolatemilk", 750), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 64, tStack, FL.Cream.make(250), FL.Cream_Chocolate.make(250), ZL_IS);
    }
    for (ItemStack tStack : ST.array(gemChipped.mat(MT.Sugar, 4), dust.mat(MT.Sugar, 1), dustSmall.mat(MT.Sugar, 4), dustTiny.mat(MT.Sugar, 9))) {
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.make("potion.coffee", 750), FL.make("potion.cafeaulait", 750), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.make("potion.cafeaulait", 750), FL.make("potion.laitaucafe", 750), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.make("potion.darkcoffee", 750), FL.make("potion.darkcafeaulait", 750), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.make("potion.darkchocolatemilk", 750), FL.make("chocolatemilk", 750), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.Juice_Lemon.make(750), FL.Lemonade.make(750), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.Juice_Tomato.make(750), FL.Ketchup.make(750), ZL_IS);
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.Tea.make(750), FL.Tea_Sweet.make(750), ZL_IS);
    }
    for (ItemStack tStack : ST.array(dust.mat(MT.Chili, 1), dustSmall.mat(MT.Chili, 4), dustTiny.mat(MT.Chili, 9))) {
        RM.Mixer.addRecipe2(T, 16, 16, tStack, IL.Food_PotatoChips.get(1), IL.Food_ChiliChips.get(1));
        RM.Mixer.addRecipe1(T, 16, 48, tStack, FL.Sauce_Chili.make(750), FL.make("potion.hotsauce", 750), ZL_IS);
    }
    for (String tCookingOil : FluidsGT.COOKING_OIL) if (FL.exists(tCookingOil))
        for (String tVinegar : FluidsGT.VINEGAR) if (FL.exists(tVinegar)) {
            RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.NaCl), FL.array(FL.make(tCookingOil, 100), FL.make(tVinegar, 100)), FL.Dressing.make(250), ZL_IS);
            RM.Mixer.addRecipe2(T, 16, 32, OM.dust(MT.NaCl), OM.dust(MT.PepperBlack), FL.array(FL.Ketchup.make(250), FL.make(tVinegar, 125)), FL.Sauce_BBQ.make(500), ZL_IS);
        }
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Juice_Plum.make(125), FL.Juice_Apple.make(125)), FL.Med_Laxative.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Juice_Grape_White.make(125), FL.Juice_Apple.make(125)), FL.Med_Laxative.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Juice_Grape_Green.make(125), FL.Juice_Apple.make(125)), FL.Med_Laxative.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Juice_Grape_Red.make(125), FL.Juice_Apple.make(125)), FL.Med_Laxative.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Juice_Grape_Purple.make(125), FL.Juice_Apple.make(125)), FL.Med_Laxative.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Juice_Grape_White.make(125), FL.Juice_Plum.make(125)), FL.Med_Laxative.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Juice_Grape_Green.make(125), FL.Juice_Plum.make(125)), FL.Med_Laxative.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Juice_Grape_Red.make(125), FL.Juice_Plum.make(125)), FL.Med_Laxative.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Juice_Grape_Purple.make(125), FL.Juice_Plum.make(125)), FL.Med_Laxative.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Sap_Rainbow.make(125), FL.Ambrosia.make(125)), FL.Med_Heal.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice.make(125)), FL.Smoothie_Fruit.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Ananas.make(125)), FL.Smoothie_Ananas.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Apple.make(125)), FL.Smoothie_Apple.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_AppleGrC.make(125)), FL.Smoothie_Apple.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Apricot.make(125)), FL.Smoothie_Apricot.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Banana.make(125)), FL.Smoothie_Banana.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Blackberry.make(125)), FL.Smoothie_Blackberry.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Blueberry.make(125)), FL.Smoothie_Blueberry.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Cherry.make(125)), FL.Smoothie_Cherry.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Cranberry.make(125)), FL.Smoothie_Cranberry.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Currant.make(125)), FL.Smoothie_Currant.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Elderberry.make(125)), FL.Smoothie_Elderberry.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Gooseberry.make(125)), FL.Smoothie_Gooseberry.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Grape_Red.make(125)), FL.Smoothie_Grape_Red.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Grape_White.make(125)), FL.Smoothie_Grape_White.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Grape_Green.make(125)), FL.Smoothie_Grape_Green.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Grape_Purple.make(125)), FL.Smoothie_Grape_Purple.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Grapefruit.make(125)), FL.Smoothie_Grapefruit.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Kiwi.make(125)), FL.Smoothie_Kiwi.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Lemon.make(125)), FL.Smoothie_Lemon.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Lime.make(125)), FL.Smoothie_Lime.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Melon.make(125)), FL.Smoothie_Melon.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Orange.make(125)), FL.Smoothie_Orange.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Persimmon.make(125)), FL.Smoothie_Persimmon.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Peach.make(125)), FL.Smoothie_Peach.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Pear.make(125)), FL.Smoothie_Pear.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Plum.make(125)), FL.Smoothie_Plum.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Raspberry.make(125)), FL.Smoothie_Raspberry.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Strawberry.make(125)), FL.Smoothie_Strawberry.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Mango.make(125)), FL.Smoothie_Mango.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Starfruit.make(125)), FL.Smoothie_Starfruit.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Fig.make(125)), FL.Smoothie_Fig.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Pomegranate.make(125)), FL.Smoothie_Pomegranate.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Papaya.make(125)), FL.Smoothie_Papaya.make(250), ZL_IS);
    RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.Juice_Coconut.make(125)), FL.Smoothie_Coconut.make(250), ZL_IS);
    for (String tJuice : FluidsGT.FRUIT_JUICE) if (FL.exists(tJuice)) {
        RM.Mixer.addRecipe0(T, 16, 16, FL.array(FL.Ice.make(125), FL.make(tJuice, 125)), FL.Smoothie_Fruit.make(250), ZL_IS);
        RM.CryoMixer.addRecipe0(T, 16, 16, FL.array(FL.make(tJuice, 125), FL.Tea_Sweet.make(125)), FL.Tea_Ice.make(250), ZL_IS);
    }
}
Also used : OreDictMaterial(gregapi.oredict.OreDictMaterial) OreDictListenerEvent_Names(gregapi.oredict.event.OreDictListenerEvent_Names) IOreDictListenerEvent(gregapi.oredict.event.IOreDictListenerEvent) OreDictItemData(gregapi.oredict.OreDictItemData) FluidStack(net.minecraftforge.fluids.FluidStack) OreDictMaterialStack(gregapi.oredict.OreDictMaterialStack) OreDictPrefix(gregapi.oredict.OreDictPrefix) OreDictListenerEvent_TwoNames(gregapi.oredict.event.OreDictListenerEvent_TwoNames) ItemStack(net.minecraft.item.ItemStack)

Example 19 with OreDictPrefix

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

the class Loader_Ores method run.

@Override
public void run() {
    BlocksGT.oreBedrock = new PrefixBlock_(MD.GT, "gt.meta.ore.normal.bedrock", OP.oreBedrock, null, null, new Drops_None(), BlockTextureCopied.get(Blocks.bedrock, 0), Material.rock, Block.soundTypePiston, TOOL_pickaxe, -1, 3600000F, 9999, 9999, 9999, 0, 0, 0, 1, 1, 1, F, F, T, T, T, T, F, F, F, F, T, T, T, T, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSmallBedrock = new PrefixBlock_(MD.GT, "gt.meta.ore.small.bedrock", OP.oreSmall, null, null, new Drops_None(), BlockTextureCopied.get(Blocks.bedrock, 0), Material.rock, Block.soundTypePiston, TOOL_pickaxe, -1, 3600000F, 9999, 9999, 9999, 0, 0, 0, 1, 1, 1, F, F, T, T, T, T, F, F, F, F, T, T, T, T, OreDictMaterial.MATERIAL_ARRAY);
    ItemsGT.DEBUG_ITEMS.add((Block) BlocksGT.oreBedrock);
    ItemsGT.DEBUG_ITEMS.add((Block) BlocksGT.oreSmallBedrock);
    ItemsGT.ILLEGAL_DROPS.add((Block) BlocksGT.oreBedrock);
    ItemsGT.ILLEGAL_DROPS.add((Block) BlocksGT.oreSmallBedrock);
    GarbageGT.BLACKLIST.add((Block) BlocksGT.oreBedrock);
    GarbageGT.BLACKLIST.add((Block) BlocksGT.oreSmallBedrock);
    BlocksGT.oreBroken = new PrefixBlock_(MD.GT, "gt.meta.ore.broken.default", OP.oreVanillastone, null, BlockTextureCopied.get(Blocks.cobblestone, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 0.50F, 0.50F, -1, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreBrokenSandstone = new PrefixBlock_(MD.GT, "gt.meta.ore.broken.sandstone", OP.oreSandstone, null, BlockTextureCopied.get(Blocks.sandstone, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 0.30F, 0.40F, -1, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreBrokenNetherrack = new PrefixBlock_(MD.GT, "gt.meta.ore.broken.netherrack", OP.oreNetherrack, null, BlockTextureCopied.get(Blocks.netherrack, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 0.20F, 0.20F, -1, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreBrokenEndstone = new PrefixBlock_(MD.GT, "gt.meta.ore.broken.endstone", OP.oreEndstone, null, BlockTextureCopied.get(Blocks.end_stone, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 0.50F, 1.00F, -1, 0, T, T, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.ore = new PrefixBlock_(MD.GT, "gt.meta.ore.normal.default", OP.oreVanillastone, null, BlockTextureCopied.get(Blocks.stone, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 1.00F, 1.00F, 0, 0, F, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSandstone = new PrefixBlock_(MD.GT, "gt.meta.ore.normal.sandstone", OP.oreSandstone, null, BlockTextureCopied.get(Blocks.sandstone, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 0.60F, 0.80F, 0, 0, F, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreNetherrack = new PrefixBlock_(MD.GT, "gt.meta.ore.normal.netherrack", OP.oreNetherrack, null, BlockTextureCopied.get(Blocks.netherrack, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 0.50F, 0.50F, 0, 0, F, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreEndstone = new PrefixBlock_(MD.GT, "gt.meta.ore.normal.endstone", OP.oreEndstone, null, BlockTextureCopied.get(Blocks.end_stone, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 1.00F, 2.00F, 0, 0, F, T, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreGravel = new PrefixBlock_(MD.GT, "gt.meta.ore.normal.gravel", OP.oreGravel, null, BlockTextureCopied.get(Blocks.gravel, 0), Material.sand, Block.soundTypeGravel, TOOL_shovel, 0.60F, 0.80F, 0, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSand = new PrefixBlock_(MD.GT, "gt.meta.ore.normal.sand", OP.oreSand, null, BlockTextureCopied.get(Blocks.sand, 0), Material.sand, Block.soundTypeSand, TOOL_shovel, 0.40F, 0.60F, 0, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreRedSand = new PrefixBlock_(MD.GT, "gt.meta.ore.normal.redsand", OP.oreRedSand, null, BlockTextureCopied.get(Blocks.sand, 1), Material.sand, Block.soundTypeSand, TOOL_shovel, 0.40F, 0.60F, 0, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSmall = new PrefixBlock_(MD.GT, "gt.meta.ore.small.default", OP.oreSmall, new Drops_SmallOre(MT.Stone), BlockTextureCopied.get(Blocks.stone, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 1.00F, 1.00F, -1, 0, F, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSmallSandstone = new PrefixBlock_(MD.GT, "gt.meta.ore.small.sandstone", OP.oreSmall, new Drops_SmallOre(MT.Sand), BlockTextureCopied.get(Blocks.sandstone, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 0.60F, 0.80F, -1, 0, F, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSmallNetherrack = new PrefixBlock_(MD.GT, "gt.meta.ore.small.netherrack", OP.oreSmall, new Drops_SmallOre(MT.Netherrack), BlockTextureCopied.get(Blocks.netherrack, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 0.50F, 0.50F, -1, 0, F, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSmallEndstone = new PrefixBlock_(MD.GT, "gt.meta.ore.small.endstone", OP.oreSmall, new Drops_SmallOre(MT.Endstone), BlockTextureCopied.get(Blocks.end_stone, 0), Material.rock, Block.soundTypeStone, TOOL_pickaxe, 1.00F, 2.00F, -1, 0, F, T, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSmallGravel = new PrefixBlock_(MD.GT, "gt.meta.ore.small.gravel", OP.oreSmall, new Drops_SmallOre(MT.Stone), BlockTextureCopied.get(Blocks.gravel, 0), Material.sand, Block.soundTypeGravel, TOOL_shovel, 0.60F, 0.80F, -1, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSmallSand = new PrefixBlock_(MD.GT, "gt.meta.ore.small.sand", OP.oreSmall, new Drops_SmallOre(MT.Sand), BlockTextureCopied.get(Blocks.sand, 0), Material.sand, Block.soundTypeSand, TOOL_shovel, 0.40F, 0.60F, -1, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSmallRedSand = new PrefixBlock_(MD.GT, "gt.meta.ore.small.redsand", OP.oreSmall, new Drops_SmallOre(MT.RedSand), BlockTextureCopied.get(Blocks.sand, 1), Material.sand, Block.soundTypeSand, TOOL_shovel, 0.40F, 0.60F, -1, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    ((PrefixBlock) BlocksGT.ore).mDrops = new Drops(BlocksGT.oreBroken, BlocksGT.ore, OP.oreRaw.mRegisteredPrefixItems.get(0), 0, 1);
    ((PrefixBlock) BlocksGT.oreSandstone).mDrops = new Drops(BlocksGT.oreBrokenSandstone, BlocksGT.oreSandstone, OP.oreRaw.mRegisteredPrefixItems.get(0), 0, 1);
    ((PrefixBlock) BlocksGT.oreNetherrack).mDrops = new Drops(BlocksGT.oreBrokenNetherrack, BlocksGT.oreNetherrack, OP.oreRaw.mRegisteredPrefixItems.get(0), 0, 1);
    ((PrefixBlock) BlocksGT.oreEndstone).mDrops = new Drops(BlocksGT.oreBrokenEndstone, BlocksGT.oreEndstone, OP.oreRaw.mRegisteredPrefixItems.get(0), 2, 3);
    ((PrefixBlock) BlocksGT.oreGravel).mDrops = new Drops(BlocksGT.oreGravel, BlocksGT.oreGravel, OP.oreRaw.mRegisteredPrefixItems.get(0), 0, 1);
    ((PrefixBlock) BlocksGT.oreSand).mDrops = new Drops(BlocksGT.oreSand, BlocksGT.oreSand, OP.oreRaw.mRegisteredPrefixItems.get(0), 0, 1);
    ((PrefixBlock) BlocksGT.oreRedSand).mDrops = new Drops(BlocksGT.oreRedSand, BlocksGT.oreRedSand, OP.oreRaw.mRegisteredPrefixItems.get(0), 0, 1);
    BlocksGT.stoneToNormalOres.put(new ItemStackContainer(Blocks.stone, 1, 0), BlocksGT.ore);
    BlocksGT.stoneToNormalOres.put(new ItemStackContainer(Blocks.netherrack, 1, 0), BlocksGT.oreNetherrack);
    BlocksGT.stoneToNormalOres.put(new ItemStackContainer(Blocks.end_stone, 1, 0), BlocksGT.oreEndstone);
    BlocksGT.stoneToNormalOres.put(new ItemStackContainer(Blocks.gravel, 1, 0), BlocksGT.oreGravel);
    BlocksGT.stoneToNormalOres.put(new ItemStackContainer(Blocks.sandstone, 1, 0), BlocksGT.oreSandstone);
    BlocksGT.stoneToNormalOres.put(new ItemStackContainer(Blocks.sand, 1, 0), BlocksGT.oreSand);
    BlocksGT.stoneToNormalOres.put(new ItemStackContainer(Blocks.sand, 1, 1), BlocksGT.oreRedSand);
    BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(Blocks.stone, 1, 0), BlocksGT.oreBroken);
    BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(Blocks.netherrack, 1, 0), BlocksGT.oreBrokenNetherrack);
    BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(Blocks.end_stone, 1, 0), BlocksGT.oreBrokenEndstone);
    BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(Blocks.gravel, 1, 0), BlocksGT.oreGravel);
    BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(Blocks.sandstone, 1, 0), BlocksGT.oreBrokenSandstone);
    BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(Blocks.sand, 1, 0), BlocksGT.oreSand);
    BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(Blocks.sand, 1, 1), BlocksGT.oreRedSand);
    BlocksGT.stoneToSmallOres.put(new ItemStackContainer(Blocks.stone, 1, 0), BlocksGT.oreSmall);
    BlocksGT.stoneToSmallOres.put(new ItemStackContainer(Blocks.gravel, 1, 0), BlocksGT.oreSmallGravel);
    BlocksGT.stoneToSmallOres.put(new ItemStackContainer(Blocks.netherrack, 1, 0), BlocksGT.oreSmallNetherrack);
    BlocksGT.stoneToSmallOres.put(new ItemStackContainer(Blocks.end_stone, 1, 0), BlocksGT.oreSmallEndstone);
    BlocksGT.stoneToSmallOres.put(new ItemStackContainer(Blocks.sandstone, 1, 0), BlocksGT.oreSmallSandstone);
    BlocksGT.stoneToSmallOres.put(new ItemStackContainer(Blocks.sand, 1, 0), BlocksGT.oreSmallSand);
    BlocksGT.stoneToSmallOres.put(new ItemStackContainer(Blocks.sand, 1, 1), BlocksGT.oreSmallRedSand);
    BlocksGT.stoneOverridable.add(BlocksGT.ore);
    BlocksGT.drillableDynamite.add(BlocksGT.ore);
    BlocksGT.stoneOverridable.add(BlocksGT.oreNetherrack);
    BlocksGT.drillableDynamite.add(BlocksGT.oreNetherrack);
    BlocksGT.stoneOverridable.add(BlocksGT.oreEndstone);
    BlocksGT.drillableDynamite.add(BlocksGT.oreEndstone);
    BlocksGT.stoneOverridable.add(BlocksGT.oreBroken);
    BlocksGT.drillableDynamite.add(BlocksGT.oreBroken);
    BlocksGT.stoneOverridable.add(BlocksGT.oreBrokenNetherrack);
    BlocksGT.drillableDynamite.add(BlocksGT.oreBrokenNetherrack);
    BlocksGT.stoneOverridable.add(BlocksGT.oreBrokenEndstone);
    BlocksGT.drillableDynamite.add(BlocksGT.oreBrokenEndstone);
    BlocksGT.stoneOverridable.add(BlocksGT.oreSmall);
    BlocksGT.drillableDynamite.add(BlocksGT.oreSmall);
    BlocksGT.stoneOverridable.add(BlocksGT.oreSmallGravel);
    BlocksGT.drillableDynamite.add(BlocksGT.oreSmallGravel);
    BlocksGT.stoneOverridable.add(BlocksGT.oreSmallNetherrack);
    BlocksGT.drillableDynamite.add(BlocksGT.oreSmallNetherrack);
    // ====================================================================================================//
    BlocksGT.oreMud = new PrefixBlock_(MD.GT, "gt.meta.ore.normal.mud", OP.oreMud, null, BlockTextureCopied.get(BlocksGT.Diggables, 0), Material.ground, Block.soundTypeGravel, TOOL_shovel, 0.30F, 0.50F, 0, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.oreSmallMud = new PrefixBlock_(MD.GT, "gt.meta.ore.small.mud", OP.oreSmall, new Drops_SmallOre(null), BlockTextureCopied.get(BlocksGT.Diggables, 0), Material.ground, Block.soundTypeGravel, TOOL_shovel, 0.30F, 0.50F, -1, 0, T, F, OreDictMaterial.MATERIAL_ARRAY);
    BlocksGT.stoneToNormalOres.put(new ItemStackContainer(BlocksGT.Diggables, 1, 0), BlocksGT.oreMud);
    BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(BlocksGT.Diggables, 1, 0), BlocksGT.oreMud);
    BlocksGT.stoneToSmallOres.put(new ItemStackContainer(BlocksGT.Diggables, 1, 0), BlocksGT.oreSmallMud);
    ((PrefixBlock) BlocksGT.oreMud).mDrops = new Drops(BlocksGT.oreMud, BlocksGT.oreMud, OP.oreRaw.mRegisteredPrefixItems.get(0), 0, 1);
    for (Object tBlock : new Object[] { BlocksGT.ore, BlocksGT.oreSandstone, BlocksGT.oreNetherrack, BlocksGT.oreEndstone, BlocksGT.oreGravel, BlocksGT.oreMud, BlocksGT.oreSand, BlocksGT.oreRedSand, BlocksGT.oreBroken, BlocksGT.oreBrokenSandstone, BlocksGT.oreBrokenNetherrack, BlocksGT.oreBrokenEndstone, BlocksGT.oreSmall, BlocksGT.oreSmallSandstone, BlocksGT.oreSmallNetherrack, BlocksGT.oreSmallEndstone, BlocksGT.oreSmallGravel, BlocksGT.oreSmallMud, BlocksGT.oreSmallSand, BlocksGT.oreSmallRedSand }) {
        for (int i = 0; i < 10; i++) {
            GarbageGT.BLACKLIST.add((Block) tBlock, i);
            ItemsGT.ILLEGAL_DROPS.add((Block) tBlock, i);
        }
    }
    if (MD.UB.mLoaded) {
        RM.generify(ST.make(MD.UB, "igneousStone", 1, W), ST.make(Blocks.stone, 1, 0));
        RM.generify(ST.make(MD.UB, "metamorphicStone", 1, W), ST.make(Blocks.stone, 1, 0));
        RM.generify(ST.make(MD.UB, "sedimentaryStone", 1, W), ST.make(Blocks.stone, 1, 0));
        RM.generify(ST.make(MD.UB, "igneousCobblestone", 1, W), ST.make(Blocks.cobblestone, 1, 0));
        RM.generify(ST.make(MD.UB, "metamorphicCobblestone", 1, W), ST.make(Blocks.cobblestone, 1, 0));
    }
    if (MD.EB.mLoaded) {
        RM.generify(ST.make(MD.EB, "enhancedbiomes.tile.stoneEB", 1, W), ST.make(Blocks.stone, 1, 0));
        RM.generify(ST.make(MD.EB, "enhancedbiomes.tile.stoneCobbleEB", 1, W), ST.make(Blocks.cobblestone, 1, 0));
    }
    OreDictPrefix[] tPrefix;
    OreDictMaterial[] tDrops;
    tPrefix = new OreDictPrefix[] { OP.oreBasalt, OP.oreShale, OP.oreSandstone, OP.oreLimestone, OP.oreSlate, OP.oreAndesite, OP.oreMarble, OP.oreMarble, OP.oreLimestone, OP.oreGrayschist, OP.oreVanillastone, OP.oreBasalt, OP.oreVanillastone };
    tDrops = new OreDictMaterial[] { MT.STONES.Basalt, MT.STONES.Shale, MT.Sand, MT.STONES.Limestone, MT.STONES.Slate, MT.STONES.Rhyolite, MT.Chalk, MT.STONES.Marble, MT.Dolomite, MT.STONES.Grayschist, MT.STONES.Chert, MT.STONES.Gabbro, MT.STONES.Dacite };
    for (int i = 0; i < 13; i++) rockset(MD.EB, "enhancedbiomes.tile.stoneEB", i, i, "enhancedbiomes.tile.stoneCobbleEB", i, "eb.stone." + i, tPrefix[i], tDrops[i]);
    tPrefix = new OreDictPrefix[] { OP.oreVanillagranite, OP.oreBlackgranite, OP.oreAndesite, OP.oreAndesite, OP.oreBasalt, OP.oreBasalt, OP.oreKomatiite, OP.oreVanillastone };
    tDrops = new OreDictMaterial[] { MT.STONES.Granite, MT.STONES.GraniteBlack, MT.STONES.Rhyolite, MT.STONES.Andesite, MT.STONES.Gabbro, MT.STONES.Basalt, MT.STONES.Komatiite, MT.STONES.Dacite };
    for (int i = 0; i < 8; i++) rockset(MD.UB, "igneousStone", i, i + 8, "igneousCobblestone", i, "ub.igneous." + i, tPrefix[i], tDrops[i]);
    tPrefix = new OreDictPrefix[] { OP.oreGneiss, OP.oreVanillastone, OP.oreMarble, OP.oreQuartzite, OP.oreBlueschist, OP.oreGreenschist, OP.oreVanillastone, OP.oreVanillastone };
    tDrops = new OreDictMaterial[] { MT.STONES.Gneiss, MT.STONES.Eclogite, MT.STONES.Marble, MT.STONES.Quartzite, MT.STONES.Blueschist, MT.STONES.Greenschist, MT.Talc, MT.STONES.Migmatite };
    for (int i = 0; i < 8; i++) rockset(MD.UB, "metamorphicStone", i, i + 8, "metamorphicCobblestone", i, "ub.metamorphic." + i, tPrefix[i], tDrops[i]);
    tPrefix = new OreDictPrefix[] { OP.oreLimestone, OP.oreMarble, OP.oreShale, OP.oreSiltstone, OP.oreVanillastone, OP.oreLimestone, OP.oreVanillastone, OP.oreVanillastone };
    tDrops = new OreDictMaterial[] { MT.STONES.Limestone, MT.Chalk, MT.STONES.Shale, MT.STONES.Siltstone, MT.Lignite, MT.Dolomite, MT.STONES.Greywacke, MT.STONES.Chert };
    for (int i = 0; i < 8; i++) rockset(MD.UB, "sedimentaryStone", i, i + 8, "sedimentaryStone", i, "ub.sedimentary." + i, tPrefix[i], tDrops[i]);
    if (MD.PFAA.mLoaded) {
        RM.generify(ST.make(MD.PFAA, "weakStone", 1, W), ST.make(Blocks.stone, 1, 0));
        RM.generify(ST.make(MD.PFAA, "mediumStone", 1, W), ST.make(Blocks.stone, 1, 0));
        RM.generify(ST.make(MD.PFAA, "strongStone", 1, W), ST.make(Blocks.stone, 1, 0));
        RM.generify(ST.make(MD.PFAA, "veryStrongStone", 1, W), ST.make(Blocks.stone, 1, 0));
        RM.generify(ST.make(MD.PFAA, "weakRubble", 1, W), ST.make(Blocks.gravel, 1, 0));
        RM.generify(ST.make(MD.PFAA, "mediumCobble", 1, W), ST.make(Blocks.cobblestone, 1, 0));
        RM.generify(ST.make(MD.PFAA, "strongCobble", 1, W), ST.make(Blocks.cobblestone, 1, 0));
        RM.generify(ST.make(MD.PFAA, "veryStrongCobble", 1, W), ST.make(Blocks.cobblestone, 1, 0));
    }
    tPrefix = new OreDictPrefix[] { OP.oreVanillastone, OP.oreVanillastone, OP.oreVanillastone, OP.oreVanillastone, OP.oreShale };
    tDrops = new OreDictMaterial[] { MT.Stone, MT.Stone, MT.Stone, MT.Stone, MT.STONES.Shale };
    for (int i = 0; i < 5; i++) rockset(MD.PFAA, "weakStone", i, i, "weakRubble", i, "pfaa.weak." + i, tPrefix[i], tDrops[i], 0.5F, 0.5F, 0, F, F, T);
    tPrefix = new OreDictPrefix[] { OP.oreLimestone, OP.orePinkschist, OP.oreVanillastone, OP.oreVanillastone, OP.oreVanillastone };
    tDrops = new OreDictMaterial[] { MT.STONES.Limestone, MT.STONES.Pinkschist, MT.Stone, MT.STONES.Slate, MT.Stone };
    for (int i = 0; i < 5; i++) rockset(MD.PFAA, "mediumStone", i, i, "mediumCobble", i, "pfaa.medium." + i, tPrefix[i], tDrops[i], 1.0F, 1.0F, 0, F, F, T);
    tPrefix = new OreDictPrefix[] { OP.oreAndesite, OP.oreBasalt, OP.oreGneiss, OP.oreBlackgranite, OP.oreGreenschist, OP.oreMarble, OP.oreVanillastone, OP.oreAndesite, OP.oreSandstone, OP.oreSandstone };
    tDrops = new OreDictMaterial[] { MT.STONES.Andesite, MT.STONES.Basalt, MT.STONES.Gneiss, MT.STONES.GraniteBlack, MT.STONES.Greenschist, MT.STONES.Marble, MT.Stone, MT.STONES.Rhyolite, MT.Sand, MT.RedSand };
    for (int i = 0; i < 10; i++) rockset(MD.PFAA, "strongStone", i, i, "strongCobble", i, "pfaa.strong." + i, tPrefix[i], tDrops[i], 1.5F, 1.5F, 1, F, F, T);
    tPrefix = new OreDictPrefix[] { OP.oreDiorite, OP.oreBasalt, OP.oreVanillastone, OP.oreVanillastone, OP.oreQuartzite };
    tDrops = new OreDictMaterial[] { MT.STONES.Diorite, MT.STONES.Gabbro, MT.Stone, MT.Stone, MT.STONES.Quartzite };
    for (int i = 0; i < 5; i++) rockset(MD.PFAA, "veryStrongStone", i, i, "veryStrongCobble", i, "pfaa.verystrong." + i, tPrefix[i], tDrops[i], 2.0F, 2.0F, 2, F, F, T);
    rockset(MD.CHSL, "granite", 0, "chisel.granite", OP.oreVanillagranite, MT.STONES.Granite);
    rockset(MD.CHSL, "diorite", 0, "chisel.diorite", OP.oreDiorite, MT.STONES.Diorite);
    rockset(MD.CHSL, "andesite", 0, "chisel.andesite", OP.oreAndesite, MT.STONES.Andesite);
    rockset(MD.CHSL, "marble", 0, "chisel.marble", OP.oreMarble, MT.STONES.Marble);
    rockset(MD.CHSL, "limestone", 0, "chisel.limestone", OP.oreLimestone, MT.STONES.Limestone);
    rockset(MD.EtFu, "stone", 1, "etfu.granite", OP.oreVanillagranite, MT.STONES.Granite);
    rockset(MD.EtFu, "stone", 3, "etfu.diorite", OP.oreDiorite, MT.STONES.Diorite);
    rockset(MD.EtFu, "stone", 5, "etfu.andesite", OP.oreAndesite, MT.STONES.Andesite);
    rockset(MD.EtFu, "deepslate", 0, 0, "cobbled_deepslate", 0, "etfu.deepslate", OP.oreDeepslate, MT.STONES.Deepslate);
    rockset(MD.BoP, "rocks", 0, "bop.limestone", OP.oreLimestone, MT.STONES.Limestone);
    rockset(MD.BoP, "rocks", 2, "bop.siltstone", OP.oreSiltstone, MT.STONES.Siltstone);
    rockset(MD.BoP, "rocks", 4, "bop.shale", OP.oreShale, MT.STONES.Shale);
    rockset(MD.GaSu, "basalt", 0, "gasu.basalt", OP.oreBasalt, MT.STONES.Basalt);
    rockset(MD.HBM, "tile.stone_gneiss", 0, "hbm.gneiss", OP.oreGneiss, MT.STONES.Gneiss);
    rockset(MD.HBM, "tile.basalt_smooth", 0, "hbm.basalt", OP.oreBasalt, MT.STONES.Basalt);
    rockset(MD.RC, "cube", 6, "rc.abyssal", OP.oreBasalt, MT.STONES.Basalt);
    rockset(MD.RC, "cube", 7, "rc.quarried", OP.oreMarble, MT.STONES.Marble);
    rockset(MD.SC2, "BlockSlate", 0, 0, "BlockSlate", 3, "sc2.blueslate", OP.oreSlate, MT.STONES.Slate);
    rockset(MD.SC2, "BlockSlate", 1, 1, "BlockSlate", 4, "sc2.redslate", OP.oreSlate, MT.STONES.Slate);
    rockset(MD.SC2, "BlockSlate", 2, 2, "BlockSlate", 5, "sc2.blackslate", OP.oreSlate, MT.STONES.Slate);
    rockset(MD.SC2, "BlockLightSlate", 0, 0, "BlockLightSlate", 3, "sc2.lightblueslate", OP.oreSlate, MT.STONES.Slate);
    rockset(MD.SC2, "BlockLightSlate", 1, 1, "BlockLightSlate", 4, "sc2.grayslate", OP.oreSlate, MT.STONES.Slate);
    rockset(MD.SC2, "BlockLightSlate", 2, 2, "BlockLightSlate", 5, "sc2.lightredslate", OP.oreSlate, MT.STONES.Slate);
    rockset(MD.MIN, "basalt", 0, "min.basalt", OP.oreBasalt, MT.STONES.Basalt);
    rockset(MD.MIN, "granite", 0, "min.granite", OP.oreVanillagranite, MT.STONES.Granite);
    rockset(MD.MIN, "andesite", 0, "min.andesite", OP.oreAndesite, MT.STONES.Andesite);
    rockset(MD.MIN, "diorite", 0, "min.diorite", OP.oreDiorite, MT.STONES.Diorite);
    rockset(MD.MIN, "limestone", 0, "min.limestone", OP.oreLimestone, MT.STONES.Limestone);
    rockset(MD.MIN, "shale", 0, "min.shale", OP.oreShale, MT.STONES.Shale);
    rockset(MD.MIN, "slate", 0, "min.slate", OP.oreSlate, MT.STONES.Slate);
    rockset(MD.MIN, "schist", 0, "min.schist", OP.oreBlueschist, MT.STONES.Blueschist);
    rockset(MD.MIN, "gneiss", 0, "min.gneiss", OP.oreVanillastone, MT.STONES.Gneiss);
    rockset(MD.MIN, "dolomite", 0, "min.dolomite", OP.oreLimestone, MT.Dolomite);
    rockset(MD.MIN, "rhyolite", 0, "min.rhyolite", OP.oreAndesite, MT.STONES.Rhyolite);
    rockset(MD.MIN, "pumice", 0, "min.pumice", OP.oreVanillastone, MT.STONES.Pumice);
    rockset(MD.MIN, "conglomerate", 0, "min.conglomerate", OP.oreVanillastone, MT.Stone);
    rockset(MD.MIN, "pegmatite", 0, "min.pegmatite", OP.oreVanillastone, MT.Stone);
    rockset(MD.MIN, "chert", 0, "min.chert", OP.oreVanillastone, MT.STONES.Chert);
    if (MD.NePl.mLoaded) {
        rockset(MD.NePl, "Blackstone", 0, "nepl.blackstone", OP.oreBlackstone, MT.STONES.Blackstone);
        rockset(MD.NePl, "Basalt", 0, "nepl.basalt", OP.oreBasalt, MT.STONES.Basalt);
    }
    if (MD.NeLi.mLoaded) {
        rockset(MD.NeLi, "Blackstone", 0, "neli.blackstone", OP.oreBlackstone, MT.STONES.Blackstone);
        rockset(MD.NeLi, "Basalt", 0, "neli.basalt", OP.oreBasalt, MT.STONES.Basalt);
    }
    if (MD.BOTA.mLoaded) {
        rockset(MD.BOTA, ST.block(MD.BOTA, "livingrock"), 0, 0, ST.block(MD.ALF, "LivingCobble"), 0, "botania.livingrock", OP.oreLivingrock, MT.STONES.Livingrock, 1.0F, 1.0F, 0, F, F, T);
    }
    if (MD.TF.mLoaded) {
        rockset(MD.TF, "tile.TFDeadrock", 2, "twilight.deadrock", OP.oreDeadrock, MT.STONES.Deadrock);
    }
    if (MD.AETHER.mLoaded) {
        rockset(MD.AETHER, "holystone", 1, 0, "holystone", 1, "aether.holystone", OP.oreHolystone, MT.STONES.Holystone);
    }
    if (MD.ERE.mLoaded) {
        rockset(MD.ERE, "umberstone", 0, 0, "umberstone", 1, "erebus.umberstone", OP.oreUmberstone, MT.STONES.Umber);
        rockset(MD.ERE, "umberGravel", 0, "erebus.umbergravel", OP.oreUmberstone, MT.STONES.Umber, 1, 1, 0, T, F, F);
    }
    if (MD.BTL.mLoaded) {
        rockset(MD.BTL, "betweenstone", 0, "btl.betweenstone", OP.oreBetweenstone, MT.STONES.Betweenstone);
        rockset(MD.BTL, "pitstone", 0, "btl.pitstone", OP.orePitstone, MT.STONES.Pitstone);
    }
    if (MD.GC.mLoaded) {
        rockset(MD.GC, "tile.moonBlock", 3, "gc.moon.dirt", OP.oreMoon, MT.STONES.MoonRock);
        rockset(MD.GC, "tile.moonBlock", 4, "gc.moon.rock", OP.oreMoon, MT.STONES.MoonRock);
    }
    if (MD.GC_PLANETS.mLoaded) {
        rockset(MD.GC_PLANETS, "tile.mars", 9, 9, "tile.mars", 4, "gc.mars.rock", OP.oreMars, MT.STONES.MarsRock);
        rockset(MD.GC_PLANETS, "tile.mars", 6, "gc.mars.dirt", OP.oreMars, MT.STONES.MarsRock);
        rockset(MD.GC_PLANETS, "tile.asteroidsBlock", 0, "gc.asteroids.dark", OP.oreSpace, MT.STONES.SpaceRock);
        rockset(MD.GC_PLANETS, "tile.asteroidsBlock", 1, "gc.asteroids.gray", OP.oreSpace, MT.STONES.SpaceRock);
        rockset(MD.GC_PLANETS, "tile.asteroidsBlock", 2, "gc.asteroids.light", OP.oreSpace, MT.STONES.SpaceRock);
    }
    if (MD.CHSL.mLoaded) {
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.CHSL_Granite.get(1)), BlocksGT.ores_normal[5]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.CHSL_Granite.get(1)), BlocksGT.ores_broken[5]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.CHSL_Granite.get(1)), BlocksGT.ores_small[5]);
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.CHSL_Diorite.get(1)), BlocksGT.ores_normal[6]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.CHSL_Diorite.get(1)), BlocksGT.ores_broken[6]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.CHSL_Diorite.get(1)), BlocksGT.ores_small[6]);
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.CHSL_Andesite.get(1)), BlocksGT.ores_normal[7]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.CHSL_Andesite.get(1)), BlocksGT.ores_broken[7]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.CHSL_Andesite.get(1)), BlocksGT.ores_small[7]);
    }
    if (MD.EtFu.mLoaded) {
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.EtFu_Granite.get(1)), BlocksGT.ores_normal[5]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.EtFu_Granite.get(1)), BlocksGT.ores_broken[5]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.EtFu_Granite.get(1)), BlocksGT.ores_small[5]);
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.EtFu_Diorite.get(1)), BlocksGT.ores_normal[6]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.EtFu_Diorite.get(1)), BlocksGT.ores_broken[6]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.EtFu_Diorite.get(1)), BlocksGT.ores_small[6]);
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.EtFu_Andesite.get(1)), BlocksGT.ores_normal[7]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.EtFu_Andesite.get(1)), BlocksGT.ores_broken[7]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.EtFu_Andesite.get(1)), BlocksGT.ores_small[7]);
    }
    if (MD.GaSu.mLoaded) {
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.GaSu_Granite.get(1)), BlocksGT.ores_normal[5]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.GaSu_Granite.get(1)), BlocksGT.ores_broken[5]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.GaSu_Granite.get(1)), BlocksGT.ores_small[5]);
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.GaSu_Diorite.get(1)), BlocksGT.ores_normal[6]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.GaSu_Diorite.get(1)), BlocksGT.ores_broken[6]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.GaSu_Diorite.get(1)), BlocksGT.ores_small[6]);
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.GaSu_Andesite.get(1)), BlocksGT.ores_normal[7]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.GaSu_Andesite.get(1)), BlocksGT.ores_broken[7]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.GaSu_Andesite.get(1)), BlocksGT.ores_small[7]);
    }
    if (MD.BOTA.mLoaded) {
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.BOTA_Granite.get(1)), BlocksGT.ores_normal[5]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.BOTA_Granite.get(1)), BlocksGT.ores_broken[5]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.BOTA_Granite.get(1)), BlocksGT.ores_small[5]);
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.BOTA_Diorite.get(1)), BlocksGT.ores_normal[6]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.BOTA_Diorite.get(1)), BlocksGT.ores_broken[6]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.BOTA_Diorite.get(1)), BlocksGT.ores_small[6]);
        BlocksGT.stoneToNormalOres.put(new ItemStackContainer(IL.BOTA_Andesite.get(1)), BlocksGT.ores_normal[7]);
        BlocksGT.stoneToBrokenOres.put(new ItemStackContainer(IL.BOTA_Andesite.get(1)), BlocksGT.ores_broken[7]);
        BlocksGT.stoneToSmallOres.put(new ItemStackContainer(IL.BOTA_Andesite.get(1)), BlocksGT.ores_small[7]);
    }
}
Also used : OreDictMaterial(gregapi.oredict.OreDictMaterial) PrefixBlock_(gregapi.block.prefixblock.PrefixBlock_) OreDictPrefix(gregapi.oredict.OreDictPrefix) ItemStackContainer(gregapi.code.ItemStackContainer) Drops_None(gregapi.block.behaviors.Drops_None) Drops(gregapi.block.behaviors.Drops) Drops_SmallOre(gregapi.block.behaviors.Drops_SmallOre)

Example 20 with OreDictPrefix

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

the class Loader_OreProcessing method run.

@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public void run() {
    new OreDictListenerEvent_Names() {

        @Override
        public void addAllListeners() {
            final ITexture[] tStoneTextures = new ITexture[] { BlockTextureCopied.get(Blocks.stone, 0), BlockTextureCopied.get(Blocks.cobblestone, 0), BlockTextureCopied.get(Blocks.mossy_cobblestone, 0), BlockTextureCopied.get(Blocks.stonebrick, 0), BlockTextureCopied.get(Blocks.stonebrick, 1), BlockTextureCopied.get(Blocks.stonebrick, 2), BlockTextureCopied.get(Blocks.stonebrick, 3), BlockTextureCopied.get(Blocks.double_stone_slab, SIDE_TOP, 0), BlockTextureCopied.get(Blocks.double_stone_slab, SIDE_FRONT, 0) };
            addListener(OP.plate.dat(MT.Stone).toString(), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    CoverRegistry.put(aEvent.mStack, new CoverTextureMulti(T, F, SFX.MC_DIG_ROCK, tStoneTextures));
                }
            });
            addListener(OP.plate.dat(MT.Netherrack).toString(), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    CoverRegistry.put(aEvent.mStack, new CoverTextureSimple(MT.Netherrack.getTextureSolid(), SFX.MC_DIG_ROCK));
                }
            });
            addListener(OP.plate.dat(MT.NetherBrick).toString(), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    CoverRegistry.put(aEvent.mStack, new CoverTextureSimple(MT.NetherBrick.getTextureSolid(), SFX.MC_DIG_ROCK));
                }
            });
            addListener(OP.plate.dat(MT.Endstone).toString(), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    CoverRegistry.put(aEvent.mStack, new CoverTextureSimple(MT.Endstone.getTextureSolid(), SFX.MC_DIG_ROCK));
                }
            });
            addListener(OP.plate.dat(MT.Obsidian).toString(), new IOreDictListenerEvent() {

                @Override
                public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                    CoverRegistry.put(aEvent.mStack, new CoverTextureSimple(MT.Obsidian.getTextureSolid(), SFX.MC_DIG_ROCK));
                }
            });
            for (BlockBase tBlock : BlocksGT.stones) {
                final BlockStones tStone = (BlockStones) tBlock;
                final ITexture[] tTextures = new ITexture[16];
                for (int i = 0; i < tTextures.length; i++) tTextures[i] = BlockTextureDefault.get(tStone.mIcons[i]);
                addListener(OP.plate.dat(tStone.mMaterial).toString(), new IOreDictListenerEvent() {

                    @Override
                    public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                        CoverRegistry.put(aEvent.mStack, new CoverTextureMulti(T, F, SFX.MC_DIG_ROCK, tTextures));
                    }
                });
            }
        }
    };
    plate.addListener(new OreProcessing_CoversMulti((ICondition<OreDictMaterial>) ICondition.TRUE, blockSolid, blockPlate, blockIngot, casingMachine, blockDust, blockRaw));
    plateDouble.addListener(new OreProcessing_CoversMulti((ICondition<OreDictMaterial>) ICondition.TRUE, casingMachineDouble, blockPlate, blockSolid, blockIngot, blockDust, blockRaw));
    plateTriple.addListener(new OreProcessing_CoversMulti((ICondition<OreDictMaterial>) ICondition.TRUE, blockPlate, blockSolid, blockIngot, casingMachineDouble, blockDust, blockRaw));
    plateQuadruple.addListener(new OreProcessing_CoversMulti((ICondition<OreDictMaterial>) ICondition.TRUE, blockIngot, blockPlate, blockSolid, casingMachineQuadruple, blockDust, blockRaw));
    plateQuintuple.addListener(new OreProcessing_CoversMulti((ICondition<OreDictMaterial>) ICondition.TRUE, casingMachineQuadruple, blockIngot, blockPlate, blockSolid, blockDust, blockRaw));
    plateDense.addListener(new OreProcessing_CoversMulti((ICondition<OreDictMaterial>) ICondition.TRUE, casingMachineDense, blockSolid, blockPlate, blockIngot, blockDust, blockRaw));
    plateCurved.addListener(new OreProcessing_CoversMulti((ICondition<OreDictMaterial>) ICondition.TRUE, casingMachine, blockSolid, blockPlate, blockIngot, blockDust, blockRaw));
    plateGem.addListener(new OreProcessing_CoversMulti((ICondition<OreDictMaterial>) ICondition.TRUE, blockGem, blockPlateGem, blockDust, blockRaw));
    sheetGt.addListener(new OreProcessing_CoversMulti((ICondition<OreDictMaterial>) ICondition.TRUE, blockSolid, blockPlate, blockIngot, casingMachine, blockDust, blockRaw));
    foil.addListener(new OreProcessing_CoversMulti((ICondition<OreDictMaterial>) ICondition.TRUE, foil));
    rawOreChunk.addListener(new OreProcessing_Maceration(crushedTiny, 3, ANTIMATTER.NOT));
    chunk.addListener(new OreProcessing_Maceration(dust, 2, ANTIMATTER.NOT));
    rubble.addListener(new OreProcessing_Maceration(dust, 2, ANTIMATTER.NOT));
    pebbles.addListener(new OreProcessing_Maceration(dust, 2, ANTIMATTER.NOT));
    cluster.addListener(new OreProcessing_Maceration(dust, 3, ANTIMATTER.NOT));
    crushed.addListener(new OreProcessing_Maceration(dust, 1, ANTIMATTER.NOT));
    crushedTiny.addListener(new OreProcessing_Maceration(dustTiny, 1, ANTIMATTER.NOT));
    crushedPurified.addListener(new OreProcessing_Maceration(dust, 1, ANTIMATTER.NOT));
    crushedPurifiedTiny.addListener(new OreProcessing_Maceration(dustTiny, 1, ANTIMATTER.NOT));
    crushedCentrifuged.addListener(new OreProcessing_Maceration(dustTiny, 11, ANTIMATTER.NOT));
    crushedCentrifugedTiny.addListener(new OreProcessing_Maceration(dustTiny, 1, ANTIMATTER.NOT));
    chemtube.addListener(new OreProcessing_GlassTube(-1, ANTIMATTER.NOT));
    plantGtBerry.addListener(new OreProcessing_PlantSqueezing(-1, ANTIMATTER.NOT));
    plantGtTwig.addListener(new OreProcessing_PlantSqueezing(-1, ANTIMATTER.NOT));
    plantGtFiber.addListener(new OreProcessing_PlantSqueezing(-1, ANTIMATTER.NOT));
    plantGtWart.addListener(new OreProcessing_PlantSqueezing(-1, ANTIMATTER.NOT));
    plantGtBlossom.addListener(new OreProcessing_PlantSqueezing(-1, ANTIMATTER.NOT));
    String tCategory = ConfigCategories.Recipes.gregtechrecipes + ".";
    rotor.addListener(new OreProcessing_CraftFrom(1, tCategory + "rotor", new String[][] { { "YhY", "TXf", "YdY" } }, ring, plateCurved, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE)));
    toolHeadBuzzSaw.addListener(new OreProcessing_CraftFrom(1, tCategory + "toolHeadBuzzSaw", new String[][] { { "wPh", "P P", "fPx" } }, null, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    toolHeadBuzzSaw.addListener(new OreProcessing_CraftFrom(1, tCategory + "toolHeadBuzzSaw", new String[][] { { "wCh", "C C", "fCx" } }, null, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    gearGt.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "XYX", "YfY", "XYX" } }, rockGt, stone, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT, STONE, MT.Stone.NOT, MT.Bedrock.NOT)));
    gearGt.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "XYX", "YfY", "XYX" } }, stick, stone, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT, STONE, MT.Stone.NOT, MT.Bedrock.NOT)));
    gearGt.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "XYX", "YwY", "XYX" } }, stick, plate, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE)));
    gearGt.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "XYX", "YsY", "XYX" } }, stick, plank, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT, MT.Wood.NOT)));
    gearGtSmall.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " s" } }, plank, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT, MT.Wood.NOT)));
    casingMachine.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "YXX", "XwX", "XXY" } }, plate, stickLong, null, null, null, ANTIMATTER.NOT));
    casingMachineDouble.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "YXX", "XwX", "XXY" } }, plateDouble, stickLong, null, null, null, ANTIMATTER.NOT));
    casingMachineQuadruple.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "YXX", "XwX", "XXY" } }, plateQuadruple, stickLong, null, null, null, ANTIMATTER.NOT));
    casingMachineDense.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "YXX", "XwX", "XXY" } }, plateDense, stickLong, null, null, null, ANTIMATTER.NOT));
    stickLong.addListener(new OreProcessing_CraftFrom(1, tCategory + "gem2stickLong", new String[][] { { "sf", " X" } }, gemFlawless, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    stickLong.addListener(new OreProcessing_CraftFrom(2, tCategory + "gem2stickLong", new String[][] { { "sf", " X" } }, gemExquisite, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    stickLong.addListener(new OreProcessing_CraftFrom(4, tCategory + "gem2stickLong", new String[][] { { "sf", " X" } }, gemLegendary, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    stick.addListener(new OreProcessing_CraftFrom(2, tCategory + "stickLong2stick", new String[][] { { "s ", " X" } }, stickLong, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    stick.addListener(new OreProcessing_CraftFrom(1, tCategory + "gem2stick", new String[][] { { "s ", "fX" } }, gem, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    stick.addListener(new OreProcessing_CraftFrom(2, tCategory + "gem2stick", new String[][] { { "s ", "fX" } }, gemFlawless, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    stick.addListener(new OreProcessing_CraftFrom(4, tCategory + "gem2stick", new String[][] { { "s ", "fX" } }, gemExquisite, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    stick.addListener(new OreProcessing_CraftFrom(8, tCategory + "gem2stick", new String[][] { { "s ", "fX" } }, gemLegendary, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    bolt.addListener(new OreProcessing_CraftFrom(2, tCategory + "stick2bolt", new String[][] { { "s ", " S" } }, null, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT, MT.Wood.NOT)));
    screw.addListener(new OreProcessing_CraftFrom(1, tCategory + "bolt2screw", new String[][] { { "fX", "X " } }, bolt, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    round.addListener(new OreProcessing_CraftFrom(1, tCategory + "chunk2round", new String[][] { { "f ", " X" } }, chunkGt, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    wireFine.addListener(new OreProcessing_CraftFrom(1, tCategory + "foil2wireFine", new String[][] { { "Xx" } }, foil, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    wireGt01.addListener(new OreProcessing_CraftFrom(1, tCategory + "plate2wire", new String[][] { { "Px" } }, null, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    plateTiny.addListener(new OreProcessing_CraftFrom(8, tCategory + "plate2plateTiny", new String[][] { { "s ", " P" } }, null, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT, MT.Paper.NOT, MT.Wood.NOT)));
    plateGemTiny.addListener(new OreProcessing_CraftFrom(8, tCategory + "plate2plateTiny", new String[][] { { "s ", " C" } }, null, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    plateGemTiny.addListener(new OreProcessing_CraftFrom(2, tCategory + "gem2plateGem", new String[][] { { "s ", " X" } }, gemChipped, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    plateGemTiny.addListener(new OreProcessing_CraftFrom(4, tCategory + "gem2plateGem", new String[][] { { "s ", " X" } }, gemFlawed, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    plateGemTiny.addListener(new OreProcessing_CraftFrom(8, tCategory + "gem2plateGem", new String[][] { { "s ", " X" } }, gem, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    plateGem.addListener(new OreProcessing_CraftFrom(1, tCategory + "gem2plateGem", new String[][] { { "s ", " X" } }, gemFlawless, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    plateGem.addListener(new OreProcessing_CraftFrom(3, tCategory + "gem2plateGem", new String[][] { { "s ", " X" } }, gemExquisite, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    plateGem.addListener(new OreProcessing_CraftFrom(7, tCategory + "gem2plateGem", new String[][] { { "s ", " X" } }, gemLegendary, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    plateGem.addListener(new OreProcessing_CraftFrom(3, tCategory + "boule2plateGem", new String[][] { { "s ", " X" } }, bouleGt, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    minecartWheels.addListener(new OreProcessing_CraftFrom(1, tCategory + "minecartWheels", new String[][] { { " h ", "XSX", " w " } }, ring, null, null, null, null, ANTIMATTER.NOT));
    arrowGtWood.addListener(new OreProcessing_Shapeless(1, tCategory + "arrowsWooden", new Object[] { toolHeadArrow, arrowGtWood.dat(MT.Empty) }, ANTIMATTER.NOT));
    arrowGtPlastic.addListener(new OreProcessing_Shapeless(1, tCategory + "arrowsPlastic", new Object[] { toolHeadArrow, arrowGtPlastic.dat(MT.Empty) }, ANTIMATTER.NOT));
    cableGt01.addListener(new OreProcessing_Shapeless(1, null, new Object[] { wireGt01, plate.dat(MT.Rubber) }, ANTIMATTER.NOT));
    cableGt02.addListener(new OreProcessing_Shapeless(1, null, new Object[] { wireGt02, plate.dat(MT.Rubber) }, ANTIMATTER.NOT));
    chemtube.addListener(new OreProcessing_Shapeless(1, null, new Object[] { dustTiny, chemtube.mat(MT.Empty, 1) }, (ICondition<OreDictMaterial>) ICondition.TRUE));
    dustTiny.addListener(new OreProcessing_Shapeless(1, null, new Object[] { chemtube }, meltmin(DEF_ENV_TEMP)));
    toolHeadRawUniversalSpade.addListener(new OreProcessing_Shapeless(1, null, new Object[] { toolHeadShovel, OreDictToolNames.file, OreDictToolNames.saw }, new And(ANTIMATTER.NOT, COATED.NOT)));
    toolHeadRawUniversalSpade.addListener(new OreProcessing_Shapeless(1, null, new Object[] { toolHeadSpade, OreDictToolNames.file, OreDictToolNames.saw }, new And(ANTIMATTER.NOT, COATED.NOT)));
    toolHeadConstructionPickaxe.addListener(new OreProcessing_Shapeless(1, null, new Object[] { toolHeadRawPickaxe, OreDictToolNames.file, OreDictToolNames.hammer }, new And(ANTIMATTER.NOT, COATED.NOT)));
    toolHeadPickaxeGem.addListener(new OreProcessing_Shapeless(1, null, new Object[] { toolHeadRawPickaxe.dat(ANY.Steel), gemFlawed, gemFlawed, OreDictToolNames.file, OreDictToolNames.hammer, OreDictToolNames.saw }, ANTIMATTER.NOT));
    CR.shaped(OP.bolt.mat(MT.Wood, 2), RECIPE_BITS, "s ", " S", 'S', IL.Stick);
    IOreDictListenerEvent tProcessor = new OreProcessing_Ore();
    for (OreDictPrefix tPrefix : OreDictPrefix.VALUES) if (tPrefix.contains(ORE) && !tPrefix.contains(IS_CONTAINER) && tPrefix != oreBedrock && tPrefix != orePoor && tPrefix != oreSmall && tPrefix != oreRich && tPrefix != oreNormal)
        tPrefix.addListener(tProcessor);
    OreDictManager.INSTANCE.addListener(new RecyclingProcessing());
}
Also used : OreDictListenerEvent_Names(gregapi.oredict.event.OreDictListenerEvent_Names) CoverTextureSimple(gregapi.cover.covers.CoverTextureSimple) IOreDictListenerEvent(gregapi.oredict.event.IOreDictListenerEvent) OreDictPrefix(gregapi.oredict.OreDictPrefix) BlockBase(gregapi.block.BlockBase) And(gregapi.code.ICondition.And) CoverTextureMulti(gregapi.cover.covers.CoverTextureMulti) BlockStones(gregapi.block.metatype.BlockStones) ITexture(gregapi.render.ITexture) ICondition(gregapi.code.ICondition)

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