Search in sources :

Example 1 with OreDictMaterial

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

the class GT_API method onModPostInit2.

@Override
public void onModPostInit2(FMLPostInitializationEvent aEvent) {
    if (MD.IC2.mLoaded) {
        PotionsGT.ID_RADIATION = ic2.api.info.Info.POTION_RADIATION.id;
    }
    if (MD.ENVM.mLoaded) {
        PotionsGT.ID_DEHYDRATION = enviromine.EnviroPotion.dehydration.id;
        PotionsGT.ID_FROSTBITE = enviromine.EnviroPotion.frostbite.id;
        PotionsGT.ID_HEATSTROKE = enviromine.EnviroPotion.heatstroke.id;
        PotionsGT.ID_HYPOTHERMIA = enviromine.EnviroPotion.hypothermia.id;
        PotionsGT.ID_INSANITY = enviromine.EnviroPotion.insanity.id;
    }
    if (MD.IE.mLoaded) {
        PotionsGT.ID_FLAMMABLE = blusunrize.immersiveengineering.common.util.IEPotions.flammable.id;
        PotionsGT.ID_SLIPPERY = blusunrize.immersiveengineering.common.util.IEPotions.slippery.id;
        PotionsGT.ID_CONDUCTIVE = blusunrize.immersiveengineering.common.util.IEPotions.conductive.id;
        PotionsGT.ID_STICKY = blusunrize.immersiveengineering.common.util.IEPotions.sticky.id;
    }
    EnergyCompat.checkAvailabilities();
    ToolCompat.checkAvailabilities();
    ST.checkAvailabilities();
    OUT.println(getModNameForLog() + ": If the Loading Bar somehow Freezes at this Point, then you definetly ran out of Memory or permgenspace, look at the other Logs to confirm it.");
    OreDictManager.INSTANCE.onPostLoad();
    ICover tCover = new CoverRedstoneTorch();
    CoverRegistry.put(ST.make(Blocks.redstone_torch, 1, 0), tCover);
    CoverRegistry.put(ST.make(Blocks.unlit_redstone_torch, 1, 0), tCover);
    CoverRegistry.put(ST.make(Items.repeater, 1, 0), new CoverRedstoneRepeater());
    OreDictPrefix.applyAllStackSizes();
    // Doesn't fucking work, the Chisel API is pure garbage...
    // if (MD.CHSL.mLoaded) {
    // if (MD.EtFu.mLoaded) {
    // FMLInterModComms.sendRuntimeMessage(GAPI, "ChiselAPI|Carving", "variation:add", "granite|" +MD.EtFu.mID+":stone|1");
    // FMLInterModComms.sendRuntimeMessage(GAPI, "ChiselAPI|Carving", "variation:add", "diorite|" +MD.EtFu.mID+":stone|3");
    // FMLInterModComms.sendRuntimeMessage(GAPI, "ChiselAPI|Carving", "variation:add", "andesite|"+MD.EtFu.mID+":stone|5");
    // }
    // if (MD.BOTA.mLoaded) {
    // FMLInterModComms.sendRuntimeMessage(GAPI, "ChiselAPI|Carving", "variation:add", "granite|" +MD.BOTA.mID+":stone|3");
    // FMLInterModComms.sendRuntimeMessage(GAPI, "ChiselAPI|Carving", "variation:add", "diorite|" +MD.BOTA.mID+":stone|2");
    // FMLInterModComms.sendRuntimeMessage(GAPI, "ChiselAPI|Carving", "variation:add", "andesite|"+MD.BOTA.mID+":stone|0");
    // }
    // if (MD.GT.mLoaded) {
    // FMLInterModComms.sendRuntimeMessage(GAPI, "ChiselAPI|Carving", "variation:add", "granite|" +MD.GT.mID+":gt.stone.granite|0");
    // FMLInterModComms.sendRuntimeMessage(GAPI, "ChiselAPI|Carving", "variation:add", "diorite|" +MD.GT.mID+":gt.stone.diorite|0");
    // FMLInterModComms.sendRuntimeMessage(GAPI, "ChiselAPI|Carving", "variation:add", "andesite|"+MD.GT.mID+":gt.stone.andesite|0");
    // }
    // }
    // Saving the Lang File.
    LanguageHandler.save();
    if (mPlayerLogger != null)
        new Thread(mPlayerLogger).start();
    for (ICompat tCompat : ICompat.COMPAT_CLASSES) try {
        tCompat.onPostLoad(aEvent);
    } catch (Throwable e) {
        e.printStackTrace(ERR);
    }
    for (OreDictMaterial tMaterial : OreDictMaterial.MATERIAL_ARRAY) if (tMaterial != null && !tMaterial.contains(TD.Properties.INVALID_MATERIAL)) {
        if (tMaterial.mID < 10000)
            MAT_LOG.print(" ");
        if (tMaterial.mID < 1000)
            MAT_LOG.print(" ");
        if (tMaterial.mID < 100)
            MAT_LOG.print(" ");
        if (tMaterial.mID < 10)
            MAT_LOG.print(" ");
        MAT_LOG.print(tMaterial.mID);
        MAT_LOG.print(": ");
        MAT_LOG.print(tMaterial.mNameInternal);
        MAT_LOG.println();
    }
}
Also used : ICompat(gregapi.compat.ICompat) OreDictMaterial(gregapi.oredict.OreDictMaterial) CoverRedstoneRepeater(gregapi.cover.covers.CoverRedstoneRepeater) CoverRedstoneTorch(gregapi.cover.covers.CoverRedstoneTorch) ICover(gregapi.cover.ICover)

Example 2 with OreDictMaterial

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

the class PrefixBlock method onBlockExploded.

@Override
public void onBlockExploded(World aWorld, int aX, int aY, int aZ, Explosion aExplosion) {
    if (aWorld.isRemote)
        return;
    TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
    if (aTileEntity != null)
        LAST_BROKEN_TILEENTITY.set(aTileEntity);
    OreDictMaterial aMaterial = getMetaMaterial(aTileEntity);
    aWorld.setBlockToAir(aX, aY, aZ);
    if (aMaterial != null && ((mCanExplode && aMaterial.contains(TD.Properties.EXPLOSIVE)) || (mCanBurn && aMaterial.contains(TD.Properties.FLAMMABLE) && mPrefix.contains(TD.Prefix.DUST_BASED))))
        try {
            ExplosionGT.explode(aWorld, null, aX + 0.5, aY + 0.5, aZ + 0.5, ((mPrefix.mAmount > 0 ? mPrefix.mAmount : U) * 0.7F) / U, T, T);
        } catch (StackOverflowError e) {
            ERR.println("WARNING: StackOverflow during Explosion has been prevented at: " + aX + " ; " + aY + " ; " + aZ);
        }
}
Also used : ITileEntity(gregapi.tileentity.ITileEntity) TileEntity(net.minecraft.tileentity.TileEntity) OreDictMaterial(gregapi.oredict.OreDictMaterial)

Example 3 with OreDictMaterial

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

the class PrefixBlock method updateTick.

@Override
public void updateTick(World aWorld, int aX, int aY, int aZ, Random aRandom) {
    if (aWorld.isRemote || checkGravity(aWorld, aX, aY, aZ))
        return;
    TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
    OreDictMaterial aMaterial = getMetaMaterial(aTileEntity);
    if (aMaterial != null) {
        if (mCanBurn && (mPrefix.contains(TD.Prefix.DUST_BASED) || (mCanExplode && aMaterial.contains(TD.Properties.EXPLOSIVE))) && aMaterial.contains(TD.Properties.FLAMMABLE) && WD.temperature(aWorld, aX, aY, aZ) > C + 100) {
            aWorld.setBlockToAir(aX, aY, aZ);
            try {
                ExplosionGT.explode(aWorld, null, aX + 0.5, aY + 0.5, aZ + 0.5, (aMaterial.contains(TD.Properties.EXPLOSIVE) ? (mPrefix.mAmount > 0 ? mPrefix.mAmount : U) * 0.5F : (mPrefix.mAmount > 0 ? mPrefix.mAmount : U) * 0.33F) / U, T, T);
            } catch (StackOverflowError e) {
                ERR.println("WARNING: StackOverflow during Explosion has been prevented at: " + aX + " ; " + aY + " ; " + aZ);
            }
            return;
        }
        if ((mCanBurn || mCanExplode) && aMaterial.contains(TD.Atomic.ALKALI_METAL)) {
            boolean tExplode = F;
            for (byte tSide : ALL_SIDES_VALID) {
                Block tBlock = aWorld.getBlock(aX + OFFX[tSide], aY + OFFY[tSide], aZ + OFFZ[tSide]);
                if (tBlock == Blocks.water || tBlock == Blocks.flowing_water) {
                    aWorld.setBlockToAir(aX + OFFX[tSide], aY + OFFY[tSide], aZ + OFFZ[tSide]);
                    tExplode = T;
                }
            }
            if (tExplode) {
                aWorld.setBlockToAir(aX, aY, aZ);
                try {
                    ExplosionGT.explode(aWorld, null, aX + 0.5, aY + 0.5, aZ + 0.5, (aMaterial.contains(TD.Properties.EXPLOSIVE) ? (mPrefix.mAmount > 0 ? mPrefix.mAmount : U) * 0.5F : (mPrefix.mAmount > 0 ? mPrefix.mAmount : U) * 0.33F) / U, T, T);
                } catch (StackOverflowError e) {
                    ERR.println("WARNING: StackOverflow during Explosion has been prevented at: " + aX + " ; " + aY + " ; " + aZ);
                }
                return;
            }
        }
    }
}
Also used : ITileEntity(gregapi.tileentity.ITileEntity) TileEntity(net.minecraft.tileentity.TileEntity) OreDictMaterial(gregapi.oredict.OreDictMaterial) Block(net.minecraft.block.Block) IPrefixBlock(gregapi.block.IPrefixBlock)

Example 4 with OreDictMaterial

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

the class Loader_Recipes_Temporary method run.

@Override
public void run() {
    ItemStack tStack = null;
    // TODO: Graphite Electrodes are made from petroleum coke after it is mixed with coal tar pitch. They are then extruded and shaped, baked to carbonize the binder (pitch) and finally graphitized by heating it to temperatures approaching 3273K.
    RM.Extruder.addRecipe2(T, 512, 512, OP.dust.mat(MT.Graphite, 1), IL.Shape_Extruder_Rod.get(0), OP.stick.mat(MT.Graphite, 1));
    // TODO: I will keep this antiquated shit for now.
    OM.data(CR.get(tStack = OP.ingot.mat(MT.Bronze, 1), tStack, tStack, tStack, null, tStack, tStack, tStack, tStack), new OreDictItemData(MT.Bronze, 8 * U));
    OM.data(CR.get(tStack = OP.plate.mat(MT.Bronze, 1), tStack, tStack, tStack, null, tStack, tStack, tStack, tStack), new OreDictItemData(MT.Bronze, 8 * U));
    // TODO: Better Coolant Item than Lapis.
    RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Lapis, 1 * U), FL.DistW.make(1000), FL.Coolant_IC2.make(1000), ZL_IS);
    RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Lapis, 2 * U), FL.SpDew.make(1000), FL.Coolant_IC2.make(1000), ZL_IS);
    RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Lapis, 2 * U), FL.Water.make(1000), FL.Coolant_IC2.make(1000), ZL_IS);
    RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Lazurite, 1 * U), FL.DistW.make(1000), FL.Coolant_IC2.make(1000), ZL_IS);
    RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Lazurite, 2 * U), FL.SpDew.make(1000), FL.Coolant_IC2.make(1000), ZL_IS);
    RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Lazurite, 2 * U), FL.Water.make(1000), FL.Coolant_IC2.make(1000), ZL_IS);
    RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Sodalite, 1 * U), FL.DistW.make(1000), FL.Coolant_IC2.make(1000), ZL_IS);
    RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Sodalite, 2 * U), FL.SpDew.make(1000), FL.Coolant_IC2.make(1000), ZL_IS);
    RM.Injector.addRecipe1(T, 16, 16, OM.dust(MT.Sodalite, 2 * U), FL.Water.make(1000), FL.Coolant_IC2.make(1000), ZL_IS);
    if (MD.MET.mLoaded) {
        CR.delate(MD.MET, "alloyer");
        CR.delate(OP.dust.mat(MT.Au, 1));
    }
    if (MD.BbLC.mLoaded) {
        CR.delate(MD.BbLC, "item.BiblioClipboard");
        CR.shaped(ST.make(MD.BbLC, "item.BiblioClipboard", 1, 0), DEF_REV_NCC, "I F", "PPP", " W ", 'F', OD.craftingFeather, 'W', OD.pressurePlateWood, 'P', OD.paperEmpty, 'I', DYE_OREDICTS[DYE_INDEX_Black]);
    }
    if (MD.BTRS.mLoaded) {
        CR.delate(IL.BTRS_Backpack.wild(1));
        CR.shaped(IL.BTRS_Backpack.get(1), DEF_REV_NCC, "LqL", "SCS", "LPL", 'L', OD.craftingLeather, 'S', OD.itemString, 'P', OP.plate.dat(MT.Au), 'C', OD.craftingChest);
        RM.packunpack(ST.make(Items.flint, 9, 0), ST.make(MD.BTRS, "flintBlock", 1, 0));
    }
    if (MD.HEX.mLoaded) {
        RM.sawing(32, 576, F, 192, ST.make(MD.HEX, "blockHexoriumMonolithRed", 1, W), OP.plateGem.mat(MT.HexoriumRed, 16));
        RM.sawing(32, 576, F, 192, ST.make(MD.HEX, "blockHexoriumMonolithGreen", 1, W), OP.plateGem.mat(MT.HexoriumGreen, 16));
        RM.sawing(32, 576, F, 192, ST.make(MD.HEX, "blockHexoriumMonolithBlue", 1, W), OP.plateGem.mat(MT.HexoriumBlue, 16));
        RM.sawing(32, 432, F, 144, ST.make(MD.HEX, "blockHexoriumMonolithBlack", 1, W), OP.plateGem.mat(MT.HexoriumBlack, 12));
        RM.sawing(32, 432, F, 144, ST.make(MD.HEX, "blockHexoriumMonolithWhite", 1, W), OP.plateGem.mat(MT.HexoriumWhite, 12));
        RM.sawing(32, 432, F, 144, ST.make(MD.HEX, "blockHexoriumNetherMonolithRed", 1, W), OP.plateGem.mat(MT.HexoriumRed, 12));
        RM.sawing(32, 432, F, 144, ST.make(MD.HEX, "blockHexoriumNetherMonolithGreen", 1, W), OP.plateGem.mat(MT.HexoriumGreen, 12));
        RM.sawing(32, 432, F, 144, ST.make(MD.HEX, "blockHexoriumNetherMonolithBlue", 1, W), OP.plateGem.mat(MT.HexoriumBlue, 12));
        RM.sawing(32, 576, F, 192, ST.make(MD.HEX, "blockHexoriumNetherMonolithBlack", 1, W), OP.plateGem.mat(MT.HexoriumBlack, 16));
        RM.sawing(32, 576, F, 192, ST.make(MD.HEX, "blockHexoriumNetherMonolithWhite", 1, W), OP.plateGem.mat(MT.HexoriumWhite, 16));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumMonolithRed", 1, W), OP.plateGem.mat(MT.HexoriumRed, 8));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumMonolithGreen", 1, W), OP.plateGem.mat(MT.HexoriumGreen, 8));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumMonolithBlue", 1, W), OP.plateGem.mat(MT.HexoriumBlue, 8));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumMonolithBlack", 1, W), OP.plateGem.mat(MT.HexoriumBlack, 8));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumMonolithWhite", 1, W), OP.plateGem.mat(MT.HexoriumWhite, 8));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumRed", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumRed", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumGreen", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumGreen", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumBlue", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumBlue", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumBlack", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumBlack", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumWhite", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumWhite", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumDarkGray", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumDarkGray", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumGray", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumGray", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumLightGray", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumLightGray", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumOrange", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumOrange", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumYellow", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumYellow", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumLime", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumLime", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumTurquoise", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumTurquoise", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumCyan", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumCyan", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumSkyBlue", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumSkyBlue", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumPurple", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumPurple", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumMagenta", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumMagenta", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumPink", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumPink", 8, 0));
        RM.sawing(32, 288, F, 96, ST.make(MD.HEX, "blockEnergizedHexoriumRainbow", 1, W), ST.make(MD.HEX, "blockMiniEnergizedHexoriumRainbow", 8, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumRed", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumRed", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumGreen", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumGreen", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumBlue", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumBlue", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumBlack", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumBlack", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumWhite", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumWhite", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumDarkGray", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumDarkGray", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumGray", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumGray", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumLightGray", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumLightGray", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumOrange", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumOrange", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumYellow", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumYellow", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumLime", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumLime", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumTurquoise", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumTurquoise", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumCyan", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumCyan", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumSkyBlue", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumSkyBlue", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumPurple", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumPurple", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumMagenta", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumMagenta", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumPink", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumPink", 1, 0));
        RM.compact(ST.make(MD.HEX, "blockMiniEnergizedHexoriumRainbow", 8, W), ST.make(MD.HEX, "blockEnergizedHexoriumRainbow", 1, 0));
        new OreDictListenerEvent_Names() {

            @Override
            public void addAllListeners() {
                addListener(DYE_OREDICTS_MIXABLE[DYE_INDEX_Black], new IOreDictListenerEvent() {

                    @Override
                    public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                        if (ST.container(aEvent.mStack, T) == null)
                            RM.Mixer.addRecipe2(T, 16, 16, aEvent.mStack, OP.dust.mat(MT.HexoriumBlack, 1), ST.make(MD.HEX, "itemHexoriumDye", 16, 0));
                    }
                });
                addListener(DYE_OREDICTS_MIXABLE[DYE_INDEX_White], new IOreDictListenerEvent() {

                    @Override
                    public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                        if (ST.container(aEvent.mStack, T) == null)
                            RM.Mixer.addRecipe2(T, 16, 16, aEvent.mStack, OP.dust.mat(MT.HexoriumWhite, 1), ST.make(MD.HEX, "itemHexoriumDyeWhite", 16, 0));
                    }
                });
                addListener(OP.plateGem.dat(MT.HexoriumBlack), new IOreDictListenerEvent() {

                    @Override
                    public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                        RM.add_smelting(aEvent.mStack, ST.make(MD.HEX, "itemBlackHexoriumWafer", 1, 0), F, F, F);
                    }
                });
                addListener(OP.plateGem.dat(MT.HexoriumWhite), new IOreDictListenerEvent() {

                    @Override
                    public void onOreRegistration(OreDictRegistrationContainer aEvent) {
                        RM.add_smelting(aEvent.mStack, ST.make(MD.HEX, "itemWhiteHexoriumWafer", 1, 0), F, F, F);
                    }
                });
            }
        };
    }
    if (MD.HEE.mLoaded) {
        RM.biomass(ST.make(MD.HEE, "crossed_decoration", 8, W));
        RM.biomass(ST.make(MD.HEE, "death_flower", 8, W));
        RM.Squeezer.addRecipe1(T, 16, 16, ST.make(MD.HEE, "death_flower", 1, 0), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Magenta], ST.make(Items.dye, 2, DYE_INDEX_Magenta));
        RM.Juicer.addRecipe1(T, 16, 16, ST.make(MD.HEE, "death_flower", 1, 0), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Magenta], ST.make(Items.dye, 2, DYE_INDEX_Magenta));
        RM.ic2_extractor(ST.make(MD.HEE, "death_flower", 1, 0), ST.make(Items.dye, 3, DYE_INDEX_Magenta));
        RM.Squeezer.addRecipe1(T, 16, 16, ST.make(MD.HEE, "death_flower", 1, 15), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Gray], ST.make(Items.dye, 2, DYE_INDEX_Gray));
        RM.Juicer.addRecipe1(T, 16, 16, ST.make(MD.HEE, "death_flower", 1, 15), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Gray], ST.make(Items.dye, 2, DYE_INDEX_Gray));
        RM.ic2_extractor(ST.make(MD.HEE, "death_flower", 1, 15), ST.make(Items.dye, 3, DYE_INDEX_Gray));
        RM.Squeezer.addRecipe1(T, 16, 16, ST.make(MD.HEE, "crossed_decoration", 1, 6), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Orange], ST.make(Items.dye, 2, DYE_INDEX_Orange));
        RM.Juicer.addRecipe1(T, 16, 16, ST.make(MD.HEE, "crossed_decoration", 1, 6), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Orange], ST.make(Items.dye, 2, DYE_INDEX_Orange));
        RM.ic2_extractor(ST.make(MD.HEE, "crossed_decoration", 1, 6), ST.make(Items.dye, 3, DYE_INDEX_Orange));
        RM.Squeezer.addRecipe1(T, 16, 16, ST.make(MD.HEE, "crossed_decoration", 1, 13), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Purple], ST.make(Items.dye, 2, DYE_INDEX_Purple));
        RM.Juicer.addRecipe1(T, 16, 16, ST.make(MD.HEE, "crossed_decoration", 1, 13), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Purple], ST.make(Items.dye, 2, DYE_INDEX_Purple));
        RM.ic2_extractor(ST.make(MD.HEE, "crossed_decoration", 1, 13), ST.make(Items.dye, 3, DYE_INDEX_Purple));
    }
    if (MD.MO.mLoaded) {
        RM.LaserEngraver.addRecipe2(T, 16, 1000, ST.make(MD.MO, "isolinear_circuit", 1, 0), OP.plate.mat(MT.Au, 1), ST.make(MD.MO, "isolinear_circuit", 1, 1));
        for (OreDictMaterial tMat : ANY.Diamond.mToThis) RM.LaserEngraver.addRecipe2(T, 32, 1000, ST.make(MD.MO, "isolinear_circuit", 1, 1), OP.plateGem.mat(tMat, 1), ST.make(MD.MO, "isolinear_circuit", 1, 2));
        for (OreDictMaterial tMat : ANY.Emerald.mToThis) RM.LaserEngraver.addRecipe2(T, 64, 1000, ST.make(MD.MO, "isolinear_circuit", 1, 2), OP.plateGem.mat(tMat, 1), ST.make(MD.MO, "isolinear_circuit", 1, 3));
    }
    if (MD.NeLi.mLoaded) {
        CR.delate(MD.NeLi, "Chain", "ChainEfrine", "ChainGold", "ChainPowered", "ChainPoweredEfrine", "ChainPoweredGold", "EmptyLantern", "EmptyLanternEfrine", "EmptyLanternGold", "Lantern", "LanternEfrine", "LanternGold", "GlowstoneLantern", "GlowstoneLanternEfrine", "GlowstoneLanternGold", "FoxfireLantern", "FoxfireLanternEfrine", "FoxfireLanternGold", "SoulLantern", "SoulLanternEfrine", "SoulLanternGold", "RedstoneLantern", "RedstoneLanternEfrine", "RedstoneLanternGold", "RedstoneLanternOn", "RedstoneLanternEfrineOn", "RedstoneLanternGoldOn");
        CR.remove(IL.NeLi_Reed.get(1));
        CR.remove(IL.NeLi_Reed.get(1), IL.NeLi_Reed.get(1), IL.NeLi_Reed.get(1));
        CR.shaped(ST.make(Items.paper, 1, 0), DEF, "XXX", 'X', IL.NeLi_Reed);
        // HAS TO BE BEFORE REGULAR TORCHES!!!
        CR.shapeless(IL.NeLi_Bonetorch_Soul.get(4), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Soul.get(4), DEF_NCC, new Object[] { OD.flowerWither, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Soul.get(3), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Soul.get(3), DEF_NCC, new Object[] { OD.flowerWither, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Soul.get(2), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Soul.get(2), DEF_NCC, new Object[] { OD.flowerWither, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Soul.get(1), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Soul.get(1), DEF_NCC, new Object[] { OD.flowerWither, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Fox.get(4), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Powder, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Fox.get(4), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Lily, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Fox.get(3), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Powder, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Fox.get(3), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Lily, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Fox.get(2), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Powder, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Fox.get(2), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Lily, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Fox.get(1), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Powder, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Fox.get(1), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Lily, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Shadow.get(4), DEF_NCC, new Object[] { IL.NeLi_Blackstone_Crying, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Shadow.get(3), DEF_NCC, new Object[] { IL.NeLi_Blackstone_Crying, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Shadow.get(2), DEF_NCC, new Object[] { IL.NeLi_Blackstone_Crying, IL.NeLi_Bonetorch, IL.NeLi_Bonetorch });
        CR.shapeless(IL.NeLi_Bonetorch_Shadow.get(1), DEF_NCC, new Object[] { IL.NeLi_Blackstone_Crying, IL.NeLi_Bonetorch });
        // HAS TO BE BEFORE SPECIAL TORCHES!!!
        CR.shapeless(IL.NeLi_Torch_Soul.get(4), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), OD.blockTorch, OD.blockTorch, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Soul.get(4), DEF_NCC, new Object[] { OD.flowerWither, OD.blockTorch, OD.blockTorch, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Soul.get(3), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), OD.blockTorch, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Soul.get(3), DEF_NCC, new Object[] { OD.flowerWither, OD.blockTorch, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Soul.get(2), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Soul.get(2), DEF_NCC, new Object[] { OD.flowerWither, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Soul.get(1), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Soul.get(1), DEF_NCC, new Object[] { OD.flowerWither, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Fox.get(4), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Powder, OD.blockTorch, OD.blockTorch, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Fox.get(4), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Lily, OD.blockTorch, OD.blockTorch, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Fox.get(3), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Powder, OD.blockTorch, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Fox.get(3), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Lily, OD.blockTorch, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Fox.get(2), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Powder, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Fox.get(2), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Lily, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Fox.get(1), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Powder, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Fox.get(1), DEF_NCC, new Object[] { IL.NeLi_Foxfire_Lily, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Shadow.get(4), DEF_NCC, new Object[] { IL.NeLi_Blackstone_Crying, OD.blockTorch, OD.blockTorch, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Shadow.get(3), DEF_NCC, new Object[] { IL.NeLi_Blackstone_Crying, OD.blockTorch, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Shadow.get(2), DEF_NCC, new Object[] { IL.NeLi_Blackstone_Crying, OD.blockTorch, OD.blockTorch });
        CR.shapeless(IL.NeLi_Torch_Shadow.get(1), DEF_NCC, new Object[] { IL.NeLi_Blackstone_Crying, OD.blockTorch });
        CR.shaped(ST.make(MD.NeLi, "EmptyLantern", 1, 0), DEF_REV_NCC, "PTP", "P P", "PPP", 'P', OP.plateTiny.dat(ANY.Iron), 'T', OP.screw.dat(ANY.Iron));
        CR.shaped(ST.make(MD.NeLi, "EmptyLanternGold", 1, 0), DEF_REV_NCC, "PTP", "P P", "PPP", 'P', OP.plateTiny.dat(MT.Au), 'T', OP.screw.dat(MT.Au));
        CR.shaped(ST.make(MD.NeLi, "EmptyLanternEfrine", 1, 0), DEF_REV_NCC, "PTP", "P P", "PPP", 'P', OP.plateTiny.dat(MT.Efrine), 'T', OP.screw.dat(MT.Efrine));
        CR.shaped(ST.make(MD.NeLi, "Lantern", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(ANY.Iron), 'T', OP.screw.dat(ANY.Iron), 'X', OD.blockTorch);
        CR.shaped(ST.make(MD.NeLi, "LanternGold", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(MT.Au), 'T', OP.screw.dat(MT.Au), 'X', OD.blockTorch);
        CR.shaped(ST.make(MD.NeLi, "LanternEfrine", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(MT.Efrine), 'T', OP.screw.dat(MT.Efrine), 'X', OD.blockTorch);
        CR.shaped(ST.make(MD.NeLi, "GlowstoneLantern", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(ANY.Iron), 'T', OP.screw.dat(ANY.Iron), 'X', OD.glowstone);
        CR.shaped(ST.make(MD.NeLi, "GlowstoneLanternGold", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(MT.Au), 'T', OP.screw.dat(MT.Au), 'X', OD.glowstone);
        CR.shaped(ST.make(MD.NeLi, "GlowstoneLanternEfrine", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(MT.Efrine), 'T', OP.screw.dat(MT.Efrine), 'X', OD.glowstone);
        CR.shaped(ST.make(MD.NeLi, "FoxfireLantern", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(ANY.Iron), 'T', OP.screw.dat(ANY.Iron), 'X', OD.blockFoxfireTorch);
        CR.shaped(ST.make(MD.NeLi, "FoxfireLanternGold", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(MT.Au), 'T', OP.screw.dat(MT.Au), 'X', OD.blockFoxfireTorch);
        CR.shaped(ST.make(MD.NeLi, "FoxfireLanternEfrine", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(MT.Efrine), 'T', OP.screw.dat(MT.Efrine), 'X', OD.blockFoxfireTorch);
        CR.shaped(ST.make(MD.NeLi, "SoulLantern", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(ANY.Iron), 'T', OP.screw.dat(ANY.Iron), 'X', OD.blockSoulTorch);
        CR.shaped(ST.make(MD.NeLi, "SoulLanternGold", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(MT.Au), 'T', OP.screw.dat(MT.Au), 'X', OD.blockSoulTorch);
        CR.shaped(ST.make(MD.NeLi, "SoulLanternEfrine", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(MT.Efrine), 'T', OP.screw.dat(MT.Efrine), 'X', OD.blockSoulTorch);
        CR.shaped(ST.make(MD.NeLi, "ShadowLantern", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(ANY.Iron), 'T', OP.screw.dat(ANY.Iron), 'X', OD.blockShadowTorch);
        CR.shaped(ST.make(MD.NeLi, "ShadowLanternGold", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(MT.Au), 'T', OP.screw.dat(MT.Au), 'X', OD.blockShadowTorch);
        CR.shaped(ST.make(MD.NeLi, "ShadowLanternEfrine", 1, 0), DEF_REV_NCC, "PTP", "PXP", "PPP", 'P', OP.plateTiny.dat(MT.Efrine), 'T', OP.screw.dat(MT.Efrine), 'X', OD.blockShadowTorch);
        CR.shaped(ST.make(MD.NeLi, "RedstoneLantern", 1, 0), DEF_REV_NCC, "R", "L", 'L', ST.make(MD.NeLi, "GlowstoneLantern", 1, 0), 'R', OD.itemRedstone);
        CR.shaped(ST.make(MD.NeLi, "RedstoneLanternGold", 1, 0), DEF_REV_NCC, "R", "L", 'L', ST.make(MD.NeLi, "GlowstoneLanternGold", 1, 0), 'R', OD.itemRedstone);
        CR.shaped(ST.make(MD.NeLi, "RedstoneLanternEfrine", 1, 0), DEF_REV_NCC, "R", "L", 'L', ST.make(MD.NeLi, "GlowstoneLanternEfrine", 1, 0), 'R', OD.itemRedstone);
        CR.shapeless(ST.make(MD.NeLi, "Lantern", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLantern", 1, 0), OD.blockTorch });
        CR.shapeless(ST.make(MD.NeLi, "LanternGold", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLanternGold", 1, 0), OD.blockTorch });
        CR.shapeless(ST.make(MD.NeLi, "LanternEfrine", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLanternEfrine", 1, 0), OD.blockTorch });
        CR.shapeless(ST.make(MD.NeLi, "GlowstoneLantern", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLantern", 1, 0), OD.glowstone });
        CR.shapeless(ST.make(MD.NeLi, "GlowstoneLanternGold", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLanternGold", 1, 0), OD.glowstone });
        CR.shapeless(ST.make(MD.NeLi, "GlowstoneLanternEfrine", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLanternEfrine", 1, 0), OD.glowstone });
        CR.shapeless(ST.make(MD.NeLi, "FoxfireLantern", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLantern", 1, 0), OD.blockFoxfireTorch });
        CR.shapeless(ST.make(MD.NeLi, "FoxfireLanternGold", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLanternGold", 1, 0), OD.blockFoxfireTorch });
        CR.shapeless(ST.make(MD.NeLi, "FoxfireLanternEfrine", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLanternEfrine", 1, 0), OD.blockFoxfireTorch });
        CR.shapeless(ST.make(MD.NeLi, "SoulLantern", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLantern", 1, 0), OD.blockSoulTorch });
        CR.shapeless(ST.make(MD.NeLi, "SoulLanternGold", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLanternGold", 1, 0), OD.blockSoulTorch });
        CR.shapeless(ST.make(MD.NeLi, "SoulLanternEfrine", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLanternEfrine", 1, 0), OD.blockSoulTorch });
        CR.shapeless(ST.make(MD.NeLi, "ShadowLantern", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLantern", 1, 0), OD.blockShadowTorch });
        CR.shapeless(ST.make(MD.NeLi, "ShadowLanternGold", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLanternGold", 1, 0), OD.blockShadowTorch });
        CR.shapeless(ST.make(MD.NeLi, "ShadowLanternEfrine", 1, 0), DEF_NCC, new Object[] { ST.make(MD.NeLi, "EmptyLanternEfrine", 1, 0), OD.blockShadowTorch });
        CR.shaped(ST.make(MD.NeLi, "RespawnAnchor", 1, 0), DEF_REM_REV, "OOO", "GGG", "OOO", 'O', OD.cryingObsidian, 'G', OD.glowstone);
        CR.shaped(IL.NeLi_Lamp_White.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteWhite), 'G', OD.glowstone);
        CR.shaped(IL.NeLi_Lamp_Blue.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteBlue), 'G', OD.glowstone);
        CR.shaped(IL.NeLi_Lamp_Green.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteGreen), 'G', OD.glowstone);
        CR.shaped(IL.NeLi_Lamp_Yellow.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteYellow), 'G', OD.glowstone);
        CR.shaped(IL.NeLi_Lamp_Magenta.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteMagenta), 'G', OD.glowstone);
        CR.shaped(IL.NeLi_Redstone_Lamp_White.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteWhite), 'G', Blocks.redstone_lamp);
        CR.shaped(IL.NeLi_Redstone_Lamp_Blue.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteBlue), 'G', Blocks.redstone_lamp);
        CR.shaped(IL.NeLi_Redstone_Lamp_Green.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteGreen), 'G', Blocks.redstone_lamp);
        CR.shaped(IL.NeLi_Redstone_Lamp_Yellow.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteYellow), 'G', Blocks.redstone_lamp);
        CR.shaped(IL.NeLi_Redstone_Lamp_Magenta.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteMagenta), 'G', Blocks.redstone_lamp);
        CR.shaped(IL.NeLi_Redstone_Lamp_White.get(1), DEF_NCC, " R ", "RGR", " R ", 'R', OD.itemRedstone, 'G', IL.NeLi_Lamp_White);
        CR.shaped(IL.NeLi_Redstone_Lamp_Blue.get(1), DEF_NCC, " R ", "RGR", " R ", 'R', OD.itemRedstone, 'G', IL.NeLi_Lamp_Blue);
        CR.shaped(IL.NeLi_Redstone_Lamp_Green.get(1), DEF_NCC, " R ", "RGR", " R ", 'R', OD.itemRedstone, 'G', IL.NeLi_Lamp_Green);
        CR.shaped(IL.NeLi_Redstone_Lamp_Yellow.get(1), DEF_NCC, " R ", "RGR", " R ", 'R', OD.itemRedstone, 'G', IL.NeLi_Lamp_Yellow);
        CR.shaped(IL.NeLi_Redstone_Lamp_Magenta.get(1), DEF_NCC, " R ", "RGR", " R ", 'R', OD.itemRedstone, 'G', IL.NeLi_Lamp_Magenta);
        CR.shaped(IL.NeLi_Glass_White.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteWhite), 'G', OD.blockGlassColorless);
        CR.shaped(IL.NeLi_Glass_Blue.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteBlue), 'G', OD.blockGlassColorless);
        CR.shaped(IL.NeLi_Glass_Green.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteGreen), 'G', OD.blockGlassColorless);
        CR.shaped(IL.NeLi_Glass_Yellow.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteYellow), 'G', OD.blockGlassColorless);
        CR.shaped(IL.NeLi_Glass_Magenta.get(1), DEF_NCC, " F ", "FGF", " F ", 'F', OP.gem.dat(MT.FluoriteMagenta), 'G', OD.blockGlassColorless);
        for (FluidStack tWater : FL.waters(125, 100)) RM.Bath.addRecipe1(T, 0, 16, IL.NeLi_Reed.get(1), tWater, NF, ST.make(Items.paper, 1, 0));
        RM.Loom.addRecipe2(T, 16, 16, ST.tag(0), IL.NeLi_Reed.get(1), ST.make(Items.paper, 1, 0));
        RM.Squeezer.addRecipe1(T, 16, 16, 4000, IL.NeLi_Reed.get(1), NF, FL.Juice_Reed.make(10), IL.Remains_Plant.get(1));
        RM.Juicer.addRecipe1(T, 16, 16, 5000, IL.NeLi_Reed.get(1), NF, FL.Juice_Reed.make(5), IL.Remains_Plant.get(1));
        RM.Shredder.addRecipe1(T, 16, 16, IL.NeLi_Reed.get(1), IL.Remains_Plant.get(1));
        RM.pulverizing(IL.NeLi_Reed.get(1), IL.Remains_Plant.get(1), T);
        RM.Mixer.addRecipe2(T, 16, 16, IL.NeLi_Foxfire_Lily.get(1), OP.dustTiny.mat(MT.Blaze, 1), IL.NeLi_Foxfire_Powder.get(1));
        RM.Mixer.addRecipe2(T, 16, 144, IL.NeLi_Foxfire_Lily.get(9), OP.dust.mat(MT.Blaze, 1), IL.NeLi_Foxfire_Powder.get(9));
        RM.Distillery.addRecipe1(T, 16, 32, IL.NeLi_Wart_Crimson.get(1), FL.DistW.make(500), FL.Potion_Awkward.make(500), ZL_IS);
        RM.Distillery.addRecipe1(T, 16, 32, IL.NeLi_Wart_Warped.get(1), FL.DistW.make(500), FL.Potion_Thick.make(500), ZL_IS);
        RM.Distillery.addRecipe1(T, 16, 32, IL.NeLi_Wart_Warped.get(1), FL.Potion_Awkward.make(500), FL.Potion_NightVision_1.make(500), ZL_IS);
        RM.Distillery.addRecipe1(T, 16, 32, IL.NeLi_Wart_Soggy.get(1), FL.DistW.make(500), FL.Potion_Mundane.make(500), ZL_IS);
        RM.Distillery.addRecipe1(T, 16, 32, IL.NeLi_Wart_Soggy.get(1), FL.Potion_Awkward.make(500), FL.Potion_FireResistance_1.make(500), ZL_IS);
        RM.Distillery.addRecipe1(T, 16, 48, IL.NeLi_Wither_Rose.get(1), FL.Potion_Thick.make(750), FL.Potion_Harm_2.make(750), ZL_IS);
        RM.Distillery.addRecipe1(T, 16, 48, IL.NeLi_Bone_Rose.get(1), FL.Potion_Mundane.make(750), FL.Potion_Jump_1.make(750), ZL_IS);
        RM.Distillery.addRecipe1(T, 16, 48, IL.NeLi_Soul_Rose.get(1), FL.Potion_Awkward.make(250), FL.Potion_Invisibility_1.make(250), ZL_IS);
        RM.Distillery.addRecipe1(T, 16, 48, IL.NeLi_Foxfire_Powder.get(1), FL.Potion_Mundane.make(750), FL.Potion_Strength_2.make(750), ZL_IS);
        RM.Squeezer.addRecipe1(T, 16, 16, IL.NeLi_Foxfire_Lily.get(1), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Purple], ST.make(Items.dye, 1, DYE_INDEX_Purple));
        RM.Juicer.addRecipe1(T, 16, 16, IL.NeLi_Foxfire_Lily.get(1), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Purple], ST.make(Items.dye, 1, DYE_INDEX_Purple));
        RM.ic2_extractor(IL.NeLi_Foxfire_Lily.get(1), ST.make(Items.dye, 2, DYE_INDEX_Purple));
        RM.Squeezer.addRecipe1(T, 16, 16, IL.NeLi_Wither_Rose.get(1), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Black], ST.make(MD.NeLi, "dye", 1, 0));
        RM.Juicer.addRecipe1(T, 16, 16, IL.NeLi_Wither_Rose.get(1), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Black], ST.make(MD.NeLi, "dye", 1, 0));
        RM.ic2_extractor(IL.NeLi_Wither_Rose.get(1), ST.make(MD.NeLi, "dye", 2, 0));
        RM.Squeezer.addRecipe1(T, 16, 16, IL.NeLi_Gloom_Hibiscus.get(1), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Blue], ST.make(MD.NeLi, "dye", 1, 1));
        RM.Juicer.addRecipe1(T, 16, 16, IL.NeLi_Gloom_Hibiscus.get(1), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_Blue], ST.make(MD.NeLi, "dye", 1, 1));
        RM.ic2_extractor(IL.NeLi_Gloom_Hibiscus.get(1), ST.make(MD.NeLi, "dye", 2, 1));
        RM.Squeezer.addRecipe1(T, 16, 16, IL.NeLi_Bone_Rose.get(1), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_White], ST.make(MD.NeLi, "dye", 1, 2));
        RM.Juicer.addRecipe1(T, 16, 16, IL.NeLi_Bone_Rose.get(1), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_White], ST.make(MD.NeLi, "dye", 1, 2));
        RM.ic2_extractor(IL.NeLi_Bone_Rose.get(1), ST.make(MD.NeLi, "dye", 2, 2));
        RM.Squeezer.addRecipe1(T, 16, 16, IL.NeLi_Soul_Rose.get(1), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_LightBlue], ST.make(Items.dye, 1, DYE_INDEX_LightBlue));
        RM.Juicer.addRecipe1(T, 16, 16, IL.NeLi_Soul_Rose.get(1), NF, DYE_FLUIDS_FLOWER[DYE_INDEX_LightBlue], ST.make(Items.dye, 1, DYE_INDEX_LightBlue));
        RM.ic2_extractor(IL.NeLi_Soul_Rose.get(1), ST.make(Items.dye, 2, DYE_INDEX_LightBlue));
        RM.glowstone(IL.NeLi_Gloomstone.get(1), MT.Gloomstone);
        RM.compactsmash(OP.gem.mat(MT.FluoriteWhite, 1), 4, IL.NeLi_Crystal_White.get(1));
        RM.compactsmash(OP.gem.mat(MT.FluoriteBlue, 1), 4, IL.NeLi_Crystal_Blue.get(1));
        RM.compactsmash(OP.gem.mat(MT.FluoriteGreen, 1), 4, IL.NeLi_Crystal_Green.get(1));
        RM.compactsmash(OP.gem.mat(MT.FluoriteYellow, 1), 4, IL.NeLi_Crystal_Yellow.get(1));
        RM.compactsmash(OP.gem.mat(MT.FluoriteMagenta, 1), 4, IL.NeLi_Crystal_Magenta.get(1));
        RM.sawing(16, 64, F, 25, IL.NeLi_Crystal_White.get(1), OP.plateGem.mat(MT.FluoriteWhite, 4));
        RM.sawing(16, 64, F, 25, IL.NeLi_Crystal_Blue.get(1), OP.plateGem.mat(MT.FluoriteBlue, 4));
        RM.sawing(16, 64, F, 25, IL.NeLi_Crystal_Green.get(1), OP.plateGem.mat(MT.FluoriteGreen, 4));
        RM.sawing(16, 64, F, 25, IL.NeLi_Crystal_Yellow.get(1), OP.plateGem.mat(MT.FluoriteYellow, 4));
        RM.sawing(16, 64, F, 25, IL.NeLi_Crystal_Magenta.get(1), OP.plateGem.mat(MT.FluoriteMagenta, 4));
        RM.lathing(16, 64, IL.NeLi_Crystal_White.get(1), OP.stickLong.mat(MT.FluoriteWhite, 2), OM.dust(MT.FluoriteWhite, 2 * U));
        RM.lathing(16, 64, IL.NeLi_Crystal_Blue.get(1), OP.stickLong.mat(MT.FluoriteBlue, 2), OM.dust(MT.FluoriteBlue, 2 * U));
        RM.lathing(16, 64, IL.NeLi_Crystal_Green.get(1), OP.stickLong.mat(MT.FluoriteGreen, 2), OM.dust(MT.FluoriteGreen, 2 * U));
        RM.lathing(16, 64, IL.NeLi_Crystal_Yellow.get(1), OP.stickLong.mat(MT.FluoriteYellow, 2), OM.dust(MT.FluoriteYellow, 2 * U));
        RM.lathing(16, 64, IL.NeLi_Crystal_Magenta.get(1), OP.stickLong.mat(MT.FluoriteMagenta, 2), OM.dust(MT.FluoriteMagenta, 2 * U));
        RM.biomass(ST.make(MD.NeLi, "Fungus", 8, W));
        RM.biomass(ST.make(MD.NeLi, "Wartblock", 1, W));
        RM.biomass(ST.make(MD.NeLi, "Roots", 8, W));
        RM.biomass(ST.make(MD.NeLi, "NetherGrass", 8, W));
        RM.biomass(ST.make(MD.NeLi, "NetherFlowerShrub", 8, W));
        RM.biomass(ST.make(MD.NeLi, "DoublePlants", 8, W));
        RM.biomass(ST.make(MD.NeLi, "GroundCover", 8, W));
        RM.biomass(ST.make(MD.NeLi, "PotPlants", 8, W));
        RM.biomass(ST.make(MD.NeLi, "Plants", 8, W));
        RM.biomass(ST.make(MD.NeLi, "Plants2", 8, W));
        RM.biomass(ST.make(MD.NeLi, "TwistingVines", 8, W));
        RM.biomass(ST.make(MD.NeLi, "WeepingVines", 8, W));
        RM.biomass(ST.make(MD.NeLi, "Sprouts", 8, W));
        RM.biomass(ST.make(MD.NeLi, "RoastedWart", 8, W));
        RM.biomass(IL.NeLi_Wart_Crimson.wild(8));
        RM.biomass(IL.NeLi_Reed.wild(8));
        RM.biomass(IL.NeLi_Wither_Rose.wild(8));
        RM.biomass(IL.NeLi_Foxfire_Lily.wild(8));
        if (!IL.EtFu_Wart_Block_Nether.exists())
            RM.compact(ST.make(Items.nether_wart, 1, 0), 9, IL.NeLi_Wart_Block_Nether.get(1));
        RM.compact(IL.NeLi_Wart_Crimson.get(1), 9, IL.NeLi_Wart_Block_Crimson.get(1));
        RM.compact(IL.NeLi_Wart_Warped.get(1), 9, IL.NeLi_Wart_Block_Warped.get(1));
        RM.compact(IL.NeLi_Wart_Soggy.get(1), 9, IL.NeLi_Wart_Block_Soggy.get(1));
        RM.box(ST.make(Items.bowl, 1, W), IL.NeLi_Bowl_CrimsonStew.get(1), ST.make(MD.NeLi, "Fungus", 2, 0));
        RM.box(ST.make(Items.bowl, 1, W), IL.NeLi_Bowl_WarpedStew.get(1), ST.make(MD.NeLi, "Fungus", 2, 1));
        RM.box(ST.make(Items.bowl, 1, W), IL.NeLi_Bowl_FoxfireStew.get(1), ST.make(MD.NeLi, "Fungus", 2, 2));
        RM.box(ST.make(Items.bowl, 1, W), IL.NeLi_Bowl_DevilishMaize.get(1), ST.make(MD.NeLi, "DevilishMaizeSeeds", 2, 0));
        RM.add_smelting(ST.make(Items.nether_wart, 1, 0), ST.make(MD.NeLi, "RoastedWart", 1, 0), 0.05F, F, T, F);
        RM.smash(IL.NeLi_Quartz_Bricks.get(1), OP.gem.mat(MT.NetherQuartz, 4));
        RM.smash(IL.NeLi_Quartz_Smooth.get(1), OP.gem.mat(MT.NetherQuartz, 4));
        RM.smash(IL.NeLi_Quartz_Chiseled_Pillar.get(1), OP.gem.mat(MT.NetherQuartz, 4));
        RM.smash(IL.NeLi_Void_Block.get(1), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(IL.NeLi_Void_Bricks.get(1), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(IL.NeLi_Void_Smooth.get(1), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(IL.NeLi_Void_Chiseled.get(1), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(IL.NeLi_Void_Pillar.get(1), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(IL.NeLi_Void_Chiseled_Pillar.get(1), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzWall", 1, 0), OP.gem.mat(MT.NetherQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzWall", 1, 1), OP.gem.mat(MT.NetherQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzWall", 1, 2), OP.gem.mat(MT.NetherQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzWall", 1, 3), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzWall", 1, 4), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzWall", 1, 5), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzSingleSlab", 1, 0), OP.gem.mat(MT.NetherQuartz, 2));
        RM.smash(ST.make(MD.NeLi, "QuartzSingleSlab", 1, 1), OP.gem.mat(MT.NetherQuartz, 2));
        RM.smash(ST.make(MD.NeLi, "QuartzSingleSlab", 1, 2), OP.gem.mat(MT.VoidQuartz, 2));
        RM.smash(ST.make(MD.NeLi, "QuartzSingleSlab", 1, 3), OP.gem.mat(MT.VoidQuartz, 2));
        RM.smash(ST.make(MD.NeLi, "QuartzSingleSlab", 1, 4), OP.gem.mat(MT.VoidQuartz, 2));
        RM.smash(ST.make(MD.NeLi, "QuartzDoubleSlab", 1, 0), OP.gem.mat(MT.NetherQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzDoubleSlab", 1, 1), OP.gem.mat(MT.NetherQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzDoubleSlab", 1, 2), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzDoubleSlab", 1, 3), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzDoubleSlab", 1, 4), OP.gem.mat(MT.VoidQuartz, 4));
        RM.smash(ST.make(MD.NeLi, "QuartzSmoothStairs", 1, W), OP.gem.mat(MT.NetherQuartz, 6));
        RM.smash(ST.make(MD.NeLi, "QuartzBrickStairs", 1, W), OP.gem.mat(MT.NetherQuartz, 6));
        RM.smash(ST.make(MD.NeLi, "QuartzVoidSmoothStairs", 1, W), OP.gem.mat(MT.VoidQuartz, 6));
        RM.smash(ST.make(MD.NeLi, "QuartzVoidBrickStairs", 1, W), OP.gem.mat(MT.VoidQuartz, 6));
        RM.smash(ST.make(MD.NeLi, "QuartzVoidStairs", 1, W), OP.gem.mat(MT.VoidQuartz, 6));
        RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.netherbrick, 2, 0), ST.make(Items.nether_wart, 2, 0), ST.make(MD.NeLi, "Netherbricks", 1, 2));
        RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.netherbrick, 2, 0), IL.NeLi_Wart_Crimson.get(2), ST.make(MD.NeLi, "Netherbricks", 1, 2));
        RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.netherbrick, 2, 0), IL.NeLi_Wart_Warped.get(2), ST.make(MD.NeLi, "Netherbricks", 1, 5));
        RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.netherbrick, 2, 0), ST.make(MD.NeLi, "Roots", 2, 1), ST.make(MD.NeLi, "Netherbricks", 1, 5));
        RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.netherbrick, 2, 0), IL.NeLi_Wart_Soggy.get(2), ST.make(MD.NeLi, "Netherbricks", 1, 8));
        RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.netherbrick, 2, 0), ST.make(MD.NeLi, "Plants", 2, 1), ST.make(MD.NeLi, "Netherbricks", 1, 8));
        RM.pack(rockGt.mat(MT.STONES.Basalt, 4), IL.NeLi_Basalt.get(1));
        RM.pack(rockGt.mat(MT.STONES.Blackstone, 4), IL.NeLi_Blackstone.get(1));
        CR.shaped(IL.NeLi_Basalt.get(1), DEF, "XX", "XX", 'X', rockGt.dat(MT.STONES.Basalt));
        CR.shaped(IL.NeLi_Blackstone.get(1), DEF, "XX", "XX", 'X', rockGt.dat(MT.STONES.Blackstone));
    }
    if (MD.NePl.mLoaded) {
        CR.delate(MD.NePl, "SoulTorch", "NetheriteIngot", "ItemNetheriteSword", "NetheritePickaxe", "ItemNetheriteShovel", "ItemNetheriteAxe", "ItemNetheriteHoe", "NetheriteHelm", "NetheriteChest", "NetheriteLegg", "NetheriteBoots");
        if (ST.invalid(ST.make(MD.EtFu, "netherite_sword", 1, 0))) {
            RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_sword, 1, 0), MT.Netherite.liquid(2 * U4, T), NF, ST.make(MD.NePl, "ItemNetheriteSword", 1, 0));
            RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_pickaxe, 1, 0), MT.Netherite.liquid(3 * U4, T), NF, ST.make(MD.NePl, "NetheritePickaxe", 1, 0));
            RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_shovel, 1, 0), MT.Netherite.liquid(1 * U4, T), NF, ST.make(MD.NePl, "ItemNetheriteShovel", 1, 0));
            RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_axe, 1, 0), MT.Netherite.liquid(3 * U4, T), NF, ST.make(MD.NePl, "ItemNetheriteAxe", 1, 0));
            RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_hoe, 1, 0), MT.Netherite.liquid(2 * U4, T), NF, ST.make(MD.NePl, "ItemNetheriteHoe", 1, 0));
            RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_helmet, 1, 0), MT.Netherite.liquid(5 * U4, T), NF, ST.make(MD.NePl, "NetheriteHelm", 1, 0));
            RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_chestplate, 1, 0), MT.Netherite.liquid(8 * U4, T), NF, ST.make(MD.NePl, "NetheriteChest", 1, 0));
            RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_leggings, 1, 0), MT.Netherite.liquid(7 * U4, T), NF, ST.make(MD.NePl, "NetheriteLegg", 1, 0));
            RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.diamond_boots, 1, 0), MT.Netherite.liquid(4 * U4, T), NF, ST.make(MD.NePl, "NetheriteBoots", 1, 0));
        }
        RM.biomass(ST.make(MD.NePl, "WarpedFungus", 8, W));
        RM.biomass(ST.make(MD.NePl, "CrimsonFungus", 8, W));
        RM.biomass(ST.make(MD.NePl, "CrimsonRoots", 8, W));
        RM.biomass(ST.make(MD.NePl, "WarpedRoots", 8, W));
        RM.biomass(ST.make(MD.NePl, "TwistingVines", 8, W));
        RM.smash(IL.NePl_Quartz_Bricks.get(1), OP.gem.mat(MT.NetherQuartz, 4), 4);
        if (MD.NeLi.mLoaded) {
            BlocksGT.blockToDrop.put(IL.NePl_Blackstone, IL.NeLi_Blackstone.get(1));
            BlocksGT.blockToDrop.put(IL.NePl_Blackstone_Polished, IL.NeLi_Blackstone_Polished.get(1));
            BlocksGT.blockToDrop.put(IL.NePl_Blackstone_Chiseled, IL.NeLi_Blackstone_Chiseled.get(1));
            BlocksGT.blockToDrop.put(IL.NePl_Blackstone_Bricks, IL.NeLi_Blackstone_Bricks.get(1));
            BlocksGT.blockToDrop.put(IL.NePl_Blackstone_Cracked, IL.NeLi_Blackstone_Cracked.get(1));
            BlocksGT.blockToDrop.put(IL.NePl_Basalt, IL.NeLi_Basalt.get(1));
            BlocksGT.blockToDrop.put(IL.NePl_Basalt_Polished, IL.NeLi_Basalt_Polished.get(1));
            BlocksGT.blockToDrop.put(IL.NePl_Ancient_Debris, IL.Ancient_Debris.get(1));
            BlocksGT.blockToSilk.put(IL.NePl_Blackstone, IL.NeLi_Blackstone.get(1));
            BlocksGT.blockToSilk.put(IL.NePl_Blackstone_Polished, IL.NeLi_Blackstone_Polished.get(1));
            BlocksGT.blockToSilk.put(IL.NePl_Blackstone_Chiseled, IL.NeLi_Blackstone_Chiseled.get(1));
            BlocksGT.blockToSilk.put(IL.NePl_Blackstone_Bricks, IL.NeLi_Blackstone_Bricks.get(1));
            BlocksGT.blockToSilk.put(IL.NePl_Blackstone_Cracked, IL.NeLi_Blackstone_Cracked.get(1));
            BlocksGT.blockToSilk.put(IL.NePl_Basalt, IL.NeLi_Basalt.get(1));
            BlocksGT.blockToSilk.put(IL.NePl_Basalt_Polished, IL.NeLi_Basalt_Polished.get(1));
            BlocksGT.blockToSilk.put(IL.NePl_Ancient_Debris, IL.Ancient_Debris.get(1));
        } else {
            CR.shapeless(IL.NePl_Torch.get(4), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), OD.blockTorch, OD.blockTorch, OD.blockTorch, OD.blockTorch });
            CR.shapeless(IL.NePl_Torch.get(4), DEF_NCC, new Object[] { OD.flowerWither, OD.blockTorch, OD.blockTorch, OD.blockTorch, OD.blockTorch });
            CR.shapeless(IL.NePl_Torch.get(3), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), OD.blockTorch, OD.blockTorch, OD.blockTorch });
            CR.shapeless(IL.NePl_Torch.get(3), DEF_NCC, new Object[] { OD.flowerWither, OD.blockTorch, OD.blockTorch, OD.blockTorch });
            CR.shapeless(IL.NePl_Torch.get(2), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), OD.blockTorch, OD.blockTorch });
            CR.shapeless(IL.NePl_Torch.get(2), DEF_NCC, new Object[] { OD.flowerWither, OD.blockTorch, OD.blockTorch });
            CR.shapeless(IL.NePl_Torch.get(1), DEF_NCC, new Object[] { OP.dust.dat(MT.SoulSand), OD.blockTorch });
            CR.shapeless(IL.NePl_Torch.get(1), DEF_NCC, new Object[] { OD.flowerWither, OD.blockTorch });
            RM.Boxinator.addRecipe2(T, 16, 16, ST.make(Items.netherbrick, 2, 0), ST.make(Items.nether_wart, 2, 0), ST.make(MD.NePl, "RedBricks", 1, 0));
            RM.pack(rockGt.mat(MT.STONES.Basalt, 4), IL.NePl_Basalt.get(1));
            RM.pack(rockGt.mat(MT.STONES.Blackstone, 4), IL.NePl_Blackstone.get(1));
            CR.shaped(IL.NePl_Basalt.get(1), DEF, "XX", "XX", 'X', rockGt.dat(MT.STONES.Basalt));
            CR.shaped(IL.NePl_Blackstone.get(1), DEF, "XX", "XX", 'X', rockGt.dat(MT.STONES.Blackstone));
        }
    }
    if (MD.PFAA.mLoaded) {
        RM.generify(ST.make(MD.PFAA, "earthyClump", 1, 45), ST.make(Items.clay_ball, 1, 0));
        RM.generify(ST.make(MD.PFAA, "earthyClump", 1, 47), ST.make(Items.clay_ball, 1, 0));
        RM.generify(ST.make(MD.PFAA, "earthyClump", 1, 48), ST.make(Items.clay_ball, 1, 0));
        RM.generify(ST.make(MD.PFAA, "earthyClump", 1, 49), ST.make(Items.clay_ball, 1, 0));
        RM.add_smelting(ST.make(MD.PFAA, "earthyClump", 1, 45), ST.make(Items.brick, 1, 0), F, F, T);
        RM.add_smelting(ST.make(MD.PFAA, "earthyClump", 1, 47), ST.make(Items.brick, 1, 0), F, F, T);
        RM.add_smelting(ST.make(MD.PFAA, "earthyClump", 1, 48), ST.make(Items.brick, 1, 0), F, F, T);
        RM.add_smelting(ST.make(MD.PFAA, "earthyClump", 1, 49), ST.make(Items.brick, 1, 0), F, F, T);
        CR.shaped(OP.plate.mat(MT.ClayBrown, 1), CR.DEF_NCC, "R", "C", 'R', OreDictToolNames.rollingpin, 'C', ST.make(MD.PFAA, "earthyClump", 4, 45));
        CR.shaped(OP.plate.mat(MT.Bentonite, 1), CR.DEF_NCC, "R", "C", 'R', OreDictToolNames.rollingpin, 'C', ST.make(MD.PFAA, "earthyClump", 4, 47));
        CR.shaped(OP.plate.mat(MT.Palygorskite, 1), CR.DEF_NCC, "R", "C", 'R', OreDictToolNames.rollingpin, 'C', ST.make(MD.PFAA, "earthyClump", 4, 48));
        CR.shaped(OP.plate.mat(MT.Kaolinite, 1), CR.DEF_NCC, "R", "C", 'R', OreDictToolNames.rollingpin, 'C', ST.make(MD.PFAA, "earthyClump", 4, 49));
        CR.shapeless(ST.make(MD.PFAA, "earthyClump", 4, 45), CR.DEF_NCC, new Object[] { ST.make(MD.PFAA, "weakClay", 1, 0) });
        CR.shapeless(ST.make(MD.PFAA, "earthyClump", 4, 47), CR.DEF_NCC, new Object[] { ST.make(MD.PFAA, "weakOreClay", 1, 1) });
        CR.shapeless(ST.make(MD.PFAA, "earthyClump", 4, 48), CR.DEF_NCC, new Object[] { ST.make(MD.PFAA, "weakOreClay", 1, 2) });
        CR.shapeless(ST.make(MD.PFAA, "earthyClump", 4, 49), CR.DEF_NCC, new Object[] { ST.make(MD.PFAA, "weakOreClay", 1, 3) });
        RM.packunpack(ST.make(MD.PFAA, "earthyClump", 4, 45), ST.make(MD.PFAA, "weakClay", 1, 0));
        RM.packunpack(ST.make(MD.PFAA, "earthyClump", 4, 47), ST.make(MD.PFAA, "weakOreClay", 1, 1));
        RM.packunpack(ST.make(MD.PFAA, "earthyClump", 4, 48), ST.make(MD.PFAA, "weakOreClay", 1, 2));
        RM.packunpack(ST.make(MD.PFAA, "earthyClump", 4, 49), ST.make(MD.PFAA, "weakOreClay", 1, 3));
        RM.RollingMill.addRecipe1(T, 16, 32, ST.make(MD.PFAA, "earthyClump", 1, 45), OP.plate.mat(MT.ClayBrown, 1));
        RM.RollingMill.addRecipe1(T, 16, 32, ST.make(MD.PFAA, "earthyClump", 1, 47), OP.plate.mat(MT.Bentonite, 1));
        RM.RollingMill.addRecipe1(T, 16, 32, ST.make(MD.PFAA, "earthyClump", 1, 48), OP.plate.mat(MT.Palygorskite, 1));
        RM.RollingMill.addRecipe1(T, 16, 32, ST.make(MD.PFAA, "earthyClump", 1, 49), OP.plate.mat(MT.Kaolinite, 1));
        RM.Compressor.addRecipe1(T, 16, 32, ST.make(MD.PFAA, "earthyClump", 4, 45), ST.make(MD.PFAA, "weakClay", 1, 0));
        RM.Compressor.addRecipe1(T, 16, 32, ST.make(MD.PFAA, "earthyClump", 4, 47), ST.make(MD.PFAA, "weakOreClay", 1, 1));
        RM.Compressor.addRecipe1(T, 16, 32, ST.make(MD.PFAA, "earthyClump", 4, 48), ST.make(MD.PFAA, "weakOreClay", 1, 2));
        RM.Compressor.addRecipe1(T, 16, 32, ST.make(MD.PFAA, "earthyClump", 4, 49), ST.make(MD.PFAA, "weakOreClay", 1, 3));
        RM.Mortar.addRecipe1(T, 16, 16, ST.make(MD.PFAA, "earthyClump", 1, 45), OM.dust(MT.ClayBrown));
        RM.Mortar.addRecipe1(T, 16, 16, ST.make(MD.PFAA, "earthyClump", 1, 47), OM.dust(MT.Bentonite));
        RM.Mortar.addRecipe1(T, 16, 16, ST.make(MD.PFAA, "earthyClump", 1, 48), OM.dust(MT.Palygorskite));
        RM.Mortar.addRecipe1(T, 16, 16, ST.make(MD.PFAA, "earthyClump", 1, 49), OM.dust(MT.Kaolinite));
        RM.Mortar.addRecipe1(T, 16, 64, ST.make(MD.PFAA, "weakClay", 1, 0), OM.dust(MT.ClayBrown, U * 4));
        RM.Mortar.addRecipe1(T, 16, 64, ST.make(MD.PFAA, "weakOreClay", 1, 1), OM.dust(MT.Bentonite, U * 4));
        RM.Mortar.addRecipe1(T, 16, 64, ST.make(MD.PFAA, "weakOreClay", 1, 2), OM.dust(MT.Palygorskite, U * 4));
        RM.Mortar.addRecipe1(T, 16, 64, ST.make(MD.PFAA, "weakOreClay", 1, 3), OM.dust(MT.Kaolinite, U * 4));
        RM.Sifting.addRecipe1(T, 16, 128, new long[] { 10000, 10, 40, 150, 200, 400, 500 }, IL.PFAA_Sands.getWithMeta(1, 1), crushedCentrifuged.mat(MT.OREMATS.Cassiterite, 2), gemExquisite.mat(MT.Zircon, 2), gemFlawless.mat(MT.Zircon, 2), gem.mat(MT.Zircon, 2), gemFlawed.mat(MT.Zircon, 2), gemChipped.mat(MT.Zircon, 2), dust.mat(MT.Zircon, 2));
        RM.Sifting.addRecipe1(T, 16, 128, new long[] { 10000, 10, 40, 150, 200, 400, 500 }, IL.PFAA_Sands.getWithMeta(1, 5), dust.mat(MT.VolcanicAsh, 1), gemExquisite.mat(MT.Olivine, 1), gemFlawless.mat(MT.Olivine, 1), gem.mat(MT.Olivine, 1), gemFlawed.mat(MT.Olivine, 1), gemChipped.mat(MT.Olivine, 1), dust.mat(MT.Olivine, 1));
        RM.Sifting.addRecipe1(T, 16, 128, new long[] { 3000, 3000, 3000, 3000, 3000, 3000 }, IL.PFAA_Sands.getWithMeta(1, 2), crushedPurifiedTiny.mat(MT.Almandine, 8), crushedPurifiedTiny.mat(MT.Andradite, 8), crushedPurifiedTiny.mat(MT.Grossular, 8), crushedPurifiedTiny.mat(MT.Pyrope, 8), crushedPurifiedTiny.mat(MT.Spessartine, 8), crushedPurifiedTiny.mat(MT.Uvarovite, 8));
        RM.Sifting.addRecipe1(T, 16, 128, new long[] { 8000, 8000, 8000, 3000, 3000, 3000 }, IL.PFAA_Sands.getWithMeta(1, 4), dust.mat(MT.MilkyQuartz, 1), dust.mat(MT.CertusQuartz, 1), dust.mat(MT.BlackQuartz, 1), gem.mat(MT.MilkyQuartz, 1), gem.mat(MT.CertusQuartz, 1), gem.mat(MT.BlackQuartz, 1));
        RM.Sifting.addRecipe1(T, 16, 128, IL.PFAA_Sands.getWithMeta(1, 6), crushedPurified.mat(MT.OREMATS.Glauconite, 2));
    }
    if (MD.RH.mLoaded) {
        RM.Sifting.addRecipe1(T, 16, 200, new long[] { 5000, 5000 }, IL.RH_Sand_Olivine.get(1), OP.gem.mat(MT.Olivine, 1), OP.dust.mat(MT.Olivine, 1));
        RM.Sifting.addRecipe1(T, 16, 200, new long[] { 9000, 1000 }, IL.RH_Sand_Gypsum.get(1), OP.dust.mat(MT.Gypsum, 1), OP.dust.mat(MT.S, 1));
        RM.Sifting.addRecipe1(T, 16, 200, new long[] { 9900, 500, 500 }, IL.RH_Sand_Magnetite.get(1), dust.mat(MT.OREMATS.GraniticMineralSand, 1), rockGt.mat(MT.STONES.GraniteBlack, 1), nugget.mat(MT.Au, 1));
        RM.MagneticSeparator.addRecipe1(T, 16, 144, new long[] { 9900, 500, 500, 500 }, IL.RH_Sand_Magnetite.get(1), dust.mat(MT.OREMATS.GraniticMineralSand, 1), rockGt.mat(MT.STONES.GraniteBlack, 1), nugget.mat(MT.Au, 1), dustTiny.mat(MT.Au, 2));
        RM.Centrifuge.addRecipe1(T, 16, 256, new long[] { 9000, 1000 }, IL.RH_Sand_Magnetite.get(1), dust.mat(MT.OREMATS.GraniticMineralSand, 1), dust.mat(MT.V2O5, 1));
        if (MD.TROPIC.mLoaded) {
            RM.Sifting.addRecipe1(T, 16, 200, new long[] { 9900, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 200, 100, 50 }, IL.RH_Sand_Coral.get(1), IL.TROPIC_Sand_Pure.get(1), ST.make(MD.TROPIC, "shell", 1, 0), ST.make(MD.TROPIC, "shell", 1, 1), ST.make(MD.TROPIC, "shell", 1, 2), ST.make(MD.TROPIC, "shell", 1, 3), ST.make(MD.TROPIC, "shell", 1, 4), ST.make(MD.TROPIC, "shell", 1, 5), ST.make(MD.TROPIC, "pearl", 1, 0), ST.make(MD.TROPIC, "pearl", 1, 1), OP.gem.mat(MT.Azurite, 1), OP.gem.mat(MT.Eudialyte, 1), OP.gem.mat(MT.Zr, 1));
        } else {
            RM.Sifting.addRecipe1(T, 16, 200, new long[] { 9900, 200, 100, 50 }, IL.RH_Sand_Coral.get(1), ST.make(Blocks.sand, 1, 0), OP.gem.mat(MT.Azurite, 1), OP.gem.mat(MT.Eudialyte, 1), OP.gem.mat(MT.Zr, 1));
        }
    }
    // Some of these aren't Temporary, but I like having all Generifier Recipes for Fluids in on place.
    RM.generify(FL.make("molten.meteoriciron", 1), FL.make("molten.iron", 1));
    RM.generify(FL.make("molten.wroughtiron", 1), FL.make("molten.iron", 1));
    RM.generify(FL.make("molten.osmiumelemental", 1), FL.make("molten.osmium", 1));
    RM.generify(FL.make("deuterium", 5), FL.make("rc deuterium", 1));
    RM.generify(FL.make("tritium", 5), FL.make("rc tritium", 1));
    RM.generify(FL.make("carbondioxide", 5), FL.make("rc co2", 1));
    RM.generify(FL.make("chlorine", 5), FL.make("rc chlorine", 1));
    RM.generify(FL.make("heavywater", 1), FL.Heavy_Reiker.make(1));
    RM.genericycle(FL.XP.make(3), FL.Mob.make(10));
    RM.genericycle(FL.Redstone_TE.make(25), FL.Redstone.make(36));
    RM.genericycle(FL.Lubricant.make(1), FL.LubRoCant.make(1));
    RM.generify(FL.Oil_Canola.make(2), FL.lube(1));
    RM.generify(FL.make("ethanol", 1), FL.BioEthanol.make(1));
    RM.genericycle(FL.BioEthanol.make(1), FL.Reikanol.make(1));
    RM.genericycle(FL.Oxygen.make(1), FL.Reikygen.make(1));
    RM.genericycle(FL.Liquid_Oxygen.make(1), FL.Liquid_Reikygen.make(1));
    RM.genericycle(FL.make("molten.latex", 1), FL.Latex.make(1));
    RM.generify(FL.Slime_Pink.make(1), FL.Slime_Green.make(1));
    RM.generify(FL.RoyalJelly.make(1), FL.Honey.make(10));
    RM.genericycle(FL.Honey.make(1), FL.HoneyGrC.make(1), FL.HoneyBoP.make(1));
    RM.genericycle(FL.Milk.make(1), FL.MilkGrC.make(1));
    RM.genericycle(FL.make("for.honeydew", 1), FL.Honeydew.make(1));
    RM.genericycle(FL.Resin_Spruce.make(1), FL.Resin.make(1));
    RM.genericycle(FL.make("sulfuricacid", 1), FL.make("acid", 1));
    RM.genericycle(FL.Oil_Plant.make(2), FL.Oil_Seed.make(1));
    RM.genericycle(FL.Biomass.make(1), FL.BiomassIC2.make(1));
    RM.genericycle(FL.Methane.make(1), FL.make("ic2biogas", 4));
    RM.generify(FL.make("gas_natural_gas", 1), FL.Methane.make(1));
    RM.generify(FL.make("naturalgas", 1), FL.Methane.make(1));
    RM.generify(FL.make("gas.natural", 1), FL.Methane.make(1));
    RM.generify(FL.Liquid_Methane.make(1), FL.Methane.make(643));
    RM.genericycle(FL.make("kerosine", 1), FL.make("kerosene", 1));
    RM.genericycle(FL.make("petrol", 1), FL.make("gasoline", 1));
    RM.genericycle(FL.make("fuel", 1), FL.make("fueloil", 1));
    RM.generify(FL.Steam_IC2_Superheated.make(1), FL.Steam.make(3));
    RM.generify(FL.Steam_IC2.make(1), FL.Steam.make(1));
    RM.generify(FL.Lava_Volcanic.make(1), FL.Lava.make(1));
    RM.generify(FL.DistW.make(1), FL.Water.make(1));
    RM.generify(FL.SpDew.make(1), FL.Water.make(1));
    RM.generify(FL.River_Water.make(1), FL.Water.make(1));
    RM.generify(FL.Water_Geothermal.make(1), FL.Water.make(1));
    RM.generify(FL.Water_Boiling.make(1), FL.Water.make(1));
    RM.generify(FL.Water_Hot.make(1), FL.Water.make(1));
    RM.generify(FL.Soda.make(1), FL.Water.make(1));
    RM.generify(FL.Mineralsoda.make(1), FL.Water.make(1));
    RM.generify(FL.Mineralwater.make(1), FL.Water.make(1));
    RM.generify(FL.Oil_Lin.make(1), FL.Oil_Seed.make(1));
    RM.generify(FL.Oil_Hemp.make(1), FL.Oil_Seed.make(1));
    RM.generify(FL.Oil_Olive.make(1), FL.Oil_Seed.make(1));
    RM.generify(FL.Oil_Sunflower.make(1), FL.Oil_Seed.make(1));
    RM.generify(FL.Oil_Nut.make(1), FL.Oil_Seed.make(1));
    for (String tFluid : FluidsGT.JUICE) if (FL.exists(tFluid))
        RM.generify(FL.make(tFluid, 1), FL.Juice.make(1));
    for (Entry<String, String> tEntry : FluidsGT.FLUID_RENAMINGS.entrySet()) RM.generify(FL.make(tEntry.getKey(), 1), FL.make(tEntry.getValue(), 1));
}
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) ItemStack(net.minecraft.item.ItemStack)

Example 5 with OreDictMaterial

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

the class Loader_Recipes_Vanilla method run.

@Override
public void run() {
    CR.remove(ST.make(Items.reeds, 1, 0));
    CR.remove(ST.make(Items.reeds, 1, 0), ST.make(Items.reeds, 1, 0), ST.make(Items.reeds, 1, 0));
    CR.remove(ST.make(Blocks.cobblestone, 1, 0), ST.make(Items.quartz, 1, 0), NI, ST.make(Items.quartz, 1, 0), ST.make(Blocks.cobblestone, 1, 0));
    CR.remove(ST.make(Items.blaze_rod, 1, 0));
    CR.remove(ST.make(Items.bone, 1, 0));
    CR.shapeless(dust.mat(MT.White, 1), DEF, new Object[] { Items.bone });
    CR.shaped(ST.make(Items.paper, 1, 0), DEF, "XXX", 'X', Items.reeds);
    CR.shapeless(ST.make(Items.book, 1, 0), DEF, new Object[] { OD.craftingLeather, OD.paperEmpty, OD.paperEmpty, OD.paperEmpty });
    CR.shaped(ST.make(Blocks.furnace, 1, 0), DEF_NCC, "XXX", "XFX", "XXX", 'X', cobblestone, 'F', OD.craftingFirestarter);
    CR.shaped(ST.make(Blocks.furnace, 1, 0), DEF_NCC, "XXX", "XFX", "XXX", 'X', stone.dat(MT.STONES.Basalt), 'F', OD.craftingFirestarter);
    CR.shaped(ST.make(Blocks.furnace, 1, 0), DEF_NCC, "XXX", "XFX", "XXX", 'X', rockGt.dat(ANY.Stone), 'F', OD.craftingFirestarter);
    CR.delate(ST.make(Blocks.enchanting_table, 1, 0));
    CR.delate(ST.make(Blocks.ender_chest, 1, 0));
    CR.delate(ST.make(Blocks.furnace, 1, 0));
    CR.delate(ST.make(Items.saddle, 1, 0));
    CR.delate(ST.make(Items.magma_cream, 1, 0));
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.disabledrecipes, "enchantmenttable", F)) {
        OUT.println("GT_Mod: Removing the Recipe of the Enchantment Table, to have Fun enchanting with the Anvil and Books from Dungeons.");
    } else {
        CR.shaped(ST.make(Blocks.enchanting_table, 1, 0), CR.DEF_NCC, " B ", "DOD", "OOO", 'B', IL.TC_Thaumonomicon.get(1, ST.make(Items.book, 1, W)), 'O', blockSolid.dat(MT.Obsidian), 'D', gem.dat(ANY.Diamond));
    }
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.disabledrecipes, "enderchest", F)) {
        OUT.println("GT_Mod: Removing the Recipe of the Enderchest.");
    } else {
        CR.shaped(ST.make(Blocks.ender_chest, 1, 0), CR.DEF_NCC, "OOO", "OEO", "OOO", 'O', blockSolid.dat(MT.Obsidian), 'E', gem.dat(MT.EnderEye));
    }
    CR.shaped(ST.make(Items.bucket, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "XhX", " Y ", 'Y', plate.dat(ANY.Fe), 'X', plateCurved.dat(ANY.Fe));
    if (!ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, "Iron.Bucket", T))
        CR.shaped(ST.make(Items.bucket, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "X X", " X ", 'X', ingot.dat(ANY.Fe));
    ItemStack tMat = ST.make(Items.iron_ingot, 1, 0), tStack;
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, "Iron.PressurePlate", T))
        if (null != (tStack = CR.remove(tMat, tMat, null, null, null, null, null, null, null))) {
            CR.shaped(tStack, DEF | DEL_OTHER_SHAPED_RECIPES, "XXh", 'X', plate.dat(ANY.Fe), 'S', OD.stickAnyWood, 'I', ingot.dat(ANY.Fe));
        }
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, "Iron.Compass", T)) {
        CR.shaped(ST.make(Items.compass, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES | ONLY_IF_HAS_OTHER_RECIPES, "sSR", "CIC", "dPh", 'P', plate.dat(ANY.Fe), 'R', gem.dat(MT.Redstone), 'C', plateCurved.dat(ANY.Fe), 'I', stick.dat(ANY.Fe), 'S', stick.dat(MT.IronMagnetic));
    } else {
        CR.shaped(ST.make(Items.compass, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES | ONLY_IF_HAS_OTHER_RECIPES, " X ", "XRX", " X ", 'X', ingot.dat(ANY.Fe), 'R', OD.itemRedstone);
    }
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, "Iron.Door", T)) {
        CR.shaped(ST.make(Items.iron_door, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES | ONLY_IF_HAS_OTHER_RECIPES, "XX ", "XXh", "XX ", 'X', plate.dat(ANY.Fe));
    } else {
        CR.shaped(ST.make(Items.iron_door, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES | ONLY_IF_HAS_OTHER_RECIPES, "II", "II", "II", 'I', ingot.dat(ANY.Fe));
    }
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, "Iron.Cauldron", T))
        if (null != (tStack = CR.remove(tMat, null, tMat, tMat, null, tMat, tMat, tMat, tMat))) {
            CR.shaped(tStack, DEF | DEL_OTHER_SHAPED_RECIPES, "X X", "XhX", "XXX", 'X', plate.dat(ANY.Fe), 'S', OD.stickAnyWood, 'I', ingot.dat(ANY.Fe));
        }
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, "Iron.Hopper", T))
        if (null != (tStack = CR.remove(tMat, null, tMat, tMat, ST.make(Blocks.chest, 1, 0), tMat, null, tMat, null))) {
            CR.shaped(tStack, DEF | DEL_OTHER_SHAPED_RECIPES, "XwX", "XCX", " X ", 'X', plate.dat(ANY.Iron), 'S', OD.stickAnyWood, 'I', ingot.dat(ANY.Iron), 'C', OD.craftingChest);
        }
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, "Iron.Bars", T))
        CR.remove(tMat, tMat, tMat, tMat, tMat, tMat, null, null, null);
    CR.shaped(ST.make(Blocks.iron_bars, 8, 0), DEF, " w ", "XXX", "XXX", 'X', stick.dat(ANY.Fe), 'S', OD.stickAnyWood, 'I', ingot.dat(ANY.Fe));
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, "Gold.Clock", T)) {
        CR.shaped(ST.make(Items.clock, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES | ONLY_IF_HAS_OTHER_RECIPES, "sGr", "CQC", "dPR", 'P', plate.dat(MT.Au), 'R', OD.itemRedstone, 'C', plateCurved.dat(MT.Au), 'Q', OD.craftingQuartz, 'G', gearGtSmall.dat(MT.Au));
    } else {
        CR.shaped(ST.make(Items.clock, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES | ONLY_IF_HAS_OTHER_RECIPES, " X ", "XRX", " X ", 'X', ingot.dat(MT.Au), 'R', OD.itemRedstone);
    }
    tMat = ST.make(Items.gold_ingot, 1, 0);
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, "Gold.PressurePlate", T))
        if (null != (tStack = CR.remove(tMat, tMat, null, null, null, null, null, null, null))) {
            CR.shaped(tStack, DEF | DEL_OTHER_SHAPED_RECIPES, "XXh", 'X', plate.dat(MT.Au), 'S', OD.stickAnyWood, 'I', ingot.dat(MT.Au));
        }
    tMat = ingot.mat(MT.Rubber, 1);
    if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.recipereplacements, "Rubber.Sheet", T))
        if (null != (tStack = CR.remove(tMat, tMat, tMat, tMat, tMat, tMat, null, null, null))) {
            CR.shaped(tStack, DEF | DEL_OTHER_SHAPED_RECIPES, "XXX", "XXX", 'X', plate.dat(MT.Rubber));
        }
    CR.shaped(ST.make(Blocks.wooden_pressure_plate, 1, 0), DEF, "PP", 'P', OD.plankAnyWood);
    CR.shaped(ST.make(Blocks.stone_button, 2, 0), DEF, "S", "S", 'S', Blocks.stone);
    CR.shaped(ST.make(Blocks.stone_button, 2, 0), DEF, "S", "S", 'S', stone);
    CR.shaped(ST.make(Blocks.stone_pressure_plate, 1, 0), DEF, "SS", 'S', Blocks.stone);
    CR.shaped(ST.make(Blocks.stone_pressure_plate, 1, 0), DEF, "SS", 'S', stone);
    CR.shapeless(stick.mat(MT.IronMagnetic, 1), DEF, new Object[] { stick.dat(ANY.Fe), OD.itemRedstone, OD.itemRedstone, OD.itemRedstone, OD.itemRedstone });
    CR.shapeless(stickLong.mat(MT.IronMagnetic, 1), DEF, new Object[] { stickLong.dat(ANY.Fe), OD.itemRedstone, OD.itemRedstone, OD.itemRedstone, OD.itemRedstone, OD.itemRedstone, OD.itemRedstone, OD.itemRedstone, OD.itemRedstone });
    CR.shaped(IL.Dye_Bonemeal.get(1), DEF, "h", "X", 'X', Items.bone);
    // Making sure Nether Quartz Blocks cannot be made using OreDict Nether Quartz to ensure Compat with Mods that have different Quartzes.
    CR.remove(ST.make(Items.quartz, 1, 0), ST.make(Items.quartz, 1, 0), NI, ST.make(Items.quartz, 1, 0), ST.make(Items.quartz, 1, 0));
    CR.shaped(ST.make(Blocks.quartz_block, 1, 0), DEF, "XX", "XX", 'X', Items.quartz);
    CR.shaped(ST.make(Blocks.quartz_stairs, 1, 0), DEF_MIR, "  X", " XX", "XXX", 'X', Items.quartz);
    CR.shaped(ST.make(Blocks.stone_slab, 1, 7), DEF, "XX", 'X', Items.quartz);
    // Making sure Glowstone Blocks cannot be made using OreDict Glowstone to ensure Compat with Mods that have different Glowstones.
    CR.remove(ST.make(Items.glowstone_dust, 1, 0), ST.make(Items.glowstone_dust, 1, 0), NI, ST.make(Items.glowstone_dust, 1, 0), ST.make(Items.glowstone_dust, 1, 0));
    CR.shaped(ST.make(Blocks.glowstone, 1, 0), DEF, "XX", "XX", 'X', Items.glowstone_dust);
    // Make Rock Blocks out of small Rocks.
    RM.pack(rockGt.mat(MT.Stone, 4), ST.make(Blocks.cobblestone, 1, 0));
    RM.pack(rockGt.mat(MT.Netherrack, 4), ST.make(Blocks.netherrack, 1, 0));
    RM.pack(rockGt.mat(MT.Endstone, 4), ST.make(Blocks.end_stone, 1, 0));
    CR.shaped(ST.make(Blocks.netherrack, 1, 0), DEF, "XX", "XX", 'X', rockGt.dat(MT.Netherrack));
    CR.shaped(ST.make(Blocks.end_stone, 1, 0), DEF, "XX", "XX", 'X', rockGt.dat(MT.Endstone));
    CR.shaped(ST.make(Blocks.cobblestone, 1, 0), DEF, "XX", "XX", 'X', rockGt.dat(MT.Stone));
    CR.shaped(ST.make(Blocks.stone_stairs, 1, 0), DEF_MIR, " X", "XX", 'X', rockGt.dat(MT.Stone));
    CR.shaped(ST.make(Blocks.stone_slab, 1, 3), DEF, "  ", "XX", 'X', rockGt.dat(MT.Stone));
    CR.shaped(ST.make(Blocks.stone_stairs, 4, 0), DEF_MIR, " X", "XX", 'X', Blocks.cobblestone);
    CR.shaped(ST.make(Blocks.stone_slab, 4, 3), DEF, "  ", "XX", 'X', Blocks.cobblestone);
    // Hammering and Filing Stones into different Stones.
    CR.shaped(ST.make(Blocks.gravel, 1, 0), DEF, "h", "X", 'X', Blocks.cobblestone);
    CR.shaped(ST.make(Blocks.cobblestone, 1, 0), DEF, "h", "X", 'X', Blocks.stone);
    CR.shaped(ST.make(Blocks.stonebrick, 1, 2), DEF, "h", "X", 'X', ST.make(Blocks.stonebrick, 1, 0));
    CR.shaped(ST.make(Blocks.stonebrick, 1, 3), DEF, "f", "X", 'X', ST.make(Blocks.double_stone_slab, 1, 8));
    // Slab Stacking back to full Blocks.
    CR.shaped(ST.make(Blocks.double_stone_slab, 1, 0), DEF, "B", "B", 'B', ST.make(Blocks.stone_slab, 1, 0));
    CR.shaped(ST.make(Blocks.cobblestone, 1, 0), DEF, "B", "B", 'B', ST.make(Blocks.stone_slab, 1, 3));
    CR.shaped(ST.make(Blocks.brick_block, 1, 0), DEF, "B", "B", 'B', ST.make(Blocks.stone_slab, 1, 4));
    CR.shaped(ST.make(Blocks.stonebrick, 1, 0), DEF, "B", "B", 'B', ST.make(Blocks.stone_slab, 1, 5));
    CR.shaped(ST.make(Blocks.nether_brick, 1, 0), DEF, "B", "B", 'B', ST.make(Blocks.stone_slab, 1, 6));
    CR.shaped(ST.make(Blocks.quartz_block, 1, 0), DEF, "B", "B", 'B', ST.make(Blocks.stone_slab, 1, 7));
    CR.shaped(ST.make(Blocks.double_stone_slab, 1, 8), DEF, "B", "B", 'B', ST.make(Blocks.stone_slab, 1, 8));
    CR.shaped(ST.make(Blocks.planks, 1, 0), DEF, "B", "B", 'B', ST.make(Blocks.wooden_slab, 1, 0));
    CR.shaped(ST.make(Blocks.planks, 1, 1), DEF, "B", "B", 'B', ST.make(Blocks.wooden_slab, 1, 1));
    CR.shaped(ST.make(Blocks.planks, 1, 2), DEF, "B", "B", 'B', ST.make(Blocks.wooden_slab, 1, 2));
    CR.shaped(ST.make(Blocks.planks, 1, 3), DEF, "B", "B", 'B', ST.make(Blocks.wooden_slab, 1, 3));
    CR.shaped(ST.make(Blocks.planks, 1, 4), DEF, "B", "B", 'B', ST.make(Blocks.wooden_slab, 1, 4));
    CR.shaped(ST.make(Blocks.planks, 1, 5), DEF, "B", "B", 'B', ST.make(Blocks.wooden_slab, 1, 5));
    CR.shaped(ST.make(Blocks.planks, 1, 6), DEF, "B", "B", 'B', ST.make(Blocks.wooden_slab, 1, 6));
    CR.shaped(ST.make(Blocks.planks, 1, 7), DEF, "B", "B", 'B', ST.make(Blocks.wooden_slab, 1, 7));
    // Other Slab Stuff
    CR.shaped(ST.make(Blocks.stone_slab, 1, 4), DEF, "BB", 'B', ingot.dat(MT.Brick));
    CR.shapeless(ST.make(Blocks.double_stone_slab, 1, 8), DEF, new Object[] { ST.make(Blocks.double_stone_slab, 1, 0) });
    CR.shapeless(ST.make(Blocks.double_stone_slab, 1, 0), DEF, new Object[] { ST.make(Blocks.double_stone_slab, 1, 8) });
    // Make Sticks from Saplings and Dead Bushes.
    CR.shaped(stick.mat(MT.WOODS.Dead, 2), DEF, "s", "X", 'X', ST.make(Blocks.deadbush, 1, W));
    CR.shaped(stick.mat(MT.WOODS.Dead, 2), DEF, "k", "X", 'X', ST.make(Blocks.deadbush, 1, W));
    CR.shaped(stick.mat(MT.WOODS.Dead, 2), DEF, "s", "X", 'X', ST.make(Blocks.tallgrass, 1, 0));
    CR.shaped(stick.mat(MT.WOODS.Dead, 2), DEF, "k", "X", 'X', ST.make(Blocks.tallgrass, 1, 0));
    CR.shaped(IL.Stick.get(1), DEF, "s", "X", 'X', treeSapling);
    CR.shaped(IL.Stick.get(1), DEF, "k", "X", 'X', treeSapling);
    // Normal Torches need to be the absolute last in this Array!
    IL[] tItems = new IL[] { IL.NeLi_Bonetorch, IL.Torch };
    Object[] tSticks = new Object[] { Items.bone, OD.stickAnyWood };
    for (int i = 0; i < tItems.length; i++) if (tItems[i].exists()) {
        // Torches, lots and lots of Torches.
        CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.S));
        CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.S));
        CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.S));
        CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(MT.S));
        CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(MT.S));
        CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(MT.S));
        CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', dustTiny.dat(MT.Blaze));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.P));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.P));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.P));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(MT.P));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(MT.P));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(MT.P));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(ANY.Phosphorus));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(ANY.Phosphorus));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(ANY.Phosphorus));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(ANY.Phosphorus));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(ANY.Phosphorus));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(ANY.Phosphorus));
        CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', rockGt.dat(MT.Peat));
        CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.Peat));
        CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', ingot.dat(MT.Peat));
        CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.Peat));
        CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.Peat));
        CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(MT.Peat));
        CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(MT.Peat));
        CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(MT.Peat));
        CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', rockGt.dat(MT.PeatBituminous));
        CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.PeatBituminous));
        CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', ingot.dat(MT.PeatBituminous));
        CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.PeatBituminous));
        CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.PeatBituminous));
        CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(MT.PeatBituminous));
        CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(MT.PeatBituminous));
        CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(MT.PeatBituminous));
        CR.shaped(tItems[i].get(6), DEF, "X", "S", 'S', tSticks[i], 'X', IL.TF_Torchberries);
        CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', IL.NeLi_ShroomLight);
        CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', OD.itemResin);
        CR.shaped(tItems[i].get(1), DEF, "X", "S", 'S', tSticks[i], 'X', OD.itemGrassDry);
        CR.shaped(tItems[i].get(6), DEF, "WC", "S ", 'S', tSticks[i], 'C', OD.container1000rubbertreesap, 'W', Blocks.wool);
        CR.shaped(tItems[i].get(6), DEF, "WC", "S ", 'S', tSticks[i], 'C', OD.container250rubbertreesap, 'W', Blocks.wool);
        CR.shaped(tItems[i].get(6), DEF, "WC", "S ", 'S', tSticks[i], 'C', OD.container1000spruceresin, 'W', Blocks.wool);
        CR.shaped(tItems[i].get(6), DEF, "WC", "S ", 'S', tSticks[i], 'C', OD.container250spruceresin, 'W', Blocks.wool);
        CR.shaped(tItems[i].get(6), DEF, "WC", "S ", 'S', tSticks[i], 'C', OD.container1000maplesap, 'W', Blocks.wool);
        CR.shaped(tItems[i].get(2), DEF, "WC", "S ", 'S', tSticks[i], 'C', OD.container250maplesap, 'W', Blocks.wool);
        CR.shaped(tItems[i].get(8), DEF, "WC", "S ", 'S', tSticks[i], 'C', OD.container1000rainbowsap, 'W', Blocks.wool);
        CR.shaped(tItems[i].get(4), DEF, "WC", "S ", 'S', tSticks[i], 'C', OD.container250rainbowsap, 'W', Blocks.wool);
        CR.shaped(tItems[i].get(6), DEF, "WC", "S ", 'S', tSticks[i], 'C', OD.container1000creosote, 'W', Blocks.wool);
        CR.shaped(tItems[i].get(2), DEF, "WC", "S ", 'S', tSticks[i], 'C', OD.container250creosote, 'W', Blocks.wool);
        CR.shaped(tItems[i].get(6), DEF, "WCW", "WSW", 'S', tSticks[i], 'C', OD.container1000rubbertreesap, 'W', OD.itemString);
        CR.shaped(tItems[i].get(6), DEF, "WCW", "WSW", 'S', tSticks[i], 'C', OD.container250rubbertreesap, 'W', OD.itemString);
        CR.shaped(tItems[i].get(6), DEF, "WCW", "WSW", 'S', tSticks[i], 'C', OD.container1000spruceresin, 'W', OD.itemString);
        CR.shaped(tItems[i].get(6), DEF, "WCW", "WSW", 'S', tSticks[i], 'C', OD.container250spruceresin, 'W', OD.itemString);
        CR.shaped(tItems[i].get(6), DEF, "WCW", "WSW", 'S', tSticks[i], 'C', OD.container1000maplesap, 'W', OD.itemString);
        CR.shaped(tItems[i].get(2), DEF, "WCW", "WSW", 'S', tSticks[i], 'C', OD.container250maplesap, 'W', OD.itemString);
        CR.shaped(tItems[i].get(8), DEF, "WCW", "WSW", 'S', tSticks[i], 'C', OD.container1000rainbowsap, 'W', OD.itemString);
        CR.shaped(tItems[i].get(4), DEF, "WCW", "WSW", 'S', tSticks[i], 'C', OD.container250rainbowsap, 'W', OD.itemString);
        CR.shaped(tItems[i].get(6), DEF, "WCW", "WSW", 'S', tSticks[i], 'C', OD.container1000creosote, 'W', OD.itemString);
        CR.shaped(tItems[i].get(2), DEF, "WCW", "WSW", 'S', tSticks[i], 'C', OD.container250creosote, 'W', OD.itemString);
        if (ConfigsGT.RECIPES.get(ConfigCategories.Recipes.disabledrecipes, "torchesFromCoal", F)) {
            CR.remove(ST.make(Items.coal, 1, 0), NI, NI, ST.make(Items.stick, 1, 0));
            CR.remove(ST.make(Items.coal, 1, 1), NI, NI, ST.make(Items.stick, 1, 0));
        } else {
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.Charcoal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', ingot.dat(MT.Charcoal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.Charcoal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.Charcoal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', rockGt.dat(MT.Coal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.Coal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', ingot.dat(MT.Coal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.Coal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.Coal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(MT.Coal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(MT.Coal));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(MT.Coal));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', rockGt.dat(MT.CoalCoke));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.CoalCoke));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', ingot.dat(MT.CoalCoke));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.CoalCoke));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.CoalCoke));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(MT.CoalCoke));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(MT.CoalCoke));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(MT.CoalCoke));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', rockGt.dat(MT.Anthracite));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.Anthracite));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', ingot.dat(MT.Anthracite));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.Anthracite));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.Anthracite));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(MT.Anthracite));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(MT.Anthracite));
            CR.shaped(tItems[i].get(8), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(MT.Anthracite));
            CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', rockGt.dat(MT.Lignite));
            CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.Lignite));
            CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', ingot.dat(MT.Lignite));
            CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.Lignite));
            CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.Lignite));
            CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(MT.Lignite));
            CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(MT.Lignite));
            CR.shaped(tItems[i].get(2), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(MT.Lignite));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', rockGt.dat(MT.LigniteCoke));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.LigniteCoke));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', ingot.dat(MT.LigniteCoke));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.LigniteCoke));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.LigniteCoke));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(MT.LigniteCoke));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(MT.LigniteCoke));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(MT.LigniteCoke));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', rockGt.dat(MT.Oilshale));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', oreRaw.dat(MT.Oilshale));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', ingot.dat(MT.Oilshale));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', gem.dat(MT.Oilshale));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', dust.dat(MT.Oilshale));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushed.dat(MT.Oilshale));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushedPurified.dat(MT.Oilshale));
            CR.shaped(tItems[i].get(4), DEF, "X", "S", 'S', tSticks[i], 'X', crushedCentrifuged.dat(MT.Oilshale));
        }
    }
    // Charcoal Brick-ification
    CR.shaped(ST.make(Items.coal, 1, 1), DEF, "  ", " X", 'X', ingot.dat(MT.Charcoal));
    CR.shaped(ingot.mat(MT.Charcoal, 1), DEF, "  ", " X", 'X', ST.make(Items.coal, 1, 1));
    RM.generify(ingot.mat(MT.Charcoal, 1), ST.make(Items.coal, 1, 1));
    RM.generify(ST.make(Items.coal, 1, 1), ingot.mat(MT.Charcoal, 1));
    // Coal Brick-ification
    CR.shaped(ST.make(Items.coal, 1, 0), DEF, "  ", " X", 'X', ingot.dat(MT.Coal));
    CR.shaped(ingot.mat(MT.Coal, 1), DEF, "  ", " X", 'X', ST.make(Items.coal, 1, 0));
    RM.generify(ingot.mat(MT.Coal, 1), ST.make(Items.coal, 1, 0));
    RM.generify(ST.make(Items.coal, 1, 0), ingot.mat(MT.Coal, 1));
    // Other Coal Brick-ification
    for (OreDictMaterial tCoal : new OreDictMaterial[] { MT.CoalCoke, MT.Lignite, MT.LigniteCoke, MT.PetCoke, MT.Anthracite, MT.Prismane, MT.Lonsdaleite }) {
        CR.shaped(gem.mat(tCoal, 1), DEF, "  ", " X", 'X', ingot.dat(tCoal));
        CR.shaped(ingot.mat(tCoal, 1), DEF, "  ", " X", 'X', gem.dat(tCoal));
        RM.generify(ingot.mat(tCoal, 1), gem.mat(tCoal, 1));
        RM.generify(gem.mat(tCoal, 1), ingot.mat(tCoal, 1));
    }
    // Netherite Interchange.
    CR.shaped(gem.mat(MT.NetherizedDiamond, 1), DEF, "  ", " X", 'X', ingot.dat(MT.NetherizedDiamond));
    CR.shaped(ingot.mat(MT.NetherizedDiamond, 1), DEF, "  ", " X", 'X', gem.dat(MT.NetherizedDiamond));
    RM.generify(gem.mat(MT.NetherizedDiamond, 1), ingot.mat(MT.NetherizedDiamond, 1));
    RM.generify(ingot.mat(MT.NetherizedDiamond, 1), gem.mat(MT.NetherizedDiamond, 1));
    CR.delate(plateDouble.mat(MT.Paper, 1));
    CR.shapeless(plateDouble.mat(MT.Paper, 1), DEF, new Object[] { OD.paperEmpty, OD.paperEmpty, OD.itemGlue });
    CR.shapeless(plateDouble.mat(MT.Paper, 2), DEF, new Object[] { OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.itemGlue });
    CR.shapeless(plateDouble.mat(MT.Paper, 3), DEF, new Object[] { OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.itemGlue });
    CR.shapeless(plateDouble.mat(MT.Paper, 4), DEF, new Object[] { OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.paperEmpty, OD.itemGlue });
    CR.shaped(ST.make(Items.lead, 1, 0), DEF_MIR, " SS", " GS", "S  ", 'S', OD.itemString, 'G', OD.itemTar);
    CR.shaped(ST.make(Items.lead, 1, 0), DEF_MIR, " SS", " GS", "S  ", 'S', OD.itemString, 'G', OD.itemGlue);
    CR.shaped(ST.make(Items.lead, 1, 0), DEF_MIR, " SS", " GS", "S  ", 'S', OD.itemString, 'G', OD.slimeball);
    CR.shaped(ST.make(Blocks.lever, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "W", "S", 'W', OD.stickAnyWood, 'S', cobblestone);
    CR.shaped(ST.make(Blocks.lever, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "W", "S", 'W', OD.stickAnyWood, 'S', plate.dat(ANY.Stone));
    CR.shaped(ST.make(Blocks.lever, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "W", "S", 'W', OD.stickAnyWood, 'S', rockGt.dat(ANY.Stone));
    CR.shaped(ST.make(Blocks.redstone_torch, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "D", "W", 'W', OD.stickAnyWood, 'D', OD.itemRedstone);
    CR.shaped(ST.make(Blocks.redstone_torch, 1, 0), DEF, "D", "D", "W", 'W', OD.stickAnyWood, 'D', gemFlawed.dat(MT.Redstone));
    CR.shaped(ST.make(Blocks.redstone_torch, 2, 0), DEF, "D", "W", "W", 'W', OD.stickAnyWood, 'D', gemFlawless.dat(MT.Redstone));
    CR.shaped(ST.make(Items.repeater, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "D D", "WDW", "SSS", 'W', OD.stickAnyWood, 'D', OD.itemRedstone, 'S', stoneSmooth);
    CR.shaped(ST.make(Items.repeater, 1, 0), DEF, "D D", "WDW", "SSS", 'W', OD.stickAnyWood, 'D', OD.itemRedstone, 'S', plate.dat(ANY.Stone));
    CR.shaped(ST.make(Items.repeater, 1, 0), DEF, "TDT", "SSS", 'T', OD.craftingRedstoneTorch, 'D', OD.itemRedstone, 'S', stoneSmooth);
    CR.shaped(ST.make(Items.repeater, 1, 0), DEF, "TDT", "SSS", 'T', OD.craftingRedstoneTorch, 'D', OD.itemRedstone, 'S', plate.dat(ANY.Stone));
    CR.shaped(ST.make(Items.comparator, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, " T ", "TQT", "SSS", 'T', OD.craftingRedstoneTorch, 'Q', OD.craftingQuartz, 'S', stoneSmooth);
    CR.shaped(ST.make(Items.comparator, 1, 0), DEF, " T ", "TQT", "SSS", 'T', OD.craftingRedstoneTorch, 'Q', OD.craftingQuartz, 'S', plate.dat(ANY.Stone));
    CR.shaped(ST.make(Blocks.piston, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "WWW", "CBC", "CRC", 'W', OD.plankAnyWood, 'C', stoneCobble, 'B', OD.craftingPistonIngot, 'R', OD.itemRedstone);
    CR.shaped(ST.make(Blocks.sticky_piston, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "G", "P", 'G', OD.craftingPistonGlue, 'P', Blocks.piston);
    CR.shaped(ST.make(Items.bow, 1, 0), DEF_MIR, " WS", "WkS", " WS", 'S', OD.itemString, 'W', OD.stickAnyWood);
    CR.shaped(ST.make(Blocks.dropper, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "CCC", "C C", "CRC", 'C', stoneCobble, 'R', OD.itemRedstone);
    CR.shaped(ST.make(Blocks.dispenser, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "CCC", "CBC", "CRC", 'C', stoneCobble, 'R', OD.itemRedstone, 'B', ST.make(Items.bow, 1, 0));
    CR.shaped(ST.make(Blocks.dispenser, 1, 0), DEF_MIR, " WS", "WDS", " WS", 'S', OD.itemString, 'W', OD.stickAnyWood, 'D', Blocks.dropper);
    CR.shaped(ST.make(Blocks.dispenser, 1, 0), DEF, "B", "D", 'B', ST.make(Items.bow, 1, 0), 'D', Blocks.dropper);
    CR.shaped(ST.make(Blocks.noteblock, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "WWW", "WRW", "WWW", 'W', OD.plankAnyWood, 'R', OD.itemRedstone);
    CR.shaped(ST.make(Blocks.redstone_lamp, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, " R ", "RGR", " R ", 'G', Blocks.glowstone, 'R', OD.itemRedstone);
    CR.shaped(ST.make(Items.name_tag, 1, 0), DEF_MIR, " S", "Pq", 'S', OD.itemString, 'P', OD.paperEmpty);
    CR.shaped(ST.make(Blocks.tnt, 1, 0), DEF, "GSG", "SGS", "GSG", 'G', dust.dat(MT.Gunpowder), 'S', dust.dat(ANY.SiO2));
    CR.shaped(ST.make(Blocks.tnt, 9, 0), DEF, "GSG", "SGS", "GSG", 'G', blockDust.dat(MT.Gunpowder), 'S', blockDust.dat(ANY.SiO2));
    CR.shaped(ST.make(Items.minecart, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, " h ", "PwP", "WPW", 'P', plate.dat(ANY.Iron), 'W', minecartWheels.dat(ANY.Iron));
    CR.shaped(ST.make(Items.chest_minecart, 1, 0), DEF_REV | DEL_OTHER_SHAPED_RECIPES, "X", "C", 'C', Items.minecart, 'X', Blocks.chest);
    CR.shaped(ST.make(Items.furnace_minecart, 1, 0), DEF_REV | DEL_OTHER_SHAPED_RECIPES, "X", "C", 'C', Items.minecart, 'X', OD.craftingFurnace);
    CR.shaped(ST.make(Items.hopper_minecart, 1, 0), DEF_REV | DEL_OTHER_SHAPED_RECIPES, "X", "C", 'C', Items.minecart, 'X', Blocks.hopper);
    CR.shaped(ST.make(Items.tnt_minecart, 1, 0), DEF_REV | DEL_OTHER_SHAPED_RECIPES, "X", "C", 'C', Items.minecart, 'X', Blocks.tnt);
    RM.boxunbox(ST.make(Items.minecart, 1, 0), ST.make(Items.chest_minecart, 1, 0), ST.make(Blocks.chest, 1, 0));
    RM.boxunbox(ST.make(Items.minecart, 1, 0), ST.make(Items.furnace_minecart, 1, 0), ST.make(Blocks.furnace, 1, 0));
    RM.boxunbox(ST.make(Items.minecart, 1, 0), ST.make(Items.hopper_minecart, 1, 0), ST.make(Blocks.hopper, 1, 0));
    RM.boxunbox(ST.make(Items.minecart, 1, 0), ST.make(Items.tnt_minecart, 1, 0), ST.make(Blocks.tnt, 1, 0));
    RM.boxunbox(stick.mat(MT.Wood, 1), ST.make(Items.wooden_sword, 1, 0), toolHeadSword.mat(MT.Wood, 1));
    RM.boxunbox(stick.mat(MT.Wood, 1), ST.make(Items.stone_sword, 1, 0), toolHeadSword.mat(MT.Stone, 1));
    RM.boxunbox(stick.mat(MT.Wood, 1), ST.make(Items.iron_sword, 1, 0), toolHeadSword.mat(MT.Fe, 1));
    RM.boxunbox(stick.mat(MT.Wood, 1), ST.make(Items.golden_sword, 1, 0), toolHeadSword.mat(MT.Au, 1));
    RM.boxunbox(stick.mat(MT.Wood, 1), ST.make(Items.diamond_sword, 1, 0), toolHeadSword.mat(MT.Diamond, 1));
    RM.boxunbox(stick.mat(MT.Wood, 1), IL.Tool_Sword_Bronze.getUndamaged(1), toolHeadSword.mat(MT.Bronze, 1));
    RM.boxunbox(stick.mat(MT.Wood, 1), IL.Tool_Sword_Steel.getUndamaged(1), toolHeadSword.mat(MT.Steel, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.wooden_pickaxe, 1, 0), toolHeadPickaxe.mat(MT.Wood, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.stone_pickaxe, 1, 0), toolHeadPickaxe.mat(MT.Stone, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.iron_pickaxe, 1, 0), toolHeadPickaxe.mat(MT.Fe, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.golden_pickaxe, 1, 0), toolHeadPickaxe.mat(MT.Au, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.diamond_pickaxe, 1, 0), toolHeadPickaxe.mat(MT.Diamond, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), IL.Tool_Pickaxe_Bronze.getUndamaged(1), toolHeadPickaxe.mat(MT.Bronze, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), IL.Tool_Pickaxe_Steel.getUndamaged(1), toolHeadPickaxe.mat(MT.Steel, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.wooden_shovel, 1, 0), toolHeadShovel.mat(MT.Wood, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.stone_shovel, 1, 0), toolHeadShovel.mat(MT.Stone, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.iron_shovel, 1, 0), toolHeadShovel.mat(MT.Fe, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.golden_shovel, 1, 0), toolHeadShovel.mat(MT.Au, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.diamond_shovel, 1, 0), toolHeadShovel.mat(MT.Diamond, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), IL.Tool_Shovel_Bronze.getUndamaged(1), toolHeadShovel.mat(MT.Bronze, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), IL.Tool_Shovel_Steel.getUndamaged(1), toolHeadShovel.mat(MT.Steel, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.wooden_axe, 1, 0), toolHeadAxe.mat(MT.Wood, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.stone_axe, 1, 0), toolHeadAxe.mat(MT.Stone, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.iron_axe, 1, 0), toolHeadAxe.mat(MT.Fe, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.golden_axe, 1, 0), toolHeadAxe.mat(MT.Au, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.diamond_axe, 1, 0), toolHeadAxe.mat(MT.Diamond, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), IL.Tool_Axe_Bronze.getUndamaged(1), toolHeadAxe.mat(MT.Bronze, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), IL.Tool_Axe_Steel.getUndamaged(1), toolHeadAxe.mat(MT.Steel, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.wooden_hoe, 1, 0), toolHeadHoe.mat(MT.Wood, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.stone_hoe, 1, 0), toolHeadHoe.mat(MT.Stone, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.iron_hoe, 1, 0), toolHeadHoe.mat(MT.Fe, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.golden_hoe, 1, 0), toolHeadHoe.mat(MT.Au, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), ST.make(Items.diamond_hoe, 1, 0), toolHeadHoe.mat(MT.Diamond, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), IL.Tool_Hoe_Bronze.getUndamaged(1), toolHeadHoe.mat(MT.Bronze, 1));
    RM.boxunbox(stick.mat(MT.Wood, 2), IL.Tool_Hoe_Steel.getUndamaged(1), toolHeadHoe.mat(MT.Steel, 1));
    CR.shaped(ST.make(Items.chainmail_helmet, 1, 0), DEF_REV | DEL_OTHER_SHAPED_RECIPES, "RRR", "RhR", 'R', ring.dat(ANY.Steel));
    CR.shaped(ST.make(Items.chainmail_chestplate, 1, 0), DEF_REV | DEL_OTHER_SHAPED_RECIPES, "RhR", "RRR", "RRR", 'R', ring.dat(ANY.Steel));
    CR.shaped(ST.make(Items.chainmail_leggings, 1, 0), DEF_REV | DEL_OTHER_SHAPED_RECIPES, "RRR", "RhR", "R R", 'R', ring.dat(ANY.Steel));
    CR.shaped(ST.make(Items.chainmail_boots, 1, 0), DEF_REV | DEL_OTHER_SHAPED_RECIPES, "R R", "RhR", 'R', ring.dat(ANY.Steel));
    for (int i = 1; i < 16; i++) CR.shapeless(ST.make(Blocks.wool, 1, i), DEF, new Object[] { ST.make(Blocks.wool, 1, 0), DYE_OREDICTS[15 - i] });
    CR.delate(ST.make(Items.arrow, 1, 0));
    CR.delate(ST.make(Items.cookie, 1, 0));
    CR.delate(ST.make(Items.golden_apple, 1, 0));
    CR.delate(ST.make(Items.golden_apple, 1, 1));
    CR.delate(ST.make(Items.golden_carrot, 1, 0));
    CR.shapeless(ST.make(Items.arrow, 1, 0), DEF_NCC, new Object[] { OD.itemFlint, arrowGtWood.dat(MT.Empty) });
    CR.shapeless(arrowGtWood.mat(MT.Empty, 1), DEF_NCC, new Object[] { Items.arrow });
    CR.shaped(arrowGtWood.mat(MT.Empty, 1), CR.DEF_NCC_MIR, " S", "F ", 'S', stick.dat(ANY.Wood), 'F', OD.craftingFeather);
    CR.shaped(arrowGtPlastic.mat(MT.Empty, 1), CR.DEF_NCC_MIR, " S", "F ", 'S', stick.dat(MT.Plastic), 'F', OD.craftingFeather);
    CR.shaped(arrowGtWood.mat(MT.Empty, 1), CR.DEF_NCC_MIR, "PS", "sP", 'S', stick.dat(ANY.Wood), 'P', plateTiny.dat(MT.Plastic));
    CR.shaped(arrowGtPlastic.mat(MT.Empty, 1), CR.DEF_NCC_MIR, "PS", "sP", 'S', stick.dat(MT.Plastic), 'P', plateTiny.dat(MT.Plastic));
    CR.shaped(ST.make(Blocks.stained_glass, 8, 0), DEF, "GGG", "GDG", "GGG", 'G', Blocks.glass, 'D', DYE_OREDICTS[15]);
    CR.shaped(ST.make(Items.speckled_melon, 1, 0), DEF | DEL_OTHER_SHAPED_RECIPES, "GGG", "GMG", "GGG", 'M', "cropMelon", 'G', nugget.dat(MT.Au));
    CR.remove(ST.make(Items.dye, 1, 1), ST.make(Items.dye, 1, 4));
    CR.remove(ST.make(Items.dye, 1, 2), ST.make(Items.dye, 1, 4));
    CR.remove(ST.make(Items.dye, 1, 5), ST.make(Items.dye, 1, 9));
    CR.remove(ST.make(Items.dye, 1, 1), ST.make(Items.dye, 1, 11));
    CR.remove(ST.make(Items.dye, 1, 1), ST.make(Items.dye, 1, 15));
    CR.remove(ST.make(Items.dye, 1, 2), ST.make(Items.dye, 1, 15));
    CR.remove(ST.make(Items.dye, 1, 4), ST.make(Items.dye, 1, 15));
    CR.remove(ST.make(Items.dye, 1, 8), ST.make(Items.dye, 1, 15));
    CR.remove(ST.make(Items.dye, 1, 0), ST.make(Items.dye, 1, 15));
    CR.remove(ST.make(Items.dye, 1, 0), ST.make(Items.dye, 1, 0), ST.make(Items.dye, 1, 15));
    CR.remove(ST.make(Items.dye, 1, 1), ST.make(Items.dye, 1, 4), ST.make(Items.dye, 1, 9));
    CR.remove(ST.make(Items.dye, 1, 1), ST.make(Items.dye, 1, 1), ST.make(Items.dye, 1, 4), ST.make(Items.dye, 1, 15));
    CR.shapeless(ST.make(Items.dye, 2, DYE_INDEX_Purple), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Red], DYE_OREDICTS_MIXABLE[DYE_INDEX_Blue] });
    CR.shapeless(ST.make(Items.dye, 2, DYE_INDEX_Cyan), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Green], DYE_OREDICTS_MIXABLE[DYE_INDEX_Blue] });
    CR.shapeless(ST.make(Items.dye, 2, DYE_INDEX_Pink), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Red], DYE_OREDICTS_MIXABLE[DYE_INDEX_White] });
    CR.shapeless(ST.make(Items.dye, 2, DYE_INDEX_Lime), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Green], DYE_OREDICTS_MIXABLE[DYE_INDEX_White] });
    CR.shapeless(ST.make(Items.dye, 2, DYE_INDEX_LightBlue), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Blue], DYE_OREDICTS_MIXABLE[DYE_INDEX_White] });
    CR.shapeless(ST.make(Items.dye, 2, DYE_INDEX_Magenta), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Purple], DYE_OREDICTS_MIXABLE[DYE_INDEX_Pink] });
    CR.shapeless(ST.make(Items.dye, 2, DYE_INDEX_Orange), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Red], DYE_OREDICTS_MIXABLE[DYE_INDEX_Yellow] });
    CR.shapeless(ST.make(Items.dye, 2, DYE_INDEX_Gray), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Black], DYE_OREDICTS_MIXABLE[DYE_INDEX_White] });
    CR.shapeless(ST.make(Items.dye, 2, DYE_INDEX_LightGray), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Gray], DYE_OREDICTS_MIXABLE[DYE_INDEX_White] });
    CR.shapeless(ST.make(Items.dye, 3, DYE_INDEX_LightGray), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Black], DYE_OREDICTS_MIXABLE[DYE_INDEX_White], DYE_OREDICTS_MIXABLE[DYE_INDEX_White] });
    CR.shapeless(ST.make(Items.dye, 3, DYE_INDEX_Magenta), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Blue], DYE_OREDICTS_MIXABLE[DYE_INDEX_Red], DYE_OREDICTS_MIXABLE[DYE_INDEX_Pink] });
    CR.shapeless(ST.make(Items.dye, 4, DYE_INDEX_Magenta), DEF, new Object[] { DYE_OREDICTS_MIXABLE[DYE_INDEX_Blue], DYE_OREDICTS_MIXABLE[DYE_INDEX_Red], DYE_OREDICTS_MIXABLE[DYE_INDEX_Red], DYE_OREDICTS_MIXABLE[DYE_INDEX_White] });
    CR.shaped(toolHeadArrow.mat(MT.Flint, 4), DEF, "fX", 'X', OD.itemFlint);
    RM.Sharpening.addRecipe1(T, 16, 64, ST.make(Items.flint, 1, W), toolHeadArrow.mat(MT.Flint, 4));
    RM.Sharpening.addRecipe1(T, 16, 64, ST.make(Blocks.glass_pane, 1, W), lens.mat(MT.Glass, 1));
    RM.Lathe.addRecipe1(T, 16, 16, ST.make(Blocks.glass_pane, 1, W), lens.mat(MT.Glass, 1), dustSmall.mat(MT.Glass, 1));
    RM.Lathe.addRecipe1(T, 16, 16, ST.make(Blocks.stone, 1, W), stickLong.mat(MT.Stone, 1));
    RM.Lathe.addRecipe1(T, 16, 32, IL.Module_Stone_Generator.get(0), stickLong.mat(MT.Stone, 1));
    RM.Lathe.addRecipe1(T, 16, 32, IL.Module_Basalt_Generator.get(0), stickLong.mat(MT.STONES.Basalt, 1));
    RM.Lathe.addRecipe1(T, 16, 32, IL.Module_Blackstone_Generator.get(0), stickLong.mat(MT.STONES.Blackstone, 1));
    RM.smash(ST.make(Blocks.brown_mushroom_block, 1, W), ST.make(Blocks.brown_mushroom, 1, 0));
    RM.smash(ST.make(Blocks.red_mushroom_block, 1, W), ST.make(Blocks.red_mushroom, 1, 0));
    RM.smash(ST.make(Blocks.quartz_block, 1, W), gem.mat(MT.NetherQuartz, 4));
    RM.smash(ST.make(Blocks.double_stone_slab, 1, 7), gem.mat(MT.NetherQuartz, 4));
    RM.smash(ST.make(Blocks.quartz_stairs, 1, W), gem.mat(MT.NetherQuartz, 6));
    RM.smash(ST.make(Blocks.stone_slab, 1, 7), gem.mat(MT.NetherQuartz, 2));
    RM.smash(ST.make(Blocks.stonebrick, 1, 0), ST.make(Blocks.stonebrick, 1, 2));
    RM.smash(ST.make(Blocks.stonebrick, 1, 1), ST.make(Blocks.cobblestone, 1, 0));
    RM.smash(ST.make(Blocks.stonebrick, 1, 2), ST.make(Blocks.cobblestone, 1, 0));
    RM.smash(ST.make(Blocks.stonebrick, 1, 3), ST.make(Blocks.cobblestone, 1, 0));
    RM.smash(ST.make(Blocks.stone, 1, 0), ST.make(Blocks.cobblestone, 1, 0));
    RM.smash(IL.Module_Stone_Generator.get(0), ST.make(Blocks.cobblestone, 1, 0));
    RM.smash(IL.Module_Basalt_Generator.get(0), IL.NeLi_Basalt.get(1, IL.NePl_Basalt.get(1, ST.make(BlocksGT.Basalt, 1, BlockStones.COBBL))));
    RM.smash(IL.Module_Blackstone_Generator.get(0), IL.NeLi_Blackstone.get(1, IL.NePl_Blackstone.get(1, ST.make(BlocksGT.Basalt, 1, BlockStones.COBBL))));
    RM.smash(ST.make(Blocks.cobblestone, 1, 0), ST.make(Blocks.gravel, 1, 0));
    RM.smash(ST.make(Blocks.sandstone, 1, W), ST.make(Blocks.sand, 1, 0));
    RM.smash(ST.make(Blocks.ice, 1, W), OM.dust(MT.Ice));
    RM.smash(ST.make(Blocks.packed_ice, 1, W), OM.dust(MT.Ice, 2 * U));
    RM.smash(ST.make(Blocks.hardened_clay, 1, W), OM.dust(MT.Clay, 2 * U));
    RM.smash(ST.make(Blocks.stained_hardened_clay, 1, W), OM.dust(MT.Clay, 2 * U));
    RM.smash(ST.make(Blocks.glass, 1, W), OM.dust(MT.Glass, U * 9));
    RM.smash(ST.make(Blocks.stained_glass, 1, W), OM.dust(MT.Glass, U * 9));
    RM.smash(ST.make(Blocks.glass_pane, 1, W), OM.dust(MT.Glass, U));
    RM.smash(ST.make(Blocks.stained_glass_pane, 1, W), OM.dust(MT.Glass, U));
    RM.Hammer.addRecipe1(T, 16, 16, ST.make(Blocks.brick_block, 1, W), ST.make(Items.brick, 3, 0));
    RM.Hammer.addRecipe1(T, 16, 16, ST.make(Blocks.double_stone_slab, 1, 4), ST.make(Items.brick, 3, 0));
    RM.Hammer.addRecipe1(T, 16, 16, ST.make(Blocks.brick_stairs, 1, W), ST.make(Items.brick, 5, 0));
    RM.Hammer.addRecipe1(T, 16, 16, ST.make(Blocks.stone_slab, 1, 4), ST.make(Items.brick, 1, 0));
    RM.Crusher.addRecipe1(T, 16, 64, new long[] { 10000, 9000, 8000, 7000 }, ST.make(Blocks.brick_block, 1, W), ST.make(Items.brick, 1, 0), ST.make(Items.brick, 1, 0), ST.make(Items.brick, 1, 0), ST.make(Items.brick, 1, 0));
    RM.Crusher.addRecipe1(T, 16, 64, new long[] { 10000, 9000, 8000, 7000 }, ST.make(Blocks.double_stone_slab, 1, 4), ST.make(Items.brick, 1, 0), ST.make(Items.brick, 1, 0), ST.make(Items.brick, 1, 0), ST.make(Items.brick, 1, 0));
    RM.Crusher.addRecipe1(T, 16, 64, new long[] { 10000, 9000, 8000, 7000 }, ST.make(Blocks.brick_stairs, 1, W), ST.make(Items.brick, 2, 0), ST.make(Items.brick, 2, 0), ST.make(Items.brick, 1, 0), ST.make(Items.brick, 1, 0));
    RM.Crusher.addRecipe1(T, 16, 32, new long[] { 10000, 8000 }, ST.make(Blocks.stone_slab, 1, 4), ST.make(Items.brick, 1, 0), ST.make(Items.brick, 1, 0));
    RM.glowstone(ST.make(Blocks.glowstone, 1, 0), MT.Glowstone);
    for (OreDictMaterial tMaterial : ANY.Wood.mToThis) {
        RM.sawing(16, 16, F, 3, stick.mat(tMaterial, 1), bolt.mat(tMaterial, 4));
        RM.sawing(16, 16, F, 1, stickLong.mat(tMaterial, 1), stick.mat(tMaterial, 2));
    }
    for (byte i = 0; i < 16; i++) {
        RM.sawing(16, 32, F, 50, ST.make(Blocks.stained_glass, 3, i), ST.make(Blocks.stained_glass_pane, 8, i));
        RM.sawing(16, 32, F, 50, ST.make(Blocks.wool, 2, i), ST.make(Blocks.carpet, 3, i));
    }
    RM.sawing(16, 32, F, 50, ST.make(Blocks.glass, 1, 0), ST.make(Blocks.glass_pane, 9, 0));
    RM.sawing(16, 16, F, 100, ST.make(Blocks.double_stone_slab, 1, 0), plate.mat(MT.Stone, 8), dust.mat(MT.Stone, 1));
    RM.sawing(16, 16, F, 100, ST.make(Blocks.double_stone_slab, 1, 8), plate.mat(MT.Stone, 8), dust.mat(MT.Stone, 1));
    RM.sawing(16, 16, F, 50, ST.make(Blocks.stone_slab, 1, 0), plate.mat(MT.Stone, 4), dustSmall.mat(MT.Stone, 2));
    RM.sawing(16, 16, F, 100, ST.make(Blocks.stone, 1, 0), ST.make(Blocks.stone_slab, 2, 0));
    RM.sawing(16, 16, F, 100, IL.Module_Stone_Generator.get(0), ST.make(Blocks.stone_slab, 1, 0));
    // TODO Basalt Slabs
    RM.sawing(16, 16, F, 100, IL.Module_Basalt_Generator.get(0), ST.make(Blocks.stone_slab, 1, 0));
    // TODO Blackstone Slabs
    RM.sawing(16, 16, F, 100, IL.Module_Blackstone_Generator.get(0), ST.make(Blocks.stone_slab, 1, 0));
    RM.sawing(16, 16, F, 100, ST.make(Blocks.sandstone, 1, 0), ST.make(Blocks.stone_slab, 2, 1));
    RM.sawing(16, 16, F, 100, ST.make(Blocks.cobblestone, 1, 0), ST.make(Blocks.stone_slab, 2, 3));
    RM.sawing(16, 16, F, 100, ST.make(Blocks.brick_block, 1, 0), ST.make(Blocks.stone_slab, 2, 4));
    RM.sawing(16, 16, F, 100, ST.make(Blocks.stonebrick, 1, 0), ST.make(Blocks.stone_slab, 2, 5));
    RM.sawing(16, 16, F, 100, ST.make(Blocks.nether_brick, 1, 0), ST.make(Blocks.stone_slab, 2, 6));
    RM.sawing(16, 16, F, 100, ST.make(Blocks.quartz_block, 1, W), ST.make(Blocks.stone_slab, 2, 7));
    RM.sawing(16, 16, F, 100, ST.make(Blocks.wooden_button, 1, W), IL.Plank.get(1));
    RM.sawing(16, 32, F, 100, ST.make(Blocks.wooden_pressure_plate, 1, W), IL.Plank.get(2));
    RM.sawing(16, 32, F, 100, ST.make(Items.sign, 1, W), IL.Plank.get(2), OM.dust(MT.Wood, stick.mAmount / 3));
    RM.sawing(16, 32, F, 100, ST.make(Items.wooden_door, 1, W), IL.Plank.get(2));
    RM.sawing(16, 32, F, 100, ST.make(Blocks.fence_gate, 1, W), IL.Plank.get(2), OM.dust(MT.Wood, stick.mAmount * 4));
    RM.sawing(16, 48, F, 100, ST.make(Blocks.trapdoor, 1, W), IL.Plank.get(3));
    RM.sawing(16, 48, F, 100, ST.make(Items.bed, 1, W), IL.Plank.get(3), ST.make(Blocks.wool, 3, 0));
    RM.sawing(16, 64, F, 100, ST.make(Blocks.crafting_table, 1, W), IL.Plank.get(4));
    RM.sawing(16, 80, F, 100, ST.make(Items.boat, 1, W), IL.Plank.get(5));
    RM.sawing(16, 96, F, 100, ST.make(Blocks.bookshelf, 1, W), IL.Plank.get(6), ST.make(Items.book, 3, 0));
    RM.sawing(16, 128, F, 100, ST.make(Blocks.chest, 1, W), IL.Plank.get(8));
    RM.sawing(16, 128, F, 100, ST.make(Blocks.trapped_chest, 1, W), IL.Plank.get(8), ST.make(Blocks.tripwire_hook, 1, 0));
    RM.sawing(16, 128, F, 100, ST.make(Blocks.noteblock, 1, W), IL.Plank.get(8), dust.mat(MT.Redstone, 1));
    RM.sawing(16, 128, F, 100, ST.make(Blocks.jukebox, 1, W), IL.Plank.get(8), gem.mat(MT.Diamond, 1));
    RM.sawing(16, 64, F, 100, ST.make(Items.painting, 1, W), IL.Stick.get(8));
    RM.sawing(16, 64, F, 100, ST.make(Items.item_frame, 1, W), IL.Stick.get(8));
    RM.sawing(16, 40, F, 100, ST.make(Blocks.ladder, 1, W), IL.Stick.get(2), OM.dust(MT.Wood, stick.mAmount / 3));
    RM.sawing(16, 16, T, 50, ST.make(Blocks.melon_block, 1, W), ST.make(Items.melon, 8, 0), ST.make(Items.melon_seeds, 1, 0));
    CR.shapeless(IL.Plank.get(1), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Blocks.wooden_button });
    CR.shapeless(IL.Plank.get(2), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Blocks.wooden_pressure_plate });
    CR.shapeless(IL.Plank.get(2), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Items.sign });
    CR.shapeless(IL.Plank.get(2), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Items.wooden_door });
    CR.shapeless(IL.Plank.get(2), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Blocks.fence_gate });
    CR.shapeless(IL.Plank.get(3), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Blocks.trapdoor });
    CR.shapeless(IL.Plank.get(3), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Items.bed });
    CR.shapeless(IL.Plank.get(4), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Blocks.crafting_table });
    CR.shapeless(IL.Plank.get(5), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Items.boat });
    CR.shapeless(IL.Plank.get(6), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Blocks.bookshelf });
    CR.shapeless(IL.Plank.get(8), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Blocks.chest });
    CR.shapeless(IL.Plank.get(8), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Blocks.trapped_chest });
    CR.shapeless(IL.Plank.get(8), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Blocks.noteblock });
    CR.shapeless(IL.Plank.get(8), CR.DEF_NCC, new Object[] { OreDictToolNames.saw, Blocks.jukebox });
    RM.Slicer.addRecipe2(T, 16, 16, ST.make(Blocks.melon_block, 1, W), IL.Shape_Slicer_Eigths.get(0), ST.make(Items.melon, 8, 0), ST.make(Items.melon_seeds, 1, 0));
    RM.Compressor.addRecipe1(T, 64, 32, ST.make(Blocks.ice, 2, W), ST.make(Blocks.packed_ice, 1, 0));
    RM.Compressor.addRecipe1(T, 16, 32, OM.dust(MT.Ice), ST.make(Blocks.ice, 1, 0));
    RM.Compressor.addRecipe1(T, 16, 16, OM.dust(MT.Ice, U4), gemChipped.mat(MT.Ice, 1));
    RM.Compressor.addRecipe1(T, 16, 16, gemChipped.mat(MT.Ice, 4), ST.make(Blocks.ice, 1, 0));
    RM.Compressor.addRecipe1(T, 16, 16, gemFlawed.mat(MT.Ice, 2), ST.make(Blocks.ice, 1, 0));
    RM.Compressor.addRecipe1(T, 16, 16, gem.mat(MT.Ice, 1), ST.make(Blocks.ice, 1, 0));
    RM.Compressor.addRecipe1(T, 16, 32, ST.make(Blocks.snow, 1, W), ST.make(Blocks.ice, 1, 0));
    RM.Compressor.addRecipe1(T, 16, 32, ST.make(Items.snowball, 4, W), ST.make(Blocks.snow, 1, 0));
    RM.Compressor.addRecipe1(T, 16, 16, ST.make(Items.quartz, 4, 0), ST.make(Blocks.quartz_block, 1, 0));
    RM.Compressor.addRecipe1(T, 16, 16, IL.Crop_Wheat.get(9), IL.Bale_Wheat.get(1));
    RM.Compressor.addRecipe1(T, 16, 32, ST.make(Blocks.sand, 4, 0), ST.make(Blocks.sandstone, 1, 0));
    RM.Compressor.addRecipe1(T, 16, 32, OM.dust(MT.Lapis), plateGem.mat(MT.Lapis, 1));
    RM.Compressor.addRecipe1(T, 16, 32, OM.dust(MT.Asbestos), plate.mat(MT.Asbestos, 1));
    RM.Compressor.addRecipe1(T, 16, 32, OM.dust(MT.Lazurite), plateGem.mat(MT.Lazurite, 1));
    RM.Compressor.addRecipe1(T, 16, 32, OM.dust(MT.Sodalite), plateGem.mat(MT.Sodalite, 1));
    RM.Freezer.addRecipe1(T, 16, 16, ST.tag(0), FL.Water.make(250), FL.Ice.make(250), ZL_IS);
    RM.Freezer.addRecipe1(T, 16, 64, ST.tag(0), FL.SpDew.make(250), FL.Ice.make(250), ZL_IS);
    RM.Freezer.addRecipe1(T, 16, 16, ST.tag(0), FL.DistW.make(250), FL.Ice.make(250), ZL_IS);
    RM.Freezer.addRecipe1(T, 16, 16, ST.tag(1), FL.Water.make(250), NF, ST.make(Items.snowball, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 64, ST.tag(1), FL.SpDew.make(250), NF, ST.make(Items.snowball, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 16, ST.tag(1), FL.DistW.make(250), NF, ST.make(Items.snowball, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 32, ST.tag(2), FL.Water.make(500), NF, ST.make(Blocks.snow_layer, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 128, ST.tag(2), FL.SpDew.make(500), NF, ST.make(Blocks.snow_layer, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 32, ST.tag(2), FL.DistW.make(500), NF, ST.make(Blocks.snow_layer, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 64, ST.tag(3), FL.Water.make(1000), NF, ST.make(Blocks.snow, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 256, ST.tag(3), FL.SpDew.make(1000), NF, ST.make(Blocks.snow, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 64, ST.tag(3), FL.DistW.make(1000), NF, ST.make(Blocks.snow, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 128, ST.tag(4), FL.Water.make(1000), NF, ST.make(Blocks.ice, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 512, ST.tag(4), FL.SpDew.make(1000), NF, ST.make(Blocks.ice, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 128, ST.tag(4), FL.DistW.make(1000), NF, ST.make(Blocks.ice, 1, 0));
    RM.Freezer.addRecipe1(T, 16, 32, ST.tag(5), FL.Water.make(250), NF, gemChipped.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 128, ST.tag(5), FL.SpDew.make(250), NF, gemChipped.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 32, ST.tag(5), FL.DistW.make(250), NF, gemChipped.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 64, ST.tag(6), FL.Water.make(500), NF, gemFlawed.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 256, ST.tag(6), FL.SpDew.make(500), NF, gemFlawed.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 64, ST.tag(6), FL.DistW.make(500), NF, gemFlawed.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 128, ST.tag(7), FL.Water.make(1000), NF, gem.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 512, ST.tag(7), FL.SpDew.make(1000), NF, gem.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 128, ST.tag(7), FL.DistW.make(1000), NF, gem.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 128, ST.tag(8), FL.Water.make(1000), NF, dust.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 512, ST.tag(8), FL.SpDew.make(1000), NF, dust.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 128, ST.tag(8), FL.DistW.make(1000), NF, dust.mat(MT.Ice, 1));
    RM.Freezer.addRecipe1(T, 16, 128, ST.tag(9), FL.Water.make(1000), NF, dust.mat(MT.Snow, 1));
    RM.Freezer.addRecipe1(T, 16, 512, ST.tag(9), FL.SpDew.make(1000), NF, dust.mat(MT.Snow, 1));
    RM.Freezer.addRecipe1(T, 16, 128, ST.tag(9), FL.DistW.make(1000), NF, dust.mat(MT.Snow, 1));
    RM.Mortar.addRecipe1(T, 16, 32, ST.make(Blocks.glass, 1, W), OM.dust(MT.Glass, U * 9));
    RM.Mortar.addRecipe1(T, 16, 32, ST.make(Blocks.stained_glass, 1, W), OM.dust(MT.Glass, U * 9));
    RM.Mortar.addRecipe1(T, 16, 32, ST.make(Blocks.glass_pane, 1, W), OM.dust(MT.Glass, U));
    RM.Mortar.addRecipe1(T, 16, 32, ST.make(Blocks.stained_glass_pane, 1, W), OM.dust(MT.Glass, U));
    RM.Mortar.addRecipe1(T, 16, 32, ST.make(Items.bone, 1, W), IL.Dye_Bonemeal.get(2));
    RM.Mortar.addRecipe1(T, 16, 16, ST.make(Items.flint, 1, W), dust.mat(MT.Flint, 1));
    RM.Mortar.addRecipe1(T, 16, 32, ST.make(Blocks.gravel, 1, W), ST.make(Items.flint, 1, 0));
    RM.Mortar.addRecipe1(T, 16, 16, ST.make(Items.coal, 1, 0), OM.dust(MT.Coal));
    RM.Mortar.addRecipe1(T, 16, 16, ST.make(Items.coal, 1, 1), OM.dust(MT.Charcoal));
    RM.Mortar.addRecipe1(T, 16, 16, ST.make(Items.rotten_flesh, 1, W), dust.mat(MT.MeatRotten, 1));
    RM.Shredder.addRecipe1(T, 16, 16, ST.make(Items.flint, 1, W), dust.mat(MT.Flint, 1));
    RM.Shredder.addRecipe1(T, 16, 16, ST.make(Blocks.gravel, 1, W), ST.make(Blocks.sand, 1, 0));
    RM.Shredder.addRecipe1(T, 16, 16, ST.make(Blocks.web, 1, W), ST.make(Items.string, 1, 0));
    RM.Shredder.addRecipe1(T, 16, 16, ST.make(Items.reeds, 1, W), IL.Remains_Plant.get(1));
    RM.Shredder.addRecipe1(T, 16, 16, ST.make(Blocks.cobblestone, 1, W), OM.dust(MT.Stone, U * 9));
    RM.Shredder.addRecipe1(T, 16, 16, ST.make(Blocks.stone, 1, W), OM.dust(MT.Stone, U * 9));
    RM.Shredder.addRecipe1(T, 16, 16, IL.Module_Stone_Generator.get(0), OM.dust(MT.Stone));
    RM.Shredder.addRecipe1(T, 16, 16, IL.Module_Basalt_Generator.get(0), OM.dust(MT.STONES.Basalt));
    RM.Shredder.addRecipe1(T, 16, 16, IL.Module_Blackstone_Generator.get(0), OM.dust(MT.STONES.Blackstone));
    RM.Shredder.addRecipe1(T, 16, 32, ST.make(Items.bone, 1, W), IL.Dye_Bonemeal.get(4));
    RM.Shredder.addRecipe1(T, 16, 128, 6000, ST.make(Blocks.melon_block, 1, W), IL.Remains_Fruit.get(9));
    for (OreDictMaterial tBlaze : ANY.Blaze.mToThis) {
        CR.shapeless(dustTiny.mat(tBlaze, 2), CR.DEF, new Object[] { stick.dat(tBlaze) });
        CR.shapeless(dustTiny.mat(tBlaze, 4), CR.DEF, new Object[] { stickLong.dat(tBlaze) });
        RM.Mortar.addRecipe1(T, 16, 32, stick.mat(tBlaze, 1), dustTiny.mat(tBlaze, 3));
        RM.Mortar.addRecipe1(T, 16, 64, stickLong.mat(tBlaze, 1), dustTiny.mat(tBlaze, 6));
        RM.Shredder.addRecipe1(T, 16, 32, stick.mat(tBlaze, 1), dustSmall.mat(tBlaze, 2));
        RM.Shredder.addRecipe1(T, 16, 64, stickLong.mat(tBlaze, 1), dust.mat(tBlaze, 1));
        RM.Compressor.addRecipe1(T, 16, 32, dust.mat(tBlaze, 1), plate.mat(tBlaze, 1));
        RM.Compressor.addRecipe1(T, 16, 32, dustSmall.mat(tBlaze, 4), plate.mat(tBlaze, 1));
        RM.Compressor.addRecipe1(T, 16, 32, dustTiny.mat(tBlaze, 9), plate.mat(tBlaze, 1));
        RM.ic2_compressor(dust.mat(tBlaze, 1), plate.mat(tBlaze, 1));
        RM.ic2_compressor(dustSmall.mat(tBlaze, 4), plate.mat(tBlaze, 1));
        RM.ic2_compressor(dustTiny.mat(tBlaze, 9), plate.mat(tBlaze, 1));
    }
    for (byte i = 0; i < 16; i++) {
        RM.Shredder.addRecipe1(T, 16, 16, 9000, ST.make(Blocks.wool, 1, i), i == 0 ? ST.make(Items.string, 4, 0) : plantGtFiber.mat(MT.DATA.Dye_Materials[15 - i], 4));
        CR.shaped(ST.make(Blocks.wool, 1, i), DEF, "XX", "XX", 'X', plantGtFiber.dat(MT.DATA.Dye_Materials[15 - i]));
        if (i != DYE_INDEX_White) {
            RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.wool, 1, 15 - i), MT.Cl.fluid(U20, T), NF, ST.make(Blocks.wool, 1, 0));
            RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.carpet, 1, 15 - i), MT.Cl.fluid(U40, T), NF, ST.make(Blocks.carpet, 1, 0));
        }
        for (FluidStack tDye : DYE_FLUIDS[i]) {
            if (i != DYE_INDEX_White) {
                RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.wool, 1, 0), FL.mul(tDye, 1, 16, T), NF, ST.make(Blocks.wool, 1, 15 - i));
                RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.carpet, 1, 0), FL.mul(tDye, 1, 32, T), NF, ST.make(Blocks.carpet, 1, 15 - i));
            }
            RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.hardened_clay, 1, 0), FL.mul(tDye, 1, 16, T), NF, ST.make(Blocks.stained_hardened_clay, 1, 15 - i));
            RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.glass, 1, 0), FL.mul(tDye, 1, 16, T), NF, ST.make(Blocks.stained_glass, 1, 15 - i));
            RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.glass_pane, 1, 0), FL.mul(tDye, 3, 128, T), NF, ST.make(Blocks.stained_glass_pane, 1, 15 - i));
        }
        RM.Loom.addRecipe2(T, 16, 16, ST.tag(0), plantGtFiber.mat(MT.DATA.Dye_Materials[15 - i], 4), ST.make(Blocks.wool, 1, i));
    }
    RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.stained_hardened_clay, 1, W), MT.Cl.fluid(U20, T), NF, ST.make(Blocks.hardened_clay, 1, 0));
    RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.stained_glass, 1, W), MT.Cl.fluid(U20, T), NF, ST.make(Blocks.glass, 1, 0));
    RM.Bath.addRecipe1(T, 0, 16, ST.make(Blocks.stained_glass_pane, 1, W), MT.Cl.fluid(U50, T), NF, ST.make(Blocks.glass_pane, 1, 0));
    RM.Loom.addRecipe2(T, 16, 16, ST.tag(0), plantGtFiber.mat(MT.Cu, 4), ST.make(Blocks.wool, 1, 1, "ORANGE WOOOOOOL!!!"));
    RM.Loom.addRecipe2(T, 16, 16, ST.tag(0), ST.make(Items.string, 4, W), ST.make(Blocks.wool, 1, 0));
    RM.Loom.addRecipe2(T, 16, 64, ST.tag(1), ST.make(Items.string, 4, W), ST.make(Blocks.web, 1, 0));
    RM.Loom.addRecipe2(T, 16, 16, ST.tag(0), ST.make(Items.reeds, 1, W), ST.make(Items.paper, 1, 0));
    for (FluidStack tWater : FL.waters(125, 100)) RM.Bath.addRecipe1(T, 0, 16, ST.make(Items.reeds, 1, W), tWater, NF, ST.make(Items.paper, 1, 0));
    for (OreDictMaterial tMat2 : ANY.Iron.mToThis) RM.Loom.addRecipe2(T, 64, 128, ST.make(Items.leather, 6, W), (tMat2 == MT.Enori ? plateGem : plate).mat(tMat2, 8), ST.make(Items.iron_horse_armor, 1, 0));
    RM.Loom.addRecipe2(T, 64, 128, ST.make(Items.leather, 6, W), plate.mat(MT.Au, 8), ST.make(Items.golden_horse_armor, 1, 0));
    RM.Loom.addRecipe2(T, 64, 128, ST.make(Items.leather, 6, W), plateGem.mat(MT.Diamond, 8), ST.make(Items.diamond_horse_armor, 1, 0));
    for (OreDictMaterial tMat2 : ANY.Steel.mToThis) RM.Loom.addRecipeX(T, 64, 128, ST.array(ST.make(Items.leather, 6, W), ring.mat(tMat2, 2), stick.mat(tMat2, 3)), ST.make(Items.saddle, 1, 0));
    RM.Loom.addRecipe2(T, 16, 128, ST.tag(4), ST.make(Items.leather, 5, W), ST.make(Items.leather_helmet, 1, 0));
    RM.Loom.addRecipe2(T, 16, 128, ST.tag(5), ST.make(Items.leather, 8, W), ST.make(Items.leather_chestplate, 1, 0));
    RM.Loom.addRecipe2(T, 16, 128, ST.tag(6), ST.make(Items.leather, 7, W), ST.make(Items.leather_leggings, 1, 0));
    RM.Loom.addRecipe2(T, 16, 128, ST.tag(7), ST.make(Items.leather, 4, W), ST.make(Items.leather_boots, 1, 0));
    for (OreDictMaterial tMat2 : ANY.Steel.mToThis) {
        RM.Loom.addRecipe2(T, 96, 128, ST.tag(4), ring.mat(tMat2, 5), ST.make(Items.chainmail_helmet, 1, 0));
        RM.Loom.addRecipe2(T, 96, 128, ST.tag(5), ring.mat(tMat2, 8), ST.make(Items.chainmail_chestplate, 1, 0));
        RM.Loom.addRecipe2(T, 96, 128, ST.tag(6), ring.mat(tMat2, 7), ST.make(Items.chainmail_leggings, 1, 0));
        RM.Loom.addRecipe2(T, 96, 128, ST.tag(7), ring.mat(tMat2, 4), ST.make(Items.chainmail_boots, 1, 0));
    }
    for (OreDictMaterial tMat2 : ANY.Fe.mToThis) if (tMat2 != MT.Enori)
        RM.RollBender.addRecipe1(T, 16, 256, plateCurved.mat(tMat2, 3), ST.make(Items.bucket, 1, 0));
    RM.Chisel.addRecipe1(T, 16, 16, ST.make(Blocks.stone, 1, W), ST.make(Blocks.stonebrick, 1, 3));
    RM.Chisel.addRecipe1(T, 16, 16, ST.make(Blocks.stonebrick, 1, 0), ST.make(Blocks.stonebrick, 1, 2));
    for (OreDictMaterial tMat2 : ANY.Glowstone.mToThis) {
        RM.Press.addRecipeX(T, 16, 144, ST.array(ST.tag(1), blockDust.mat(MT.Redstone, 4), blockDust.mat(tMat2, 4)), ST.make(Blocks.redstone_lamp, 9, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Redstone, 4), dust.mat(tMat2, 4)), ST.make(Blocks.redstone_lamp, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Redstone, 16), dust.mat(tMat2, 4)), ST.make(Blocks.redstone_lamp, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Redstone, 36), dust.mat(tMat2, 4)), ST.make(Blocks.redstone_lamp, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Redstone, 4), dustSmall.mat(tMat2, 16)), ST.make(Blocks.redstone_lamp, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Redstone, 16), dustSmall.mat(tMat2, 16)), ST.make(Blocks.redstone_lamp, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Redstone, 36), dustSmall.mat(tMat2, 16)), ST.make(Blocks.redstone_lamp, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Redstone, 4), dustTiny.mat(tMat2, 36)), ST.make(Blocks.redstone_lamp, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Redstone, 16), dustTiny.mat(tMat2, 36)), ST.make(Blocks.redstone_lamp, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Redstone, 36), dustTiny.mat(tMat2, 36)), ST.make(Blocks.redstone_lamp, 1, 0));
    }
    for (OreDictMaterial tMat2 : ANY.SiO2.mToThis) {
        RM.Press.addRecipeX(T, 16, 144, ST.array(ST.tag(1), blockDust.mat(MT.Gunpowder, 4), blockDust.mat(tMat2, 4)), ST.make(Blocks.tnt, 9, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Gunpowder, 4), dust.mat(tMat2, 4)), ST.make(Blocks.tnt, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dustSmall.mat(MT.Gunpowder, 16), dust.mat(tMat2, 4)), ST.make(Blocks.tnt, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dustTiny.mat(MT.Gunpowder, 36), dust.mat(tMat2, 4)), ST.make(Blocks.tnt, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Gunpowder, 4), dustSmall.mat(tMat2, 16)), ST.make(Blocks.tnt, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dustSmall.mat(MT.Gunpowder, 16), dustSmall.mat(tMat2, 16)), ST.make(Blocks.tnt, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dustTiny.mat(MT.Gunpowder, 36), dustSmall.mat(tMat2, 16)), ST.make(Blocks.tnt, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dust.mat(MT.Gunpowder, 4), dustTiny.mat(tMat2, 36)), ST.make(Blocks.tnt, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dustSmall.mat(MT.Gunpowder, 16), dustTiny.mat(tMat2, 36)), ST.make(Blocks.tnt, 1, 0));
        RM.Press.addRecipeX(T, 16, 16, ST.array(ST.tag(1), dustTiny.mat(MT.Gunpowder, 36), dustTiny.mat(tMat2, 36)), ST.make(Blocks.tnt, 1, 0));
    }
    RM.Squeezer.addRecipe1(T, 16, 128, 6000, ST.make(Blocks.melon_block, 1, W), NF, FL.Juice_Melon.make(2250), IL.Remains_Fruit.get(9));
    RM.Squeezer.addRecipe1(T, 16, 16, 2000, ST.make(Blocks.red_flower, 1, 0), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Red], 2), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 2000, ST.make(Blocks.red_flower, 1, 1), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_LightBlue], 2), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 2000, ST.make(Blocks.red_flower, 1, 2), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Magenta], 2), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 2000, ST.make(Blocks.red_flower, 1, 3), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_LightGray], 2), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 2000, ST.make(Blocks.red_flower, 1, 4), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Red], 2), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 2000, ST.make(Blocks.red_flower, 1, 5), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Orange], 2), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 2000, ST.make(Blocks.red_flower, 1, 6), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_LightGray], 2), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 2000, ST.make(Blocks.red_flower, 1, 7), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Pink], 2), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 2000, ST.make(Blocks.red_flower, 1, 8), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_LightGray], 2), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 2000, ST.make(Blocks.yellow_flower, 1, 0), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Yellow], 2), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 4000, ST.make(Blocks.double_plant, 1, 1), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Magenta], 3), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 4000, ST.make(Blocks.double_plant, 1, 4), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Red], 3), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 4000, ST.make(Blocks.double_plant, 1, 5), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Pink], 3), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 16, 10000, ST.make(Blocks.double_plant, 1, 0), NF, FL.Oil_Sunflower.make(100), ST.make(Items.dye, 2, DYE_INDEX_Yellow));
    RM.Squeezer.addRecipe1(T, 16, 16, 7000, ST.make(Blocks.cactus, 1, W), NF, FL.Juice_Cactus.make(100), IL.Dye_Cactus.get(2));
    RM.Squeezer.addRecipe1(T, 16, 16, 4000, ST.make(Items.reeds, 1, W), NF, FL.Juice_Reed.make(100), IL.Remains_Plant.get(1));
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Ice, U9), NF, FL.Ice.make(111), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Ice, U4), NF, FL.Ice.make(250), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Ice), NF, FL.Ice.make(1000), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, gemChipped.mat(MT.Ice, 1), NF, FL.Ice.make(250), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, gemFlawed.mat(MT.Ice, 1), NF, FL.Ice.make(500), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, gem.mat(MT.Ice, 1), NF, FL.Ice.make(1000), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, ST.make(Blocks.ice, 1, W), NF, FL.Ice.make(1000), NI);
    RM.Squeezer.addRecipe1(T, 16, 128, 10000, ST.make(Blocks.packed_ice, 1, W), NF, FL.Ice.make(2000), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Snow, U9), NF, FL.Ice.make(111), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Snow, U4), NF, FL.Ice.make(250), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Snow), NF, FL.Ice.make(1000), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, ST.make(Items.snowball, 1, W), NF, FL.Ice.make(250), NI);
    RM.Squeezer.addRecipe1(T, 16, 64, 10000, ST.make(Blocks.snow, 1, W), NF, FL.Ice.make(1000), NI);
    RM.Squeezer.addRecipe1(T, 16, 16, 10000, ST.make(Blocks.red_mushroom, 1, W), NF, FL.Potion_Poison_1.make(250), NI);
    RM.Squeezer.addRecipe1(T, 16, 16, 10000, ST.make(Items.poisonous_potato, 1, W), NF, FL.Potion_Poison_1.make(250), NI);
    RM.Squeezer.addRecipe1(T, 16, 16, 10000, ST.make(Items.spider_eye, 1, W), NF, FL.Potion_Poison_1.make(250), OM.dust(MT.MeatRaw, U2));
    RM.Squeezer.addRecipe1(T, 16, 32, 10000, ST.make(Items.fish, 1, 3), NF, FL.Potion_Poison_2.make(250), OM.dust(MT.FishRaw, U));
    RM.Squeezer.addRecipe1(T, 16, 128, 10000, ST.make(Items.golden_apple, 1, 0), NF, FL.make("potion.goldenapplejuice", 250), OM.dust(MT.Au, U * 2));
    RM.Squeezer.addRecipe1(T, 16, 128, 10000, ST.make(Items.golden_apple, 1, 1), NF, FL.make("potion.idunsapplejuice", 250), OM.dust(MT.Au, U * 18));
    RM.Squeezer.addRecipe1(T, 16, 128, 10000, ST.make(Items.golden_carrot, 1, 0), NF, FL.make("goldencarrotjuice", 250), OM.dust(MT.Au, 2 * U9));
    RM.Squeezer.addRecipe1(T, 16, 16, 10000, IL.Dye_SquidInk.get(1), NF, FL.make("squidink", 2 * L), NI);
    RM.Juicer.addRecipe1(T, 16, 16, 3000, ST.make(Blocks.red_flower, 1, 0), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Red], 1), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 3000, ST.make(Blocks.red_flower, 1, 1), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_LightBlue], 1), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 3000, ST.make(Blocks.red_flower, 1, 2), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Magenta], 1), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 3000, ST.make(Blocks.red_flower, 1, 3), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_LightGray], 1), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 3000, ST.make(Blocks.red_flower, 1, 4), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Red], 1), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 3000, ST.make(Blocks.red_flower, 1, 5), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Orange], 1), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 3000, ST.make(Blocks.red_flower, 1, 6), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_LightGray], 1), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 3000, ST.make(Blocks.red_flower, 1, 7), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Pink], 1), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 3000, ST.make(Blocks.red_flower, 1, 8), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_LightGray], 1), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 3000, ST.make(Blocks.yellow_flower, 1, 0), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Yellow], 1), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 6000, ST.make(Blocks.double_plant, 1, 1), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Magenta], 2), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 6000, ST.make(Blocks.double_plant, 1, 4), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Red], 2), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 6000, ST.make(Blocks.double_plant, 1, 5), NF, FL.mul(DYE_FLUIDS_FLOWER[DYE_INDEX_Pink], 2), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 16, 10000, ST.make(Blocks.double_plant, 1, 0), NF, FL.Oil_Sunflower.make(75), ST.make(Items.dye, 2, 11));
    RM.Juicer.addRecipe1(T, 16, 16, 9000, ST.make(Blocks.cactus, 1, W), NF, FL.Juice_Cactus.make(75), IL.Dye_Cactus.get(2));
    RM.Juicer.addRecipe1(T, 16, 16, 5000, ST.make(Items.reeds, 1, W), NF, FL.Juice_Reed.make(75), IL.Remains_Plant.get(1));
    RM.Juicer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Ice, U9), NF, FL.Ice.make(111), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Ice, U4), NF, FL.Ice.make(250), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Ice), NF, FL.Ice.make(1000), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, gemChipped.mat(MT.Ice, 1), NF, FL.Ice.make(250), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, gemFlawed.mat(MT.Ice, 1), NF, FL.Ice.make(500), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, gem.mat(MT.Ice, 1), NF, FL.Ice.make(1000), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, ST.make(Blocks.ice, 1, W), NF, FL.Ice.make(1000), NI);
    RM.Juicer.addRecipe1(T, 16, 128, 10000, ST.make(Blocks.packed_ice, 1, W), NF, FL.Ice.make(2000), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Snow, U9), NF, FL.Ice.make(111), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Snow, U4), NF, FL.Ice.make(250), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, OM.dust(MT.Snow), NF, FL.Ice.make(1000), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, ST.make(Items.snowball, 1, W), NF, FL.Ice.make(250), NI);
    RM.Juicer.addRecipe1(T, 16, 64, 10000, ST.make(Blocks.snow, 1, W), NF, FL.Ice.make(1000), NI);
    RM.Juicer.addRecipe1(T, 16, 16, 10000, ST.make(Blocks.red_mushroom, 1, W), NF, FL.Potion_Poison_1.make(125), NI);
    RM.Juicer.addRecipe1(T, 16, 16, 10000, ST.make(Items.poisonous_potato, 1, W), NF, FL.Potion_Poison_1.make(125), NI);
    RM.Juicer.addRecipe1(T, 16, 16, 10000, ST.make(Items.spider_eye, 1, W), NF, FL.Potion_Poison_1.make(125), OM.dust(MT.MeatRaw, U2));
    RM.Juicer.addRecipe1(T, 16, 32, 10000, ST.make(Items.fish, 1, 3), NF, FL.Potion_Poison_2.make(125), OM.dust(MT.FishRaw, U));
    RM.Juicer.addRecipe1(T, 16, 16, 10000, IL.Dye_SquidInk.get(1), NF, FL.make("squidink", 3 * L / 2), NI);
    RM.Bath.addRecipe1(T, 0, 128, ST.make(Items.golden_apple, 1, 0), MT.Au.liquid(U * 64, T), NF, ST.make(Items.golden_apple, 1, 1));
    RM.Bath.addRecipe1(T, 0, 16, ST.make(Items.carrot, 1, W), MT.Au.liquid(8 * U9, T), NF, ST.make(Items.golden_carrot, 1, 0));
    RM.Bath.addRecipe1(T, 0, 16, ST.make(Items.melon, 1, W), MT.Au.liquid(8 * U9, T), NF, ST.make(Items.speckled_melon, 1, 0));
    RM.Mixer.addRecipe2(T, 16, 16, ST.make(Items.melon, 1, W), nugget.mat(MT.Au, 8), ST.make(Items.speckled_melon, 1, 0));
    for (FluidStack tWater : FL.waters(50)) {
        RM.Mixer.addRecipe0(T, 16, 16, FL.array(tWater, FL.Lava.make(1000)), NF, ST.make(Blocks.obsidian, 1, 0));
        if (FL.Lava_Volcanic.exists())
            RM.Mixer.addRecipe0(T, 16, 16, FL.array(tWater, FL.Lava_Volcanic.make(1000)), NF, ST.make(BlocksGT.Basalt, 1, BlockStones.STONE));
        RM.Mixer.addRecipe0(T, 16, 16, FL.array(tWater, FL.Lava_Pahoehoe.make(1000)), NF, ST.make(BlocksGT.Basalt, 1, BlockStones.STONE));
    }
    for (FluidStack tWater : FL.waters(3000)) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.STONES.Redrock), tWater, NF, IL.Clay_Ball_Red.get(4));
    RM.Mixer.addRecipe2(T, 16, 16, OM.dust(MT.EnderPearl), OM.dust(MT.Blaze, U9), OM.dust(MT.EnderEye));
    RM.Mixer.addRecipe2(T, 16, 144, OM.dust(MT.EnderPearl, U * 9), OM.dust(MT.Blaze), OM.dust(MT.EnderEye, U * 9));
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Sugar), ST.make(Items.spider_eye, 1, W), ST.make(Blocks.brown_mushroom, 1, W)), ST.make(Items.fermented_spider_eye, 1, 0));
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(gemChipped.mat(MT.Sugar, 4), ST.make(Items.spider_eye, 1, W), ST.make(Blocks.brown_mushroom, 1, W)), ST.make(Items.fermented_spider_eye, 1, 0));
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Coal), OM.dust(MT.Blaze, U9), OM.dust(MT.Gunpowder)), ST.make(Items.fire_charge, 3, 0));
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.Charcoal), OM.dust(MT.Blaze, U9), OM.dust(MT.Gunpowder)), ST.make(Items.fire_charge, 3, 0));
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.CoalCoke), OM.dust(MT.Blaze, U9), OM.dust(MT.Gunpowder)), ST.make(Items.fire_charge, 3, 0));
    RM.Mixer.addRecipeX(T, 16, 16, ST.array(OM.dust(MT.LigniteCoke), OM.dust(MT.Blaze, U9), OM.dust(MT.Gunpowder)), ST.make(Items.fire_charge, 3, 0));
    RM.Electrolyzer.addRecipe2(T, 64, 576, ST.tag(0), ST.make(Blocks.sand, 1, 0), OM.dust(MT.SiO2, U * 9));
    RM.Electrolyzer.addRecipe2(T, 64, 64, ST.tag(0), OM.dust(MT.Sand), OM.dust(MT.SiO2));
    RM.Centrifuge.addRecipe1(T, 16, 16, OM.dust(MT.SlimyBone), NF, FL.Slime_Green.make(250), OM.dust(MT.Bone));
    RM.Centrifuge.addRecipe1(T, 16, 16, ST.make(Items.magma_cream, 1, W), NF, FL.Slime_Green.make(250), ST.make(Items.blaze_powder, 1, 0));
    for (String tFluid : FluidsGT.SLIME) if (FL.exists(tFluid)) {
        RM.Centrifuge.addRecipe0(T, 16, 64, FL.make(tFluid, 250), FL.Latex.make(L / 2), FL.Glue.make(250));
        RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Blaze, U9), FL.make(tFluid, 250), NF, ST.make(Items.magma_cream, 1, 0));
        RM.Mixer.addRecipe1(T, 16, 144, OM.dust(MT.Blaze), FL.make(tFluid, 2250), NF, ST.make(Items.magma_cream, 9, 0));
    }
    if (ENABLE_ADDING_IC2_EXTRACTOR_RECIPES) {
        RM.ic2_extractor(ST.make(Blocks.red_flower, 1, 0), ST.make(Items.dye, 2, 1));
        RM.ic2_extractor(ST.make(Blocks.red_flower, 1, 1), ST.make(Items.dye, 2, 12));
        RM.ic2_extractor(ST.make(Blocks.red_flower, 1, 2), ST.make(Items.dye, 2, 13));
        RM.ic2_extractor(ST.make(Blocks.red_flower, 1, 3), ST.make(Items.dye, 2, 7));
        RM.ic2_extractor(ST.make(Blocks.red_flower, 1, 4), ST.make(Items.dye, 2, 1));
        RM.ic2_extractor(ST.make(Blocks.red_flower, 1, 5), ST.make(Items.dye, 2, 14));
        RM.ic2_extractor(ST.make(Blocks.red_flower, 1, 6), ST.make(Items.dye, 2, 7));
        RM.ic2_extractor(ST.make(Blocks.red_flower, 1, 7), ST.make(Items.dye, 2, 9));
        RM.ic2_extractor(ST.make(Blocks.red_flower, 1, 8), ST.make(Items.dye, 2, 7));
        RM.ic2_extractor(ST.make(Blocks.yellow_flower, 1, 0), ST.make(Items.dye, 2, 11));
        RM.ic2_extractor(ST.make(Blocks.double_plant, 1, 0), ST.make(Items.dye, 3, 11));
        RM.ic2_extractor(ST.make(Blocks.double_plant, 1, 1), ST.make(Items.dye, 3, 13));
        RM.ic2_extractor(ST.make(Blocks.double_plant, 1, 4), ST.make(Items.dye, 3, 1));
        RM.ic2_extractor(ST.make(Blocks.double_plant, 1, 5), ST.make(Items.dye, 3, 9));
        RM.ic2_extractor(ST.make(Blocks.cactus, 1, W), IL.Dye_Cactus.get(2));
    }
    RM.ic2_compressor(ST.make(Blocks.red_flower, 8, W), IL.IC2_Plantball.get(1));
    RM.ic2_compressor(ST.make(Blocks.yellow_flower, 8, W), IL.IC2_Plantball.get(1));
    RM.ic2_compressor(ST.make(Blocks.double_plant, 8, W), IL.IC2_Plantball.get(1));
    RM.pulverizing(ST.make(Items.reeds, 1, W), IL.Remains_Plant.get(1), T);
    RM.biomass(ST.make(Blocks.brown_mushroom_block, 8, W));
    RM.biomass(ST.make(Blocks.red_mushroom_block, 8, W));
    RM.biomass(ST.make(Blocks.brown_mushroom, 8, W));
    RM.biomass(ST.make(Blocks.red_mushroom, 8, W));
    RM.biomass(ST.make(Blocks.red_flower, 8, W));
    RM.biomass(ST.make(Blocks.yellow_flower, 8, W));
    RM.biomass(ST.make(Blocks.double_plant, 8, W));
    RM.biomass(ST.make(Blocks.melon_block, 1, W));
    RM.biomass(ST.make(Blocks.pumpkin, 2, W));
    RM.biomass(ST.make(Blocks.cactus, 8, W));
    RM.biomass(ST.make(Blocks.vine, 8, W));
    RM.biomass(ST.make(Items.reeds, 8, W));
    RM.biomass(ST.make(Items.melon, 9, W));
    RM.biomass(ST.make(Items.wheat, 9, W));
    RM.biomass(ST.make(Items.carrot, 9, W));
    RM.biomass(ST.make(Items.potato, 9, W));
    RM.biomass(ST.make(Items.poisonous_potato, 9, W));
    RM.biomass(IL.Dye_Cactus.get(16));
    RM.biomass(IL.Dye_Cocoa.get(16));
    RM.add_smelting(ST.make(Blocks.sticky_piston, 1, W), ST.make(Blocks.piston, 1, 0), F, T, F);
    RM.add_smelting(ST.make(Items.glass_bottle, 1, W), ST.make(Blocks.glass_pane, 1, 0), F, F, F);
    RM.unbox(IL.Plank.get(3), ST.make(Blocks.bookshelf, 1, W), ST.make(Items.book, 3, 0));
    RM.pack(ST.make(Items.brick, 4, W), ST.make(Blocks.brick_block, 1, 0));
    RM.pack(ST.make(Items.netherbrick, 4, W), ST.make(Blocks.nether_brick, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Black, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Red, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Green, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Brown, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Blue, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Purple, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Cyan, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.LightGray, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Gray, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Pink, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Lime, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Yellow, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.LightBlue, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Magenta, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Orange, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.White, 1), ST.make(Items.string, 1, 0));
    RM.generify(plantGtFiber.mat(MT.Cu, 1), ST.make(Items.string, 1, 0));
    new Loader_Recipes_OreDict();
}
Also used : OreDictMaterial(gregapi.oredict.OreDictMaterial) FluidStack(net.minecraftforge.fluids.FluidStack) ItemStack(net.minecraft.item.ItemStack)

Aggregations

OreDictMaterial (gregapi.oredict.OreDictMaterial)81 ItemStack (net.minecraft.item.ItemStack)41 FluidStack (net.minecraftforge.fluids.FluidStack)22 OreDictItemData (gregapi.oredict.OreDictItemData)20 IOreDictListenerEvent (gregapi.oredict.event.IOreDictListenerEvent)13 OreDictListenerEvent_Names (gregapi.oredict.event.OreDictListenerEvent_Names)12 ArrayListNoNulls (gregapi.code.ArrayListNoNulls)11 OreDictPrefix (gregapi.oredict.OreDictPrefix)10 OreDictMaterialStack (gregapi.oredict.OreDictMaterialStack)7 Block (net.minecraft.block.Block)7 ItemStackContainer (gregapi.code.ItemStackContainer)6 List (java.util.List)6 Recipe (gregapi.recipes.Recipe)5 Item (net.minecraft.item.Item)5 MultiTileEntityRegistry (gregapi.block.multitileentity.MultiTileEntityRegistry)4 IToolStats (gregapi.item.multiitem.tools.IToolStats)4 IOreDictConfigurationComponent (gregapi.oredict.configurations.IOreDictConfigurationComponent)4 OreDictListenerEvent_TwoNames (gregapi.oredict.event.OreDictListenerEvent_TwoNames)4 ArrayList (java.util.ArrayList)4 FluidContainerData (net.minecraftforge.fluids.FluidContainerRegistry.FluidContainerData)4