Search in sources :

Example 1 with MultiItem

use of gregapi.item.multiitem.MultiItem in project gregtech6 by GregTech6.

the class GT6_Main method onModPostInit2.

@Override
public void onModPostInit2(FMLPostInitializationEvent aEvent) {
    ItemStack tLignite = ST.make(MD.UB, "ligniteCoal", 1, 0);
    if (ST.valid(tLignite))
        CR.remove(tLignite, tLignite, tLignite, tLignite, tLignite, tLignite, tLignite, tLignite, tLignite);
    Block tBlock = ST.block(MD.FR, "beehives", NB);
    if (tBlock != NB) {
        tBlock.setHarvestLevel("scoop", 0);
        GT_Tool_Scoop.sBeeHiveMaterial = tBlock.getMaterial();
    }
    for (IItemContainer tBee : new IItemContainer[] { IL.FR_Bee_Drone, IL.FR_Bee_Princess, IL.FR_Bee_Queen }) if (tBee.exists()) {
        for (String tFluid : FluidsGT.HONEY) if (FL.exists(tFluid))
            RM.Bumblelyzer.addFakeRecipe(F, ST.array(tBee.wild(1)), ST.array(tBee.getWithName(1, "Scanned Bee")), null, null, FL.array(FL.make(tFluid, 50)), null, 64, 16, 0);
        RM.Bumblelyzer.addFakeRecipe(F, ST.array(tBee.wild(1)), ST.array(tBee.getWithName(1, "Scanned Bee")), null, null, FL.array(FL.Honeydew.make(50)), null, 64, 16, 0);
    }
    for (IItemContainer tPlant : new IItemContainer[] { IL.FR_Tree_Sapling, IL.IC2_Crop_Seeds }) if (tPlant.exists()) {
        RM.Plantalyzer.addFakeRecipe(F, ST.array(tPlant.wild(1)), ST.array(tPlant.getWithName(1, "Scanned Plant")), null, null, null, null, 64, 16, 0);
    }
    for (ItemStack tStack : OreDictManager.getOres("bookWritten", F)) RM.ScannerVisuals.addFakeRecipe(F, ST.array(tStack, IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing scanned Book"), tStack), null, null, ZL_FS, ZL_FS, 512, 16, 0);
    RM.ScannerVisuals.addFakeRecipe(F, ST.array(IL.Paper_Printed_Pages.get(1), IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing scanned Book"), IL.Paper_Printed_Pages.get(1)), null, null, ZL_FS, ZL_FS, 512, 16, 0);
    RM.ScannerVisuals.addFakeRecipe(F, ST.array(IL.Paper_Printed_Pages_Many.get(1), IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing large scanned Book"), IL.Paper_Printed_Pages_Many.get(1)), null, null, ZL_FS, ZL_FS, 512, 16, 0);
    for (ItemStack tStack : OreDictManager.getOres("gt:canvas", F)) RM.ScannerVisuals.addFakeRecipe(F, ST.array(tStack, IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing scanned Block"), tStack), null, null, ZL_FS, ZL_FS, 64, 16, 0);
    RM.ScannerVisuals.addFakeRecipe(F, ST.array(ST.make(Blocks.crafting_table, 1, 0, "ANY BLOCK"), IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing scanned Block"), ST.make(Blocks.crafting_table, 1, 0, "ANY BLOCK")), null, null, ZL_FS, ZL_FS, 512, 16, 0);
    RM.ScannerVisuals.addFakeRecipe(F, ST.array(ST.make(Items.filled_map, 1, W), IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing scanned Map"), ST.make(Items.filled_map, 1, W)), null, null, ZL_FS, ZL_FS, 64, 16, 0);
    RM.ScannerVisuals.addFakeRecipe(F, ST.array(IL.Paper_Blueprint_Used.get(1), IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing scanned Blueprint"), IL.Paper_Blueprint_Used.get(1)), null, null, ZL_FS, ZL_FS, 64, 16, 0);
    if (IL.GC_Schematic_1.exists())
        RM.ScannerVisuals.addFakeRecipe(F, ST.array(IL.GC_Schematic_1.wild(1), IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing scanned Schematics"), IL.GC_Schematic_1.wild(1)), null, null, ZL_FS, ZL_FS, 1024, 16, 0);
    if (IL.GC_Schematic_2.exists())
        RM.ScannerVisuals.addFakeRecipe(F, ST.array(IL.GC_Schematic_2.wild(1), IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing scanned Schematics"), IL.GC_Schematic_2.wild(1)), null, null, ZL_FS, ZL_FS, 1024, 16, 0);
    if (IL.GC_Schematic_3.exists())
        RM.ScannerVisuals.addFakeRecipe(F, ST.array(IL.GC_Schematic_3.wild(1), IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing scanned Schematics"), IL.GC_Schematic_3.wild(1)), null, null, ZL_FS, ZL_FS, 1024, 16, 0);
    if (IL.IE_Blueprint_Projectiles_Common.exists())
        RM.ScannerVisuals.addFakeRecipe(F, ST.array(IL.IE_Blueprint_Projectiles_Common.wild(1), IL.USB_Stick_1.get(1)), ST.array(IL.USB_Stick_1.getWithName(1, "Containing scanned Engineer's Blueprint"), IL.IE_Blueprint_Projectiles_Common.wild(1)), null, null, ZL_FS, ZL_FS, 1024, 16, 0);
    RM.Printer.addRecipe1(T, 16, 256, ST.make(Items.book, 1, W), DYE_FLUIDS_CHEMICAL[DYE_INDEX_Black], NF, ST.book("Manual_Printer", ST.make(Items.written_book, 1, 0)));
    for (ItemStack tStack : OreDictManager.getOres("gt:canvas", F)) RM.Printer.addFakeRecipe(F, ST.array(tStack, IL.USB_Stick_1.getWithName(0, "Containing scanned Block")), ST.array(tStack), null, null, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Yellow], 1, 9, T), FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Magenta], 1, 9, T), FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Cyan], 1, 9, T), FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Black], 1, 9, T)), ZL_FS, 64, 16, 0);
    // RM.Printer.addFakeRecipe(F, ST.array(IL.Paper_Punch_Card_Empty.get(1)   , IL.USB_Stick_1.getWithName(0, "Containing scanned Punchcard"           )), ST.array(IL.Paper_Punch_Card_Encoded.get(1)        ), null, null, FL.array(                                                                                                                                                                       FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Black], 1, 9, T)), ZL_FS,   32, 16, 0);
    RM.Printer.addFakeRecipe(F, ST.array(IL.Paper_Blueprint_Empty.get(1), IL.USB_Stick_1.getWithName(0, "Containing scanned Blueprint")), ST.array(IL.Paper_Blueprint_Used.get(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_White], 1, 9, T)), ZL_FS, 32, 16, 0);
    RM.Printer.addFakeRecipe(F, ST.array(ST.make(Items.paper, 1, W), IL.USB_Stick_1.getWithName(0, "Containing scanned Blueprint")), ST.array(IL.Paper_Blueprint_Used.get(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Blue], 1, 1, T)), ZL_FS, 128, 16, 0);
    RM.Printer.addFakeRecipe(F, ST.array(ST.make(Items.paper, 3, W), IL.USB_Stick_1.getWithName(0, "Containing scanned Book")), ST.array(IL.Paper_Printed_Pages.get(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Black], 1, 2, T)), ZL_FS, 512, 16, 0);
    RM.Printer.addFakeRecipe(F, ST.array(ST.make(Items.paper, 6, W), IL.USB_Stick_1.getWithName(0, "Containing large scanned Book")), ST.array(IL.Paper_Printed_Pages_Many.get(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Black], 1, 1, T)), ZL_FS, 1024, 16, 0);
    RM.Printer.addFakeRecipe(F, ST.array(ST.make(Items.map, 1, W), IL.USB_Stick_1.getWithName(0, "Containing scanned Map")), ST.array(ST.make(Items.filled_map, 1, 0)), null, null, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Yellow], 1, 9, T), FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Magenta], 1, 9, T), FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Cyan], 1, 9, T), FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Black], 1, 9, T)), ZL_FS, 64, 16, 0);
    if (IL.GC_Schematic_1.exists())
        RM.Printer.addFakeRecipe(F, ST.array(ST.make(Items.paper, 8, W), IL.USB_Stick_1.getWithName(0, "Containing scanned Schematics")), ST.array(IL.GC_Schematic_1.wild(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Black], 4, 1, T)), ZL_FS, 2048, 16, 0);
    if (IL.GC_Schematic_2.exists())
        RM.Printer.addFakeRecipe(F, ST.array(ST.make(Items.paper, 8, W), IL.USB_Stick_1.getWithName(0, "Containing scanned Schematics")), ST.array(IL.GC_Schematic_2.wild(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Black], 4, 1, T)), ZL_FS, 2048, 16, 0);
    if (IL.GC_Schematic_3.exists())
        RM.Printer.addFakeRecipe(F, ST.array(ST.make(Items.paper, 8, W), IL.USB_Stick_1.getWithName(0, "Containing scanned Schematics")), ST.array(IL.GC_Schematic_3.wild(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Black], 4, 1, T)), ZL_FS, 2048, 16, 0);
    if (IL.IE_Blueprint_Projectiles_Common.exists())
        RM.Printer.addFakeRecipe(F, ST.array(ST.make(Items.paper, 3, W), IL.USB_Stick_1.getWithName(0, "Containing scanned Engineer's Blueprint")), ST.array(IL.IE_Blueprint_Projectiles_Common.wild(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_CHEMICAL[DYE_INDEX_Blue], 3, 1, T)), ZL_FS, 2048, 16, 0);
    if (IL.IE_Treated_Stairs.exists())
        RM.Bath.addFakeRecipe(F, ST.array(ST.make(Blocks.oak_stairs, 1, W)), ST.array(IL.IE_Treated_Stairs.get(1)), null, null, FL.array(FL.Oil_Creosote.make(75)), ZL_FS, 102, 0, 0);
    RM.Bath.addFakeRecipe(F, ST.array(ST.make(Blocks.wooden_slab, 1, W)), ST.array(IL.IE_Treated_Slab.get(1, IL.Treated_Planks_Slab.get(1))), null, null, FL.array(FL.Oil_Creosote.make(50)), ZL_FS, 72, 0, 0);
    RM.Bath.addFakeRecipe(F, ST.array(IL.Plank_Slab.get(1)), ST.array(IL.IE_Treated_Slab.get(1, IL.Treated_Planks_Slab.get(1))), null, null, FL.array(FL.Oil_Creosote.make(50)), ZL_FS, 72, 0, 0);
    if (IL.ERE_White_Planks.exists())
        RM.Bath.addFakeRecipe(F, ST.array(IL.Plank.get(1)), ST.array(IL.ERE_White_Planks.get(1)), null, null, FL.array(DYE_FLUIDS_WATER[DYE_INDEX_White]), ZL_FS, 144, 0, 0);
    if (IL.ERE_White_Slab.exists())
        RM.Bath.addFakeRecipe(F, ST.array(IL.Plank_Slab.get(1)), ST.array(IL.ERE_White_Slab.get(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_WATER[DYE_INDEX_White], 1, 2, T)), ZL_FS, 72, 0, 0);
    if (IL.ERE_White_Planks.exists())
        RM.Bath.addFakeRecipe(F, ST.array(ST.make(Blocks.planks, 1, W)), ST.array(IL.ERE_White_Planks.get(1)), null, null, FL.array(DYE_FLUIDS_WATER[DYE_INDEX_White]), ZL_FS, 144, 0, 0);
    if (IL.ERE_White_Stairs.exists())
        RM.Bath.addFakeRecipe(F, ST.array(ST.make(Blocks.oak_stairs, 1, W)), ST.array(IL.ERE_White_Stairs.get(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_WATER[DYE_INDEX_White], 3, 4, T)), ZL_FS, 102, 0, 0);
    if (IL.ERE_White_Slab.exists())
        RM.Bath.addFakeRecipe(F, ST.array(ST.make(Blocks.wooden_slab, 1, W)), ST.array(IL.ERE_White_Slab.get(1)), null, null, FL.array(FL.mul(DYE_FLUIDS_WATER[DYE_INDEX_White], 1, 2, T)), ZL_FS, 72, 0, 0);
    if (IL.LOOTBAGS_Bag_0.exists())
        RM.Unboxinator.addFakeRecipe(F, ST.array(IL.LOOTBAGS_Bag_0.get(1)), ST.array(IL.LOOTBAGS_Bag_0.getWithName(1, "Random Drops depending on Config")), null, ZL_LONG, ZL_FS, ZL_FS, 16, 16, 0);
    if (IL.LOOTBAGS_Bag_1.exists())
        RM.Unboxinator.addFakeRecipe(F, ST.array(IL.LOOTBAGS_Bag_1.get(1)), ST.array(IL.LOOTBAGS_Bag_1.getWithName(1, "Random Drops depending on Config")), null, ZL_LONG, ZL_FS, ZL_FS, 16, 16, 0);
    if (IL.LOOTBAGS_Bag_2.exists())
        RM.Unboxinator.addFakeRecipe(F, ST.array(IL.LOOTBAGS_Bag_2.get(1)), ST.array(IL.LOOTBAGS_Bag_2.getWithName(1, "Random Drops depending on Config")), null, ZL_LONG, ZL_FS, ZL_FS, 16, 16, 0);
    if (IL.LOOTBAGS_Bag_3.exists())
        RM.Unboxinator.addFakeRecipe(F, ST.array(IL.LOOTBAGS_Bag_3.get(1)), ST.array(IL.LOOTBAGS_Bag_3.getWithName(1, "Random Drops depending on Config")), null, ZL_LONG, ZL_FS, ZL_FS, 16, 16, 0);
    if (IL.LOOTBAGS_Bag_4.exists())
        RM.Unboxinator.addFakeRecipe(F, ST.array(IL.LOOTBAGS_Bag_4.get(1)), ST.array(IL.LOOTBAGS_Bag_4.getWithName(1, "Random Drops depending on Config")), null, ZL_LONG, ZL_FS, ZL_FS, 16, 16, 0);
    RM.BedrockOreList.addFakeRecipe(F, ST.array(ST.make(Blocks.bedrock, 1, W)), ST.array(ST.make(Blocks.cobblestone, 1, 0, "Various Cobblestone Types"), OP.dust.mat(MT.Bedrock, 1)), null, new long[] { 9990, 10 }, FL.array(FL.lube(100)), null, 0, 0, 0);
    if (IL.BTL_Bedrock.exists())
        RM.BedrockOreList.addFakeRecipe(F, ST.array(IL.BTL_Bedrock.get(1)), ST.array(ST.make(Blocks.cobblestone, 1, 0, "Various Cobblestone Types"), OP.dust.mat(MT.Bedrock, 1)), null, new long[] { 9990, 10 }, FL.array(FL.lube(100)), null, 0, 0, 0);
    RM.ByProductList.mRecipeMachineList.add(ST.make(Items.cauldron, 1, 0));
    RM.ByProductList.mRecipeMachineList.add(ST.make(Blocks.cauldron, 1, 0));
    MultiTileEntityRegistry aRegistry = MultiTileEntityRegistry.getRegistry("gt.multitileentity");
    RM.Other.addFakeRecipe(F, ST.array(ST.make(OP.dust.mat(MT.OREMATS.Cinnabar, 3), "Throw three Units of Cinnabar into Crucible"), IL.Ceramic_Crucible.getWithName(1, "Wait until it melts into Mercury"), IL.Bottle_Empty.getWithName(1, "Rightclick the Crucible with an Empty Bottle"), IL.TC_Shimmerleaf.getWithName(1, "Or just throw a Shimmerleaf into it"), ST.make(aRegistry.getItem(1199), "Heat up the Crucible using a Burning Box"), NI), ST.array(IL.Bottle_Mercury.get(1), ST.make(OP.ingot.mat(MT.Hg, 1), "Pouring this into Molds only works with additional Cooling!"), ST.make(OP.nugget.mat(MT.Hg, 1), "Pouring this into Molds only works with additional Cooling!")), null, ZL_LONG, FL.array(MT.Hg.liquid(1, T)), FL.array(MT.Hg.liquid(1, T)), 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(IL.Ceramic_Mold.getWithName(1, "Don't forget to shape the Mold to pour it"), IL.Ceramic_Crucible.getWithName(1, "Wait until it all turns into Steel"), ST.make(aRegistry.getItem(1302), "Point a running Engine into the Crucible to blow Air"), ST.make(OP.ingot.mat(MT.Fe, 1), "Throw some Iron into Crucible. Do not forget to leave space for Air!"), ST.make(aRegistry.getItem(1199), "Heat up the Crucible using a Burning Box"), ST.make(OP.ingot.mat(MT.WroughtIron, 1), "Or throw Wrought Iron into the Crucible, either works")), ST.array(OP.dust.mat(MT.Steel, 1), OP.ingot.mat(MT.Steel, 1), OP.plate.mat(MT.Steel, 1), OP.scrapGt.mat(MT.Steel, 1), OP.stick.mat(MT.Steel, 1), OP.gearGt.mat(MT.Steel, 1)), null, ZL_LONG, ZL_FS, ZL_FS, 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(ST.make(OP.ingot.mat(MT.Zn, 1), "Dump some Zinc into the Crucible"), IL.Ceramic_Faucet.getWithName(1, "Pour Zinc using a Faucet attached to the Crucible"), IL.Ceramic_Crucible.getWithName(1, "Wait until the Zinc is molten"), ST.make(OP.plate.mat(MT.Steel, 1), "Put your Steel Object into the Bathing Pot"), ST.make(aRegistry.getItem(32707), "Place the Bathing Pot (Table) below the Faucet"), ST.make(aRegistry.getItem(1199), "Heat up the Crucible using a Burning Box")), ST.array(OP.plate.mat(MT.SteelGalvanized, 1), OP.plateCurved.mat(MT.SteelGalvanized, 1), OP.stick.mat(MT.SteelGalvanized, 1), OP.casingSmall.mat(MT.SteelGalvanized, 1), OP.gearGt.mat(MT.SteelGalvanized, 1), OP.screw.mat(MT.SteelGalvanized, 1)), null, ZL_LONG, FL.array(MT.Zn.liquid(1, T)), FL.array(MT.Zn.liquid(1, T)), 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(ST.make(BlocksGT.Saplings_AB, 1, 0, "Find a Rubber Tree in a Taiga Biome or similar"), ST.make(BlocksGT.Leaves_AB, 1, 0, "Make sure its natural Leaves stay intact!"), ST.make(BlocksGT.LogA, 1, 0, "Look for a possible Resin Hole at the Tree"), NI, NI, IL.Bag_Sap_Resin.getWithName(1, "Place Resin Bag at the Hole")), ST.array(IL.Resin.get(1), IL.IC2_Resin.get(1)), null, ZL_LONG, ZL_FS, FL.array(FL.Resin_Rubber.make(250)), 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(ST.make(BlocksGT.Saplings_AB, 1, 1, "Find a Maple Tree in a Forest"), ST.make(BlocksGT.Leaves_AB, 1, 1, "Make sure its natural Leaves stay intact!"), ST.make(BlocksGT.LogA, 1, 1, "Choose one of the Log Segments at the Base of the Tree"), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.HAND_DRILL, "Drill only one Hole into the Tree"), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.DRILL_LV, "Drill only one Hole into the Tree"), IL.Bag_Sap_Resin.getWithName(1, "Place Sap Bag at the drilled Hole")), ZL_IS, null, ZL_LONG, ZL_FS, FL.array(FL.Sap_Maple.make(250)), 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(ST.make(BlocksGT.Saplings_AB, 1, 2, "Find a Willow Tree in the Swamp"), ST.make(BlocksGT.Leaves_AB, 1, 2, "Harvest its Leaves for Sticks"), ST.make(BlocksGT.LogA, 1, 2, "Use its Logs in a Coke Oven for double the Charcoal"), NI, NI, NI), ST.array(OP.stick.mat(MT.WOODS.Willow, 1), OP.gem.mat(MT.Charcoal, 2), OP.ingot.mat(MT.Charcoal, 2)), null, ZL_LONG, ZL_FS, ZL_FS, 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(ST.make(BlocksGT.Saplings_AB, 1, 3, "Find a Blue Mahoe Tree in the Jungle"), ST.make(BlocksGT.Leaves_AB, 1, 3, "Harvest its Leaves for Sticks"), ST.make(BlocksGT.LogA, 1, 3, "Nothing special about its Logs"), NI, NI, NI), ST.array(OP.stick.mat(MT.WOODS.BlueMahoe, 1)), null, ZL_LONG, ZL_FS, ZL_FS, 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(ST.make(BlocksGT.Saplings_AB, 1, 4, "Find a Hazel Tree in the Plains"), ST.make(BlocksGT.Leaves_AB, 1, 4, "Harvest its Leaves for Hazelnuts and Sticks"), ST.make(BlocksGT.LogB, 1, 0, "Nothing special about its Logs"), NI, NI, NI), ST.array(IL.Food_Hazelnut.get(1), OP.stick.mat(MT.WOODS.Hazel, 1)), null, ZL_LONG, ZL_FS, ZL_FS, 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(ST.make(BlocksGT.Saplings_AB, 1, 5, "Find a Cinnamon Tree in the Jungle"), ST.make(BlocksGT.Leaves_AB, 1, 5, "Nothing special about its Leaves"), ST.make(BlocksGT.LogB, 1, 1, "The Bark does not regrow! Plant a new Tree for more"), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.KNIFE, "Remove its edible Bark"), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.AXE, "Remove its edible Bark"), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.SAW, "Remove its edible Bark")), ST.array(OM.dust(MT.Cinnamon), IL.Food_Cinnamon.get(1), IL.HaC_Cinnamon.get(1)), null, ZL_LONG, ZL_FS, ZL_FS, 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(ST.make(BlocksGT.Saplings_AB, 1, 6, "Find a Coconut Tree near the Ocean"), ST.make(BlocksGT.Leaves_AB, 1, 6, "Harvest its Leaves for Coconuts"), ST.make(BlocksGT.LogB, 1, 2, "Nothing special about its Logs"), NI, NI, NI), ST.array(IL.Food_Coconut.get(1)), null, ZL_LONG, ZL_FS, ZL_FS, 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(ST.make(BlocksGT.Saplings_AB, 1, 7, "Find a super rare Rainbow Tree"), ST.make(BlocksGT.Leaves_AB, 1, 7, "Make sure its natural Leaves stay intact!"), ST.make(BlocksGT.LogB, 1, 3, "Choose one of the Log Segments at the Base of the Tree"), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.HAND_DRILL, "Drill only one Hole into the Tree"), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.DRILL_LV, "Drill only one Hole into the Tree"), IL.Bag_Sap_Resin.getWithName(1, "Place Sap Bag at the drilled Hole")), ZL_IS, null, ZL_LONG, ZL_FS, FL.array(FL.Sap_Rainbow.make(250)), 0, 0, 0);
    RM.Other.addFakeRecipe(F, ST.array(ST.make(BlocksGT.Saplings_CD, 1, 0, "Find a Blue Spruce Tree in the Mountains"), ST.make(BlocksGT.Leaves_CD, 1, 0, "Nothing special about its Leaves"), ST.make(BlocksGT.LogC, 1, 0, "Nothing special about its Logs"), NI, NI, NI), ZL_IS, null, ZL_LONG, ZL_FS, ZL_FS, 0, 0, 0);
    if (CODE_CLIENT) {
        for (OreDictMaterial aMaterial : OreDictMaterial.ALLOYS) {
            for (IOreDictConfigurationComponent tAlloy : aMaterial.mAlloyCreationRecipes) {
                boolean temp = T, tAddSpecial = F;
                ArrayListNoNulls<ItemStack> tDusts = new ArrayListNoNulls<>(), tIngots = new ArrayListNoNulls<>(), tSpecial = new ArrayListNoNulls<>();
                ArrayListNoNulls<Long> tMeltingPoints = new ArrayListNoNulls<>();
                for (OreDictMaterialStack tMaterial : tAlloy.getUndividedComponents()) {
                    boolean tAddedSpecial = F;
                    if (tMaterial.mMaterial.mHidden) {
                        temp = F;
                        break;
                    }
                    if (tMaterial.mMaterial == MT.Air) {
                        tDusts.add(FL.Air.display(UT.Code.units(tMaterial.mAmount, U, 1000, T)));
                        tIngots.add(FL.Air.display(UT.Code.units(tMaterial.mAmount, U, 1000, T)));
                        continue;
                    }
                    if (tMaterial.mMaterial == MT.OREMATS.Magnetite) {
                        tAddedSpecial = tSpecial.add(ST.make(BlocksGT.Sands, UT.Code.divup(tMaterial.mAmount, U * 9), 0, "You probably want to craft it into Dust"));
                    } else if (tMaterial.mMaterial == MT.OREMATS.BasalticMineralSand) {
                        tAddedSpecial = tSpecial.add(ST.make(BlocksGT.Sands, UT.Code.divup(tMaterial.mAmount, U * 9), 1, "You probably want to craft it into Dust"));
                    } else if (tMaterial.mMaterial == MT.OREMATS.GraniticMineralSand) {
                        tAddedSpecial = tSpecial.add(ST.make(BlocksGT.Sands, UT.Code.divup(tMaterial.mAmount, U * 9), 2, "You probably want to craft it into Dust"));
                    } else if (tMaterial.mMaterial == MT.C) {
                        tAddedSpecial = tSpecial.add(OM.dustOrIngot(MT.Coal, tMaterial.mAmount * 2));
                    }
                    if (tMaterial.mMaterial == MT.CaCO3) {
                        tAddedSpecial = tSpecial.add(OM.dustOrIngot(MT.STONES.Limestone, tMaterial.mAmount * 2));
                    }
                    tMeltingPoints.add(tMaterial.mMaterial.mMeltingPoint);
                    ItemStack tDust = OM.dustOrIngot(tMaterial.mMaterial, tMaterial.mAmount);
                    if (!tDusts.add(tDust)) {
                        temp = F;
                        break;
                    }
                    tIngots.add(OM.ingotOrDust(tMaterial.mMaterial, tMaterial.mAmount));
                    if (tAddedSpecial)
                        tAddSpecial = T;
                    else
                        tSpecial.add(tDust);
                }
                Collections.sort(tMeltingPoints);
                if (temp) {
                    RM.CrucibleAlloying.addFakeRecipe(F, tDusts.toArray(ZL_IS), ST.array(OM.ingotOrDust(aMaterial, tAlloy.getCommonDivider() * U)), null, null, null, null, 0, 0, tMeltingPoints.size() > 1 ? Math.max(tMeltingPoints.get(tMeltingPoints.size() - 2), aMaterial.mMeltingPoint) : aMaterial.mMeltingPoint);
                    RM.CrucibleAlloying.addFakeRecipe(F, tIngots.toArray(ZL_IS), ST.array(OM.ingotOrDust(aMaterial, tAlloy.getCommonDivider() * U)), null, null, null, null, 0, 0, tMeltingPoints.size() > 1 ? Math.max(tMeltingPoints.get(tMeltingPoints.size() - 2), aMaterial.mMeltingPoint) : aMaterial.mMeltingPoint);
                    if (tAddSpecial)
                        RM.CrucibleAlloying.addFakeRecipe(F, tSpecial.toArray(ZL_IS), ST.array(OM.ingotOrDust(aMaterial, tAlloy.getCommonDivider() * U)), null, null, null, null, 0, 0, tMeltingPoints.size() > 1 ? Math.max(tMeltingPoints.get(tMeltingPoints.size() - 2), aMaterial.mMeltingPoint) : aMaterial.mMeltingPoint);
                }
            }
        }
        for (OreDictMaterial aMaterial : OreDictMaterial.MATERIAL_ARRAY) if (aMaterial != null) {
            Recipe tRecipe = RecipeMapReplicator.getReplicatorRecipe(aMaterial, IL.USB_Stick_3.getWithName(0, "Mat Data: " + aMaterial.getLocal()));
            if (tRecipe != null)
                RM.Replicator.addFakeRecipe(F, tRecipe);
        }
    }
    for (MultiItemRandom tItem : ItemsGT.ALL_MULTI_ITEMS) for (Entry<Short, ArrayList<IBehavior<MultiItem>>> tEntry : tItem.mItemBehaviors.entrySet()) for (IBehavior<MultiItem> tBehavior : tEntry.getValue()) if (tBehavior instanceof Behavior_Turn_Into)
        if (((Behavior_Turn_Into) tBehavior).mTurnInto.exists())
            tItem.mVisibleItems.set(tEntry.getKey(), F);
}
Also used : OreDictMaterial(gregapi.oredict.OreDictMaterial) Behavior_Turn_Into(gregapi.item.multiitem.behaviors.Behavior_Turn_Into) MultiTileEntityRegistry(gregapi.block.multitileentity.MultiTileEntityRegistry) Recipe(gregapi.recipes.Recipe) IItemContainer(gregapi.code.IItemContainer) IOreDictConfigurationComponent(gregapi.oredict.configurations.IOreDictConfigurationComponent) OreDictMaterialStack(gregapi.oredict.OreDictMaterialStack) ArrayListNoNulls(gregapi.code.ArrayListNoNulls) MultiItem(gregapi.item.multiitem.MultiItem) Entry(java.util.Map.Entry) MultiItemRandom(gregapi.item.multiitem.MultiItemRandom) IBehavior(gregapi.item.multiitem.behaviors.IBehavior) Block(net.minecraft.block.Block) ItemStack(net.minecraft.item.ItemStack)

Example 2 with MultiItem

use of gregapi.item.multiitem.MultiItem in project gregtech6 by GregTech6.

the class MultiItemRandomTools method addItems.

@Override
public void addItems() {
    IBehavior<MultiItem> tBehaviour;
    IL.Compound_Bronze.set(addItem(0, "Bronze Compound", "Put in Furnace to smelt it", new OreDictItemData(MT.Bronze, U9), TC.stack(TC.METALLUM, 1)));
    IL.Compound_Brass.set(addItem(1, "Brass Compound", "Put in Furnace to smelt it", new OreDictItemData(MT.Brass, U9), TC.stack(TC.METALLUM, 1)));
    IL.Compound_BismuthBronze.set(addItem(2, "Bismuth Bronze Compound", "Put in Furnace to smelt it", new OreDictItemData(MT.BismuthBronze, U9), TC.stack(TC.METALLUM, 1)));
    RM.add_smelting(IL.Compound_Bronze.get(1), OP.nugget.mat(MT.Bronze, 1), F, F, T);
    RM.add_smelting(IL.Compound_Brass.get(1), OP.nugget.mat(MT.Brass, 1), F, F, T);
    RM.add_smelting(IL.Compound_BismuthBronze.get(1), OP.nugget.mat(MT.BismuthBronze, 1), F, F, T);
    IL.Porcelain_Cup_Raw.set(addItem(899, "Modeled Porcelain Cup", "Put in Furnace to harden", new OreDictItemData(MT.Porcelain, U), TC.stack(TC.TERRA, 2), TC.stack(TC.VACUOS, 1)));
    CR.shapeless(OP.dust.mat(MT.Porcelain, 1), CR.DEF_NCC, new Object[] { last() });
    CR.shaped(IL.Porcelain_Cup_Raw.get(1), CR.DEF_NCC, "kPR", 'P', OP.dust.dat(MT.Porcelain), 'R', OreDictToolNames.rollingpin);
    IL.Ceramic_Ingot_Mold_Raw.set(addItem(900, "Clay Ingot Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Chunk_Mold_Raw.set(addItem(901, "Clay Chunk Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Plate_Mold_Raw.set(addItem(902, "Clay Plate Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Tiny_Plate_Mold_Raw.set(addItem(903, "Clay Tiny Plate Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Bolt_Mold_Raw.set(addItem(904, "Clay Bolt Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Rod_Mold_Raw.set(addItem(905, "Clay Rod Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Long_Rod_Mold_Raw.set(addItem(906, "Clay Long Rod Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Item_Casing_Mold_Raw.set(addItem(907, "Clay Item Casing Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Ring_Mold_Raw.set(addItem(908, "Clay Ring Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Gear_Mold_Raw.set(addItem(909, "Clay Gear Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Small_Gear_Mold_Raw.set(addItem(910, "Clay Small Gear Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Sword_Mold_Raw.set(addItem(911, "Clay Sword Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Pickaxe_Mold_Raw.set(addItem(912, "Clay Pickaxe Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Spade_Mold_Raw.set(addItem(913, "Clay Spade Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Shovel_Mold_Raw.set(addItem(914, "Clay Shovel Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Universal_Spade_Mold_Raw.set(addItem(915, "Clay Universal Spade Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Axe_Mold_Raw.set(addItem(916, "Clay Axe Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Double_Axe_Mold_Raw.set(addItem(917, "Clay Double Axe Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Saw_Mold_Raw.set(addItem(918, "Clay Saw Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Hammer_Mold_Raw.set(addItem(919, "Clay Hammer Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_File_Mold_Raw.set(addItem(920, "Clay File Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Screwdriver_Mold_Raw.set(addItem(921, "Clay Screwdriver Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Chisel_Mold_Raw.set(addItem(922, "Clay Chisel Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Arrow_Mold_Raw.set(addItem(923, "Clay Arrow Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Hoe_Mold_Raw.set(addItem(924, "Clay Hoe Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Sense_Mold_Raw.set(addItem(925, "Clay Sense Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Plow_Mold_Raw.set(addItem(926, "Clay Plow Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Builderwand_Mold_Raw.set(addItem(927, "Clay Builder's Wand Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Nugget_Mold_Raw.set(addItem(928, "Clay Nugget Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Billet_Mold_Raw.set(addItem(929, "Clay Billet Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Tap_Raw.set(addItem(987, "Clay Tap", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 3), TC.stack(TC.TERRA, 2), TC.stack(TC.MOTUS, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 3, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Funnel_Raw.set(addItem(988, "Clay Funnel", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 3), TC.stack(TC.TERRA, 2), TC.stack(TC.MOTUS, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 3, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Crucible_Raw.set(addItem(989, "Clay Crucible", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 7), TC.stack(TC.TERRA, 2), TC.stack(TC.IGNIS, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 7, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Basin_Raw.set(addItem(990, "Clay Basin", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Mold_Raw.set(addItem(991, "Clay Mold", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.GELUM, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Faucet_Raw.set(addItem(992, "Clay Faucet", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 3), TC.stack(TC.TERRA, 2), TC.stack(TC.MOTUS, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 3, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Crossing_Raw.set(addItem(993, "Clay Crossing", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.ITER, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Juicer_Raw.set(addItem(994, "Clay Juicer", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 4), TC.stack(TC.TERRA, 2), TC.stack(TC.LIMUS, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 4, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Bowl_Raw.set(addItem(995, "Clay Bowl", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 5), TC.stack(TC.TERRA, 2), TC.stack(TC.PERMUTATIO, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 5, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Ceramic_Jug_Raw.set(addItem(996, "Clay Jug", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 6), TC.stack(TC.TERRA, 2), TC.stack(TC.VACUOS, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 6, 0), CR.DEF_NCC, new Object[] { last() });
    IL.Measuring_Pot_Raw.set(addItem(997, "Clay Measuring Pot", "Put in Furnace to harden", new OreDictItemData(MT.Clay, U * 4), TC.stack(TC.TERRA, 2), TC.stack(TC.VACUOS, 1)));
    CR.shapeless(ST.make(Items.clay_ball, 4, 0), CR.DEF_NCC, new Object[] { last() });
    CR.shaped(IL.Ceramic_Tap_Raw.get(1), CR.DEF_NCC, "CCR", "kC ", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shaped(IL.Ceramic_Funnel_Raw.get(1), CR.DEF_NCC, "CRC", "kC ", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shaped(IL.Ceramic_Crucible_Raw.get(1), CR.DEF_NCC, "CkC", "CRC", "CCC", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shaped(IL.Ceramic_Basin_Raw.get(1), CR.DEF_NCC, "CkC", "CRC", " C ", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shaped(IL.Ceramic_Mold_Raw.get(1), CR.DEF_NCC, "C C", "CCC", "k R", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shaped(IL.Ceramic_Faucet_Raw.get(1), CR.DEF_NCC, "C C", "kCR", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shaped(IL.Ceramic_Crossing_Raw.get(1), CR.DEF_NCC, "kCR", "CCC", " C ", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shaped(IL.Juicer_Raw.get(1), CR.DEF_NCC, "kCR", "CCC", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shaped(IL.Ceramic_Bowl_Raw.get(1), CR.DEF_NCC, "k R", "C C", "CCC", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shaped(IL.Ceramic_Jug_Raw.get(1), CR.DEF_NCC, "kCR", "C C", "CCC", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shaped(IL.Measuring_Pot_Raw.get(1), CR.DEF_NCC, "CkC", "CCR", 'C', OD.itemClay, 'R', OreDictToolNames.rollingpin);
    CR.shapeless(IL.Ceramic_Ingot_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, IL.BoP_Mud_Brick });
    CR.shapeless(IL.Ceramic_Ingot_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, IL.ERE_Mud_Brick });
    CR.shapeless(IL.Ceramic_Ingot_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.ingot.dat(MT.UNUSED.Mud) });
    CR.shapeless(IL.Ceramic_Ingot_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.ingot.dat(MT.Brick) });
    CR.shapeless(IL.Ceramic_Plate_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OD.paneGlass });
    CR.shapeless(IL.Ceramic_Plate_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OD.plankAnyWood });
    CR.shapeless(IL.Ceramic_Arrow_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OD.itemFlint });
    CR.shapeless(IL.Ceramic_Arrow_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, Items.arrow });
    CR.shapeless(IL.Ceramic_Sword_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, Items.wooden_sword });
    CR.shapeless(IL.Ceramic_Pickaxe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, Items.wooden_pickaxe });
    CR.shapeless(IL.Ceramic_Shovel_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, Items.wooden_shovel });
    CR.shapeless(IL.Ceramic_Axe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, Items.wooden_axe });
    CR.shapeless(IL.Ceramic_Hoe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, Items.wooden_hoe });
    CR.shapeless(IL.Ceramic_Sword_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.SWORD) });
    CR.shapeless(IL.Ceramic_Pickaxe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.PICKAXE) });
    CR.shapeless(IL.Ceramic_Pickaxe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.GEM_PICK) });
    CR.shapeless(IL.Ceramic_Pickaxe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.CONSTRUCTION_PICK) });
    CR.shapeless(IL.Ceramic_Spade_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.SPADE) });
    CR.shapeless(IL.Ceramic_Shovel_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.SHOVEL) });
    CR.shapeless(IL.Ceramic_Universal_Spade_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.UNIVERSALSPADE) });
    CR.shapeless(IL.Ceramic_Axe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.AXE) });
    CR.shapeless(IL.Ceramic_Double_Axe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.DOUBLE_AXE) });
    CR.shapeless(IL.Ceramic_Saw_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.SAW) });
    CR.shapeless(IL.Ceramic_Hammer_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.SOFTHAMMER) });
    CR.shapeless(IL.Ceramic_Hammer_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.HARDHAMMER) });
    CR.shapeless(IL.Ceramic_File_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.FILE) });
    CR.shapeless(IL.Ceramic_Screwdriver_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.SCREWDRIVER) });
    CR.shapeless(IL.Ceramic_Chisel_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.CHISEL) });
    CR.shapeless(IL.Ceramic_Hoe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.HOE) });
    CR.shapeless(IL.Ceramic_Sense_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.SENSE) });
    CR.shapeless(IL.Ceramic_Plow_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.PLOW) });
    CR.shapeless(IL.Ceramic_Builderwand_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, ToolsGT.sMetaTool.make(ToolsGT.BUILDERWAND) });
    for (OreDictMaterial tMat : new OreDictMaterial[] { ANY.WoodPlastic, ANY.Stone, MT.Glass, ANY.Wax, ANY.Iron, ANY.Cu, MT.Sn, MT.Zn, MT.Pb, MT.Bi, MT.Brass, MT.Bronze, MT.BismuthBronze, MT.Au }) {
        CR.shapeless(IL.Ceramic_Ingot_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.ingot.dat(tMat) });
        CR.shapeless(IL.Ceramic_Billet_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.billet.dat(tMat) });
        CR.shapeless(IL.Ceramic_Chunk_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.chunkGt.dat(tMat) });
        CR.shapeless(IL.Ceramic_Nugget_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.nugget.dat(tMat) });
        CR.shapeless(IL.Ceramic_Plate_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.plate.dat(tMat) });
        CR.shapeless(IL.Ceramic_Plate_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.plateGem.dat(tMat) });
        CR.shapeless(IL.Ceramic_Tiny_Plate_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.plateTiny.dat(tMat) });
        CR.shapeless(IL.Ceramic_Tiny_Plate_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.plateGemTiny.dat(tMat) });
        CR.shapeless(IL.Ceramic_Bolt_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.bolt.dat(tMat) });
        CR.shapeless(IL.Ceramic_Rod_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.stick.dat(tMat) });
        CR.shapeless(IL.Ceramic_Long_Rod_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.stick.dat(tMat), OP.stick.dat(tMat) });
        CR.shapeless(IL.Ceramic_Long_Rod_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.stickLong.dat(tMat) });
        CR.shapeless(IL.Ceramic_Item_Casing_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.casingSmall.dat(tMat) });
        CR.shapeless(IL.Ceramic_Ring_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.ring.dat(tMat) });
        CR.shapeless(IL.Ceramic_Gear_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.gearGt.dat(tMat) });
        CR.shapeless(IL.Ceramic_Small_Gear_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.gearGtSmall.dat(tMat) });
        CR.shapeless(IL.Ceramic_Sword_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadSword.dat(tMat) });
        CR.shapeless(IL.Ceramic_Sword_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawSword.dat(tMat) });
        CR.shapeless(IL.Ceramic_Pickaxe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadPickaxe.dat(tMat) });
        CR.shapeless(IL.Ceramic_Pickaxe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawPickaxe.dat(tMat) });
        CR.shapeless(IL.Ceramic_Spade_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadSpade.dat(tMat) });
        CR.shapeless(IL.Ceramic_Spade_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawSpade.dat(tMat) });
        CR.shapeless(IL.Ceramic_Shovel_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadShovel.dat(tMat) });
        CR.shapeless(IL.Ceramic_Shovel_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawShovel.dat(tMat) });
        CR.shapeless(IL.Ceramic_Universal_Spade_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadUniversalSpade.dat(tMat) });
        CR.shapeless(IL.Ceramic_Universal_Spade_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawUniversalSpade.dat(tMat) });
        CR.shapeless(IL.Ceramic_Axe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadAxe.dat(tMat) });
        CR.shapeless(IL.Ceramic_Axe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawAxe.dat(tMat) });
        CR.shapeless(IL.Ceramic_Double_Axe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadAxe.dat(tMat), OP.toolHeadAxe.dat(tMat) });
        CR.shapeless(IL.Ceramic_Double_Axe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawAxe.dat(tMat), OP.toolHeadRawAxe.dat(tMat) });
        CR.shapeless(IL.Ceramic_Double_Axe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadAxeDouble.dat(tMat) });
        CR.shapeless(IL.Ceramic_Double_Axe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawAxeDouble.dat(tMat) });
        CR.shapeless(IL.Ceramic_Saw_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadSaw.dat(tMat) });
        CR.shapeless(IL.Ceramic_Saw_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawSaw.dat(tMat) });
        CR.shapeless(IL.Ceramic_Hammer_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadHammer.dat(tMat) });
        CR.shapeless(IL.Ceramic_File_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadFile.dat(tMat) });
        CR.shapeless(IL.Ceramic_Screwdriver_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadScrewdriver.dat(tMat) });
        CR.shapeless(IL.Ceramic_Chisel_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadChisel.dat(tMat) });
        CR.shapeless(IL.Ceramic_Chisel_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawChisel.dat(tMat) });
        CR.shapeless(IL.Ceramic_Arrow_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadArrow.dat(tMat) });
        CR.shapeless(IL.Ceramic_Arrow_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawArrow.dat(tMat) });
        CR.shapeless(IL.Ceramic_Hoe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadHoe.dat(tMat) });
        CR.shapeless(IL.Ceramic_Hoe_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawHoe.dat(tMat) });
        CR.shapeless(IL.Ceramic_Sense_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadSense.dat(tMat) });
        CR.shapeless(IL.Ceramic_Sense_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawSense.dat(tMat) });
        CR.shapeless(IL.Ceramic_Plow_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadPlow.dat(tMat) });
        CR.shapeless(IL.Ceramic_Plow_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadRawPlow.dat(tMat) });
        CR.shapeless(IL.Ceramic_Builderwand_Mold_Raw.get(1), CR.DEF_NCC, new Object[] { IL.Ceramic_Mold_Raw, OP.toolHeadBuilderwand.dat(tMat) });
    }
    IL.Food_Can_Empty.set(addItem(998, "Empty Food Can", "Used for canning Food", new OreDictItemData(MT.TinAlloy, OP.plateCurved.mAmount), TC.stack(TC.VACUOS, 1), TC.stack(TC.FABRICO, 1)));
    IL.Spray_Empty.set(addItem(999, "Empty Spray Can", "Used for making Sprays", new OreDictItemData(MT.Sn, OP.plateCurved.mAmount, MT.Redstone, OP.dust.mAmount), TC.stack(TC.VACUOS, 1), TC.stack(TC.MOTUS, 1)));
    RM.RollBender.addRecipe1(T, 16, 64, OP.plateCurved.mat(MT.TinAlloy, 1), IL.Food_Can_Empty.get(1));
    // TODO RA.addAssemblerRecipe(OP.dust.mat(MT.Redstone, 1), OP.cell.mat(MT.Empty, 1), IL.Spray_Empty.get(1), 800, 1);
    CR.shaped(IL.Food_Can_Empty.get(1), CR.DEF_NCC, "fh", "oP", 'P', OP.plateCurved.dat(MT.TinAlloy));
    CR.shaped(IL.Spray_Empty.get(1), CR.DEF_NCC, "Rf", "Cs", 'R', OD.itemRedstone, 'C', OP.plateCurved.dat(MT.Sn));
    for (byte i = 0; i < 16; i++) {
        IL.SPRAY_CAN_DYES[i].set(addItem(1000 + 2 * i, "Spray Paint (" + DYE_NAMES[i] + ")", "Full", TC.stack(TC.SENSUS, 4)));
        IL.SPRAY_CAN_DYES_USED[i].set(addItem(mLastID + 1, "Spray Paint (" + DYE_NAMES[i] + ")", "Used", TC.stack(TC.SENSUS, 3), TD.Creative.HIDDEN));
        tBehaviour = new Behavior_Spray_Color(IL.Spray_Empty.get(1), IL.SPRAY_CAN_DYES_USED[i].get(1), IL.SPRAY_CAN_DYES[i].get(1), 512, i);
        addItemBehavior(mLastID, tBehaviour);
        addItemBehavior(mLastID - 1, tBehaviour);
        RM.Canner.addRecipe1(T, 16, 256, IL.Spray_Empty.get(1), FL.mul(DYE_FLUIDS_CHEMICAL[i], 16), NF, IL.SPRAY_CAN_DYES[i].get(1));
        ItemsGT.addNEIRedirects(IL.SPRAY_CAN_DYES_USED[i].get(1), IL.SPRAY_CAN_DYES[i].get(1));
        RM.Other.addFakeRecipe(F, ST.array(IL.SPRAY_CAN_DYES[i].get(1), IL.SPRAY_CAN_DYES_USED[i].get(1), ST.make(Blocks.wool, 1, 0), ST.make(Blocks.glass_pane, 1, 0), ST.make(Blocks.glass, 1, 0), ST.make(Blocks.hardened_clay, 1, 0)), ST.array(NI, NI, ST.make(Blocks.wool, 1, 15 - i), ST.make(Blocks.stained_glass_pane, 1, 15 - i), ST.make(Blocks.stained_glass, 1, 15 - i), ST.make(Blocks.stained_hardened_clay, 1, 15 - i)), null, ZL_LONG, ZL_FS, ZL_FS, 0, 0, 0);
        IL.SPRAY_CAN_FOAM[i].set(addItem(1100 + 2 * i, "C-Foam Spray (" + DYE_NAMES[i] + ")", "Full", TC.stack(TC.TERRA, 2), TC.stack(TC.FABRICO, 2)));
        IL.SPRAY_CAN_FOAM_USED[i].set(addItem(mLastID + 1, "C-Foam Spray (" + DYE_NAMES[i] + ")", "Used", TC.stack(TC.TERRA, 1), TC.stack(TC.FABRICO, 1), TD.Creative.HIDDEN));
        tBehaviour = new Behavior_Spray_Foam(IL.Spray_Empty.get(1), IL.SPRAY_CAN_FOAM_USED[i].get(1), IL.SPRAY_CAN_FOAM[i].get(1), 256, i, F);
        addItemBehavior(mLastID, tBehaviour);
        addItemBehavior(mLastID - 1, tBehaviour);
        RM.Canner.addRecipe1(T, 16, 256, IL.Spray_Empty.get(1), FL.mul(DYED_C_FOAMS[i], 256), NF, IL.SPRAY_CAN_FOAM[i].get(1));
        ItemsGT.addNEIRedirects(IL.SPRAY_CAN_FOAM_USED[i].get(1), IL.SPRAY_CAN_FOAM[i].get(1), ST.make(BlocksGT.CFoamFresh, 1, i), ST.make(BlocksGT.CFoam, 1, i));
        RM.Other.addFakeRecipe(F, ST.array(IL.SPRAY_CAN_FOAM[i].get(1), IL.SPRAY_CAN_FOAM_USED[i].get(1)), ST.array(ST.make(BlocksGT.CFoamFresh, 1, i), ST.make(BlocksGT.CFoam, 1, i)), null, ZL_LONG, ZL_FS, ZL_FS, 0, 0, 0);
        IL.SPRAY_CAN_FOAM_OWNED[i].set(addItem(1132 + 2 * i, "Advanced C-Foam Spray (" + DYE_NAMES[i] + ")", "Full (C-Foam only breakable by Owner once dry)", TC.stack(TC.TERRA, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.SPIRITUS, 2)));
        IL.SPRAY_CAN_FOAM_OWNED_USED[i].set(addItem(mLastID + 1, "Advanced C-Foam Spray (" + DYE_NAMES[i] + ")", "Used (C-Foam only breakable by Owner once dry)", TC.stack(TC.TERRA, 1), TC.stack(TC.FABRICO, 1), TC.stack(TC.SPIRITUS, 1), TD.Creative.HIDDEN));
        tBehaviour = new Behavior_Spray_Foam(IL.Spray_Empty.get(1), IL.SPRAY_CAN_FOAM_OWNED_USED[i].get(1), IL.SPRAY_CAN_FOAM_OWNED[i].get(1), 256, i, T);
        addItemBehavior(mLastID, tBehaviour);
        addItemBehavior(mLastID - 1, tBehaviour);
        RM.Canner.addRecipe1(T, 16, 256, IL.Spray_Empty.get(1), FL.mul(DYED_C_FOAMS_OWNED[i], 256), NF, IL.SPRAY_CAN_FOAM_OWNED[i].get(1));
        ItemsGT.addNEIRedirects(IL.SPRAY_CAN_FOAM_OWNED_USED[i].get(1), IL.SPRAY_CAN_FOAM_OWNED[i].get(1));
        RM.Other.addFakeRecipe(F, ST.array(IL.SPRAY_CAN_FOAM_OWNED[i].get(1), IL.SPRAY_CAN_FOAM_OWNED_USED[i].get(1)), ST.array(ST.make(BlocksGT.CFoamFresh, 1, i, "Player-Owned C-Foam"), ST.make(BlocksGT.CFoam, 1, i, "Player-Owned C-Foam")), null, ZL_LONG, ZL_FS, ZL_FS, 0, 0, 0);
    }
    IL.Spray_Color_Remover.set(addItem(1096, "Paint Removal Spray", "Full", TC.stack(TC.SENSUS, 2), TC.stack(TC.PERDITIO, 2)));
    IL.Spray_Color_Remover_Used.set(addItem(1097, "Paint Removal Spray", "Used", TC.stack(TC.SENSUS, 1), TC.stack(TC.PERDITIO, 1), TD.Creative.HIDDEN));
    tBehaviour = new Behavior_Spray_Color_Remover(IL.Spray_Empty.get(1), IL.Spray_Color_Remover_Used.get(1), IL.Spray_Color_Remover.get(1), 256);
    addItemBehavior(1096, tBehaviour);
    addItemBehavior(1097, tBehaviour);
    RM.Canner.addRecipe1(T, 16, 256, IL.Spray_Empty.get(1), MT.Cl.fluid(16 * U, T), NF, IL.Spray_Color_Remover.get(1));
    ItemsGT.addNEIRedirects(IL.Spray_Color_Remover_Used.get(1), IL.Spray_Color_Remover.get(1));
    IL.Spray_Foam_Remover.set(addItem(1196, "C-Foam Removal Spray", "Full", TC.stack(TC.TERRA, 2), TC.stack(TC.PERDITIO, 2)));
    IL.Spray_Foam_Remover_Used.set(addItem(1197, "C-Foam Removal Spray", "Used", TC.stack(TC.TERRA, 1), TC.stack(TC.PERDITIO, 1), TD.Creative.HIDDEN));
    tBehaviour = new Behavior_Spray_Foam_Remover(IL.Spray_Empty.get(1), IL.Spray_Foam_Remover_Used.get(1), IL.Spray_Foam_Remover.get(1), 256);
    addItemBehavior(1196, tBehaviour);
    addItemBehavior(1197, tBehaviour);
    RM.Canner.addRecipe1(T, 16, 256, IL.Spray_Empty.get(1), MT.H2SO4.fluid(16 * U, T), NF, IL.Spray_Foam_Remover.get(1));
    RM.Canner.addRecipe1(T, 16, 256, IL.Spray_Empty.get(1), MT.HNO3.fluid(16 * U, T), NF, IL.Spray_Foam_Remover.get(1));
    ItemsGT.addNEIRedirects(IL.Spray_Foam_Remover_Used.get(1), IL.Spray_Foam_Remover.get(1));
    IL.Spray_Foam_Hardener.set(addItem(1198, "Hardening Spray", "Full", TC.stack(TC.TERRA, 2), TC.stack(TC.TUTAMEN, 2)));
    IL.Spray_Foam_Hardener_Used.set(addItem(1199, "Hardening Spray", "Used", TC.stack(TC.TERRA, 1), TC.stack(TC.TUTAMEN, 1), TD.Creative.HIDDEN));
    tBehaviour = new Behavior_Spray_Foam_Hardener(IL.Spray_Empty.get(1), IL.Spray_Foam_Hardener_Used.get(1), IL.Spray_Foam_Hardener.get(1), 256);
    addItemBehavior(1198, tBehaviour);
    addItemBehavior(1199, tBehaviour);
    RM.Canner.addRecipe2(T, 16, 256, ST.make(Blocks.sand, 7, W), IL.Spray_Empty.get(1), IL.Spray_Foam_Hardener.get(1));
    for (OreDictMaterial tMat : ANY.SiO2.mToThis) for (ItemStack tDust : ST.array(OP.dust.mat(tMat, 63), OP.blockDust.mat(tMat, 7))) if (ST.valid(tDust))
        RM.Canner.addRecipe2(T, 16, 256, tDust, IL.Spray_Empty.get(1), IL.Spray_Foam_Hardener.get(1));
    ItemsGT.addNEIRedirects(IL.Spray_Foam_Hardener_Used.get(1), IL.Spray_Foam_Hardener.get(1));
    IL.Spray_Extinguisher.set(addItem(1998, "Fire Extinguisher (CO2)", "Full", TC.stack(TC.PERDITIO, 2), TC.stack(TC.IGNIS, 2)));
    IL.Spray_Extinguisher_Used.set(addItem(1999, "Fire Extinguisher (CO2)", "Used", TC.stack(TC.PERDITIO, 1), TC.stack(TC.IGNIS, 1), TD.Creative.HIDDEN));
    tBehaviour = new Behavior_Spray_Extinguisher(IL.Spray_Empty.get(1), IL.Spray_Extinguisher_Used.get(1), IL.Spray_Extinguisher.get(1), 256);
    addItemBehavior(1998, tBehaviour);
    addItemBehavior(1999, tBehaviour);
    RM.Canner.addRecipe1(T, 16, 256, IL.Spray_Empty.get(1), MT.CO2.fluid(16 * U, T), NF, IL.Spray_Extinguisher.get(1));
    ItemsGT.addNEIRedirects(IL.Spray_Extinguisher_Used.get(1), IL.Spray_Extinguisher.get(1));
    OreDictMaterial[] tBucketMaterials = new OreDictMaterial[] { ANY.Cu, MT.Sn, MT.Zn, MT.Pb, MT.Bi, MT.Brass, MT.Bronze, MT.BismuthBronze, MT.Au };
    for (int i = 0; i < 9; i++) {
        OreDictItemData tData = new OreDictItemData(ANY.Wood, U * 3, OM.stack(tBucketMaterials[i], U * 1));
        ItemStack tBucket = addItem(2000 + i * 100, "Wooden Bucket", "Empty", TC.stack(TC.ARBOR, 2), TC.stack(TC.VACUOS, 2), Behavior_Bucket_Simple.INSTANCE, tData);
        CR.shaped(tBucket, CR.DEF_NCC, "WPW", " Wh", 'P', OP.plate.dat(tBucketMaterials[i]), 'W', OD.plankAnyWood);
        ItemsGT.addNEIRedirects(tBucket, addItem(mLastID + 1, "Wooden Bucket", "Water", TC.stack(TC.ARBOR, 2), TC.stack(TC.AQUA, 2), new Behavior_Bucket_Simple(ST.make(Items.water_bucket, 1, 0)), tData.copy(), FL.Water.make(1000), FL.DistW.make(1000), FL.River_Water.make(1000), FL.Mineralwater.make(1000), FL.Mineralsoda.make(1000), FL.Soda.make(1000), FL.Water_Hot.make(1000), FL.Water_Boiling.make(1000), FL.Water_Geothermal.make(1000), OD.container1000water), addItem(mLastID + 1, "Wooden Bucket", "Milk (you cannot drink out of Buckets!)", TC.stack(TC.ARBOR, 2), TC.stack(TC.SANO, 2), new Behavior_Bucket_Simple(ST.make(Items.milk_bucket, 1, 0)), tData.copy(), FL.Milk.make(1000), FL.MilkGrC.make(1000), OD.container1000milk), addItem(mLastID + 1, "Wooden Bucket", "Latex", TC.stack(TC.ARBOR, 2), TC.stack(TC.LIMUS, 2), Behavior_Bucket_Simple.INSTANCE, tData.copy(), FL.Latex.make(1000), FL.make("molten.latex", 1000), OD.container1000latex), addItem(mLastID + 1, "Wooden Bucket", "Creosote Oil", TC.stack(TC.ARBOR, 2), TC.stack(TC.IGNIS, 2), new Behavior_Bucket_Simple(IL.RC_Creosote_Bucket.get(1)), tData.copy(), FL.Oil_Creosote.make(1000), OD.container1000creosote), addItem(mLastID + 1, "Wooden Bucket", "Sea Water (you cannot place this!)", TC.stack(TC.ARBOR, 2), TC.stack(TC.TEMPESTAS, 2), new Behavior_Switch_Metadata(2000 + i * 100, F, F), tData.copy(), FL.Ocean.make(1000), FL.OceanGrC.make(1000), FL.Tropics_Water.make(1000)), addItem(mLastID + 1, "Wooden Bucket", "Rubber Tree Sap", TC.stack(TC.ARBOR, 2), TC.stack(TC.LIMUS, 2), Behavior_Bucket_Simple.INSTANCE, tData.copy(), FL.Resin_Rubber.make(1000), OD.container1000rubbertreesap), addItem(mLastID + 1, "Wooden Bucket", "Spruce Tree Resin", TC.stack(TC.ARBOR, 3), TC.stack(TC.LIMUS, 1), Behavior_Bucket_Simple.INSTANCE, tData.copy(), FL.Resin_Spruce.make(1000), OD.container1000spruceresin), addItem(mLastID + 1, "Wooden Bucket", "Honey", TC.stack(TC.ARBOR, 3), TC.stack(TC.BESTIA, 1), new Behavior_Bucket_Simple(ST.make(MD.ERE, "bucketHoney", 1, 0, IL.FR_Honey_Bucket)), tData.copy(), FL.Honey.make(1000), FL.HoneyGrC.make(1000), FL.HoneyBoP.make(1000), OD.container1000honey), addItem(mLastID + 1, "Wooden Bucket", "Dirty Water (you cannot place this!)", TC.stack(TC.ARBOR, 2), TC.stack(TC.AQUA, 1), TC.stack(TC.VENENUM, 1), new Behavior_Switch_Metadata(2000 + i * 100, F, F), tData.copy(), FL.Dirty_Water.make(1000)), addItem(mLastID + 1, "Wooden Bucket", "Lubricant", TC.stack(TC.ARBOR, 2), TC.stack(TC.LIMUS, 2), Behavior_Bucket_Simple.INSTANCE, tData.copy(), FL.LubRoCant.make(1000), FL.Lubricant.make(1000), OD.container1000lubricant), addItem(mLastID + 1, "Wooden Bucket", "Milk (you cannot drink out of Buckets!)", TC.stack(TC.ARBOR, 2), TC.stack(TC.VENENUM, 2), Behavior_Bucket_Simple.INSTANCE, tData.copy(), FL.Milk_Spoiled.make(1000)), addItem(mLastID + 1, "Wooden Bucket", "Maple Sap", TC.stack(TC.ARBOR, 2), TC.stack(TC.FAMES, 2), Behavior_Bucket_Simple.INSTANCE, tData.copy(), FL.Sap_Maple.make(1000), OD.container1000maplesap), addItem(mLastID + 1, "Wooden Bucket", "Rainbow Sap", TC.stack(TC.ARBOR, 2), TC.stack(TC.AURAM, 2), Behavior_Bucket_Simple.INSTANCE, tData.copy(), FL.Sap_Rainbow.make(1000), OD.container1000rainbowsap), addItem(mLastID + 1, "Wooden Bucket", "Soy Milk", TC.stack(TC.ARBOR, 2), TC.stack(TC.HERBA, 2), Behavior_Bucket_Simple.INSTANCE, tData.copy(), FL.MilkSoy.make(1000), OD.container1000soymilk), addItem(mLastID + 1, "Wooden Bucket", "Glue", TC.stack(TC.ARBOR, 2), TC.stack(TC.LIMUS, 2), Behavior_Bucket_Simple.INSTANCE, tData.copy(), FL.Glue.make(1000), OD.container1000glue), addItem(mLastID + 1, "Wooden Bucket", "Spectral Dew", TC.stack(TC.ARBOR, 2), TC.stack(TC.SPIRITUS, 2), new Behavior_Bucket_Simple(IL.NeLi_Bucket_Spectral_Dew.get(1)), tData.copy(), FL.SpDew.make(1000), OD.container1000water), addItem(mLastID + 1, "Wooden Bucket", "Seed Oil", TC.stack(TC.ARBOR, 3), TC.stack(TC.GRANUM, 1), new Behavior_Bucket_Simple(IL.FR_SeedOil_Bucket.get(1)), tData.copy(), FL.Oil_Seed.make(1000), FL.Oil_Lin.make(1000), FL.Oil_Hemp.make(1000), FL.Oil_Olive.make(1000), FL.Oil_Sunflower.make(1000), FL.Oil_Nut.make(1000), OD.container1000seedoil));
    }
    IL.Wooden_Bucket_Copper.set(this, 2000);
    IL.Wooden_Bucket_Tin.set(this, 2100);
    IL.Wooden_Bucket_Zinc.set(this, 2200);
    IL.Wooden_Bucket_Lead.set(this, 2300);
    IL.Wooden_Bucket_Bismuth.set(this, 2400);
    IL.Wooden_Bucket_Brass.set(this, 2500);
    IL.Wooden_Bucket_Bronze.set(this, 2600);
    IL.Wooden_Bucket_BismuthBronze.set(this, 2700);
    IL.Wooden_Bucket_Gold.set(this, 2800);
    IL.Tool_Matches.set(addItem(5000, "Match", "", new Behavior_Lighter(9000), TC.stack(TC.IGNIS, 1), TC.stack(TC.VACUOS, 1), OD.craftingFirestarter));
    for (OreDictMaterial tWood : ANY.Wood.mToThis) {
        RM.Assembler.addRecipe2(T, 16, 16, OP.bolt.mat(tWood, 1), OP.dustSmall.mat(MT.P, 1), IL.Tool_Matches.get(1));
        RM.Assembler.addRecipe2(T, 16, 64, OP.bolt.mat(tWood, 4), OP.dust.mat(MT.P, 1), IL.Tool_Matches.get(4));
        for (OreDictMaterial tPhosphorus : ANY.Phosphorus.mToThis) {
            RM.Assembler.addRecipe2(T, 16, 16, OP.bolt.mat(tWood, 1), OP.dustSmall.mat(tPhosphorus, 1), IL.Tool_Matches.get(1));
            RM.Assembler.addRecipe2(T, 16, 64, OP.bolt.mat(tWood, 4), OP.dust.mat(tPhosphorus, 1), IL.Tool_Matches.get(4));
        }
    }
    CR.shaped(IL.Tool_Matches.get(1), CR.DEF, "P", "S", 'P', OP.dustSmall.dat(MT.P), 'S', OP.bolt.dat(ANY.Wood));
    CR.shaped(IL.Tool_Matches.get(1), CR.DEF, "P", "S", 'P', OP.dustSmall.dat(ANY.Phosphorus), 'S', OP.bolt.dat(ANY.Wood));
    CR.shaped(IL.Tool_Matches.get(4), CR.DEF, " S ", "SPS", " S ", 'P', OP.dust.dat(MT.P), 'S', OP.bolt.dat(ANY.Wood));
    CR.shaped(IL.Tool_Matches.get(4), CR.DEF, " S ", "SPS", " S ", 'P', OP.dust.dat(ANY.Phosphorus), 'S', OP.bolt.dat(ANY.Wood));
    IL.Tool_MatchBox_Used.set(addItem(5002, "Match Box", "This is not a Car", TC.stack(TC.IGNIS, 2), TC.stack(TC.POTENTIA, 1), OD.craftingFirestarter, TD.Creative.HIDDEN));
    IL.Tool_MatchBox_Full.set(addItem(5003, "Match Box (Full)", "This is not a Car", TC.stack(TC.IGNIS, 1), TC.stack(TC.POTENTIA, 2), OD.craftingFirestarter));
    tBehaviour = new Behavior_Lighter(null, IL.Tool_MatchBox_Used.get(1), IL.Tool_MatchBox_Full.get(1), 64, 9000);
    addItemBehavior(5002, tBehaviour);
    addItemBehavior(5003, tBehaviour);
    ItemsGT.addNEIRedirects(IL.Tool_Matches.get(1), IL.Tool_MatchBox_Used.get(1), IL.Tool_MatchBox_Full.get(1));
    RM.Boxinator.addRecipe2(T, 16, 64, IL.Tool_Matches.get(64), OP.plateDouble.mat(MT.Paper, 1), IL.Tool_MatchBox_Full.get(1));
    RM.Unboxinator.addRecipe1(T, 16, 32, IL.Tool_MatchBox_Full.get(1), IL.Tool_Matches.get(64), OP.scrapGt.mat(MT.Paper, 16));
    IL.Tool_Lighter_Invar_Empty.set(addItem(5004, "Lighter (Empty)", "Requires Canning Machine to be filled", new OreDictItemData(MT.Invar, OP.plateCurved.mAmount * 2), TC.stack(TC.IGNIS, 1), TC.stack(TC.VACUOS, 1)));
    IL.Tool_Lighter_Invar_Used.set(addItem(5005, "Lighter", "", new OreDictItemData(MT.Invar, OP.plateCurved.mAmount * 2), TC.stack(TC.IGNIS, 2), TC.stack(TC.POTENTIA, 1), OD.craftingFirestarter, TD.Creative.HIDDEN));
    IL.Tool_Lighter_Invar_Full.set(addItem(5006, "Lighter (Full)", "", new OreDictItemData(MT.Invar, OP.plateCurved.mAmount * 2), TC.stack(TC.IGNIS, 1), TC.stack(TC.POTENTIA, 2), OD.craftingFirestarter));
    tBehaviour = new Behavior_Lighter(IL.Tool_Lighter_Invar_Empty.get(1), IL.Tool_Lighter_Invar_Used.get(1), IL.Tool_Lighter_Invar_Full.get(1), 100, 10000);
    addItemBehavior(5005, tBehaviour);
    addItemBehavior(5006, tBehaviour);
    RM.Canner.addRecipe1(T, 16, 16, IL.Tool_Lighter_Invar_Empty.get(1), FL.Butane.make(100), NF, IL.Tool_Lighter_Invar_Full.get(1));
    ItemsGT.addNEIRedirects(IL.Tool_Lighter_Invar_Empty.get(1), IL.Tool_Lighter_Invar_Used.get(1), IL.Tool_Lighter_Invar_Full.get(1));
    IL.Tool_Lighter_Platinum_Empty.set(addItem(5007, "Shiny Lighter (Empty)", "Requires Canning Machine to be filled", new OreDictItemData(MT.Pt, OP.plateCurved.mAmount * 2), TC.stack(TC.IGNIS, 1), TC.stack(TC.NEBRISUM, 1), TC.stack(TC.VACUOS, 1)));
    IL.Tool_Lighter_Platinum_Used.set(addItem(5008, "Shiny Lighter", "A known Master of Pranks is engraved on it", new OreDictItemData(MT.Pt, OP.plateCurved.mAmount * 2), TC.stack(TC.IGNIS, 2), TC.stack(TC.NEBRISUM, 1), TC.stack(TC.POTENTIA, 1), OD.craftingFirestarter, TD.Creative.HIDDEN));
    IL.Tool_Lighter_Platinum_Full.set(addItem(5009, "Shiny Lighter (Full)", "A known Master of Pranks is engraved on it", new OreDictItemData(MT.Pt, OP.plateCurved.mAmount * 2), TC.stack(TC.IGNIS, 1), TC.stack(TC.NEBRISUM, 1), TC.stack(TC.POTENTIA, 2), OD.craftingFirestarter));
    tBehaviour = new Behavior_Lighter(IL.Tool_Lighter_Platinum_Empty.get(1), IL.Tool_Lighter_Platinum_Used.get(1), IL.Tool_Lighter_Platinum_Full.get(1), 1000, 10000);
    addItemBehavior(5008, tBehaviour);
    addItemBehavior(5009, tBehaviour);
    RM.Canner.addRecipe1(T, 16, 64, IL.Tool_Lighter_Platinum_Empty.get(1), FL.Butane.make(1000), NF, IL.Tool_Lighter_Platinum_Full.get(1));
    ItemsGT.addNEIRedirects(IL.Tool_Lighter_Platinum_Empty.get(1), IL.Tool_Lighter_Platinum_Used.get(1), IL.Tool_Lighter_Platinum_Full.get(1));
    IL.Tool_Lighter_Plastic_Empty.set(addItem(5010, "Plastic Lighter (Empty)", "Requires Canning Machine to be filled", new OreDictItemData(MT.Plastic, OP.plateCurved.mAmount * 2, ANY.Fe, OP.screw.mAmount), TC.stack(TC.IGNIS, 1), TC.stack(TC.VACUOS, 1)));
    IL.Tool_Lighter_Plastic_Used.set(addItem(5011, "Plastic Lighter", "", new OreDictItemData(MT.Plastic, OP.plateCurved.mAmount * 2, ANY.Fe, OP.screw.mAmount), TC.stack(TC.IGNIS, 2), TC.stack(TC.POTENTIA, 1), OD.craftingFirestarter, TD.Creative.HIDDEN));
    IL.Tool_Lighter_Plastic_Full.set(addItem(5012, "Plastic Lighter (Full)", "", new OreDictItemData(MT.Plastic, OP.plateCurved.mAmount * 2, ANY.Fe, OP.screw.mAmount), TC.stack(TC.IGNIS, 1), TC.stack(TC.POTENTIA, 2), OD.craftingFirestarter));
    IL.Tool_Lighter_Plastic_Broken.set(addItem(5013, "Plastic Lighter (Broken)", "", new OreDictItemData(MT.Plastic, OP.plateCurved.mAmount * 2, ANY.Fe, OP.screw.mAmount), TC.stack(TC.IGNIS, 1), TC.stack(TC.PERDITIO, 1), TD.Creative.HIDDEN));
    tBehaviour = new Behavior_Lighter(IL.Tool_Lighter_Plastic_Broken.get(1), IL.Tool_Lighter_Plastic_Used.get(1), IL.Tool_Lighter_Plastic_Full.get(1), 100, 9000);
    addItemBehavior(5011, tBehaviour);
    addItemBehavior(5012, tBehaviour);
    CR.shaped(IL.Tool_Lighter_Plastic_Empty.get(1), CR.DEF_NCC, "IF", "dP", "xP", 'F', OD.itemFlint, 'P', OP.plateCurved.dat(MT.Plastic), 'I', OP.screw.dat(ANY.Iron));
    RM.Canner.addRecipe1(T, 16, 16, IL.Tool_Lighter_Plastic_Empty.get(1), FL.Butane.make(100), NF, IL.Tool_Lighter_Plastic_Full.get(1));
    ItemsGT.addNEIRedirects(IL.Tool_Lighter_Plastic_Empty.get(1), IL.Tool_Lighter_Plastic_Used.get(1), IL.Tool_Lighter_Plastic_Full.get(1), IL.Tool_Lighter_Plastic_Broken.get(1));
    IL.Tool_Fire_Starter.set(addItem(5014, "Fire Starter", "(Made with Dry Grass)", new OreDictItemData(ANY.Wood, U), new Behavior_Lighter(5000), TC.stack(TC.IGNIS, 1), TC.stack(TC.ARBOR, 1), TC.stack(TC.HERBA, 1), OD.craftingFirestarter));
    CR.shaped(IL.Tool_Fire_Starter.get(1), CR.DEF_NCC_MIR, "S ", "GS", 'S', OP.stick.dat(ANY.Wood), 'G', OD.itemGrassDry);
    IL.Tool_Fire_Starter_Bark.set(addItem(5015, "Fire Starter", "(Made with Dry Tree Bark)", new OreDictItemData(ANY.Wood, U), new Behavior_Lighter(5500), TC.stack(TC.IGNIS, 1), TC.stack(TC.ARBOR, 2), OD.craftingFirestarter));
    CR.shaped(IL.Tool_Fire_Starter_Bark.get(1), CR.DEF_NCC_MIR, "S ", "GS", 'S', OP.stick.dat(ANY.Wood), 'G', OD.itemBarkDry);
    IL.Pellet_Wood.set(addItem(5999, "Wood Pellet", "", new OreDictItemData(ANY.Wood, U), TICKS_PER_SMELT, TC.stack(TC.POTENTIA, 1)));
    RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.LiveRoot, U2), FL.Glue.make(125), NF, IL.Pellet_Wood.get(1));
    RM.Mixer.addRecipe1(T, 16, 32, OM.dust(MT.LiveRoot), FL.Glue.make(250), NF, IL.Pellet_Wood.get(2));
    RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Livingwood, U2), FL.Glue.make(125), NF, IL.Pellet_Wood.get(1));
    RM.Mixer.addRecipe1(T, 16, 32, OM.dust(MT.Livingwood), FL.Glue.make(250), NF, IL.Pellet_Wood.get(2));
    RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Greatwood, U2), FL.Glue.make(125), NF, IL.Pellet_Wood.get(1));
    RM.Mixer.addRecipe1(T, 16, 32, OM.dust(MT.Greatwood), FL.Glue.make(250), NF, IL.Pellet_Wood.get(2));
    RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Dreamwood, U4), FL.Glue.make(125), NF, IL.Pellet_Wood.get(1));
    RM.Mixer.addRecipe1(T, 16, 64, OM.dust(MT.Dreamwood), FL.Glue.make(500), NF, IL.Pellet_Wood.get(4));
    RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Shimmerwood, U4), FL.Glue.make(125), NF, IL.Pellet_Wood.get(1));
    RM.Mixer.addRecipe1(T, 16, 64, OM.dust(MT.Shimmerwood), FL.Glue.make(500), NF, IL.Pellet_Wood.get(4));
    RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Silverwood, U4), FL.Glue.make(125), NF, IL.Pellet_Wood.get(1));
    RM.Mixer.addRecipe1(T, 16, 64, OM.dust(MT.Silverwood), FL.Glue.make(500), NF, IL.Pellet_Wood.get(4));
    for (OreDictMaterial tWood : ANY.Wood.mToThis) RM.Mixer.addRecipe1(T, 16, 16, OM.dust(tWood), FL.Glue.make(125), NF, IL.Pellet_Wood.get(1));
    RM.Mixer.addRecipe1(T, 16, 16, OM.dust(MT.Bark), FL.Glue.make(125), NF, IL.Pellet_Wood.get(1));
    RM.Compressor.addRecipe1(T, 16, 16, IL.Pellet_Wood.get(2), ST.make(BlocksGT.Planks, 1, 8));
    RM.CokeOven.addRecipe1(T, 0, 900, IL.Pellet_Wood.get(1), NF, FL.Oil_Creosote.make(25), chunkGt.mat(MT.Charcoal, 1));
    IL.Module_Stone_Generator.set(addItem(6000, "Stone Generator Module", "Generates Stone for Recipes, also known as a Cobble Generator", TC.stack(TC.MACHINA, 1), TC.stack(TC.FABRICO, 1), TC.stack(TC.IGNIS, 1), TC.stack(TC.TERRA, 1), TC.stack(TC.AQUA, 1)));
    IL.Module_Basalt_Generator.set(addItem(6001, "Basalt Generator Module", "Generates Basalt for Recipes", TC.stack(TC.MACHINA, 1), TC.stack(TC.FABRICO, 1), TC.stack(TC.IGNIS, 1), TC.stack(TC.TERRA, 1), TC.stack(TC.AQUA, 1)));
    IL.Module_Blackstone_Generator.set(addItem(6002, "Blackstone Generator Module", "Generates Blackstone for Recipes", TC.stack(TC.MACHINA, 1), TC.stack(TC.FABRICO, 1), TC.stack(TC.IGNIS, 1), TC.stack(TC.TERRA, 1), TC.stack(TC.AQUA, 1)));
    CR.shaped(IL.Module_Stone_Generator.get(1), CR.DEF_REV_NCC, "CPC", "LMW", "COC", 'M', OP.casingMachine.dat(MT.SteelGalvanized), 'O', IL.Shape_Extruder_Block, 'C', OD_CIRCUITS[4], 'P', OD.craftingPiston, 'L', OD.container1000lava, 'W', OD.container1000water);
    CR.shaped(IL.Module_Basalt_Generator.get(1), CR.DEF_REV_NCC, "S", "M", "I", 'M', IL.Module_Stone_Generator, 'S', OD.soulsand, 'I', Blocks.packed_ice);
    CR.shaped(IL.Module_Blackstone_Generator.get(1), CR.DEF_REV_NCC, "S", "M", "O", 'M', IL.Module_Stone_Generator, 'S', OD.soulsand, 'O', OD.obsidian);
    IL.Paper_Printed_Pages.set(addItem(7002, "Printed Pages", "", Behavior_PrintedPages.INSTANCE, new OreDictItemData(MT.Paper, U * 3), TC.stack(TC.COGNITIO, 3)));
    IL.Paper_Printed_Pages_Many.set(addItem(7003, "Many Printed Pages", "", Behavior_PrintedPages.INSTANCE, new OreDictItemData(MT.Paper, U * 6), TC.stack(TC.COGNITIO, 6)));
    BooksGT.BOOK_REGISTER.put(IL.Paper_Printed_Pages, (byte) 26);
    BooksGT.BOOK_REGISTER.put(IL.Paper_Printed_Pages_Many, (byte) 26);
    IL.Paper_Blueprint_Empty.set(addItem(7010, "Empty Blueprint", "Place in Blueprint Slot and Shiftclick it, to assign Recipe", new OreDictItemData(MT.Paper, U), TC.stack(TC.COGNITIO, 1)));
    IL.Paper_Blueprint_Used.set(addItem(7011, "Blueprint", "Blueprint containing a Crafting Recipe", new OreDictItemData(MT.Paper, U), TC.stack(TC.COGNITIO, 2), "gt:autocrafterblueprintitem"));
    for (FluidStack tDye : DYE_FLUIDS[DYE_INDEX_Blue]) RM.Bath.addRecipe1(T, 0, 16, ST.make(Items.paper, 1, W), tDye, NF, IL.Paper_Blueprint_Empty.get(1));
    BooksGT.BOOK_REGISTER.put(IL.Paper_Blueprint_Empty, (byte) 25);
    BooksGT.BOOK_REGISTER.put(IL.Paper_Blueprint_Used, (byte) 28);
    ItemsGT.addNEIRedirects(IL.Paper_Blueprint_Empty.get(1), IL.Paper_Blueprint_Used.get(1));
    for (int i = 0; i < 16; i++) addItem(i + 7030, DYE_NAMES[i] + " Canvas", "Can be used together with the Obscurator", "gt:canvas", new CoverTextureCanvas(BlockTextureDefault.get("machines/covers/canvas", DYES[i])), new OreDictItemData(MT.Paper, U), TC.stack(TC.PANNUS, 1));
    for (FluidStack tDye : DYE_FLUIDS[DYE_INDEX_White]) RM.Bath.addRecipe1(T, 0, 16, ST.make(Items.paper, 1, W), tDye, NF, make(7030 + DYE_INDEX_White));
    for (int i = 0; i < 16; i++) if (i != DYE_INDEX_White)
        for (FluidStack tDye : DYE_FLUIDS[i]) RM.Bath.addRecipe1(T, 0, 16, make(7030 + DYE_INDEX_White), tDye, NF, make(7030 + i));
    for (int i = 0; i < 16; i++) BooksGT.BOOK_REGISTER.put(this, 7030 + i, (byte) 27);
    IL.Paper_Magic_Research_0.set(addItem(7990, "Magic Research Paper (Introduction)", "", new OreDictItemData(MT.Paper, U), TC.TERRA.get(8), TC.AQUA.get(8), TC.AER.get(8), TC.IGNIS.get(8), TC.PERDITIO.get(8), TC.ORDO.get(8)));
    IL.Paper_Magic_Research_1.set(addItem(7991, "Magic Research Paper (Page 1 / 8)", "", new OreDictItemData(MT.Paper, U), TC.LUX.get(8), TC.MOTUS.get(8), TC.VACUOS.get(8), TC.POTENTIA.get(8), TC.VITREUS.get(8), TC.VICTUS.get(8)));
    IL.Paper_Magic_Research_2.set(addItem(7992, "Magic Research Paper (Page 2 / 8)", "", new OreDictItemData(MT.Paper, U), TC.VOLATUS.get(8), TC.ITER.get(8), TC.MORTUUS.get(8), TC.BESTIA.get(8), TC.TENEBRAE.get(8), TC.PRAECANTIO.get(8)));
    IL.Paper_Magic_Research_3.set(addItem(7993, "Magic Research Paper (Page 3 / 8)", "", new OreDictItemData(MT.Paper, U), TC.ALIENIS.get(8), TC.EXAMINIS.get(8), TC.SPIRITUS.get(8), TC.VITIUM.get(8), TC.METALLUM.get(8), TC.GELUM.get(8)));
    IL.Paper_Magic_Research_4.set(addItem(7994, "Magic Research Paper (Page 4 / 8)", "", new OreDictItemData(MT.Paper, U), TC.COGNITIO.get(8), TC.SENSUS.get(8), TC.HERBA.get(8), TC.SANO.get(8), TC.LIMUS.get(8), TC.TEMPESTAS.get(8)));
    IL.Paper_Magic_Research_5.set(addItem(7995, "Magic Research Paper (Page 5 / 8)", "", new OreDictItemData(MT.Paper, U), TC.HUMANUS.get(8), TC.VINCULUM.get(8), TC.ARBOR.get(8), TC.FAMES.get(8), TC.CORPUS.get(8), TC.AURAM.get(8)));
    IL.Paper_Magic_Research_6.set(addItem(7996, "Magic Research Paper (Page 6 / 8)", "", new OreDictItemData(MT.Paper, U), TC.PERFODIO.get(8), TC.INSTRUMENTUM.get(8), TC.MESSIS.get(8), TC.LUCRUM.get(8), TC.VENENUM.get(8), TC.PERMUTATIO.get(8)));
    IL.Paper_Magic_Research_7.set(addItem(7997, "Magic Research Paper (Page 7 / 8)", "", new OreDictItemData(MT.Paper, U), TC.TELUM.get(8), TC.TUTAMEN.get(8), TC.PANNUS.get(8), TC.FABRICO.get(8), TC.METO.get(8), TC.MACHINA.get(8)));
    IL.Paper_Magic_Research_8.set(addItem(7998, "Magic Research Paper (Page 8 / 8)", "", new OreDictItemData(MT.Paper, U), TC.ELECTRUM.get(8), TC.RADIO.get(8), TC.MAGNETO.get(8), TC.NEBRISUM.get(8), TC.STRONTIO.get(8), TC.REFLEXIO.get(8)));
    for (int i = 0; i < IL.MAGIC_RESEARCH_PAPERS.length; i++) {
        BooksGT.BOOK_REGISTER.put(IL.MAGIC_RESEARCH_PAPERS[i], (byte) 18);
        if (IL.TC_Knowledge_Fragment.exists()) {
            RM.generify(IL.MAGIC_RESEARCH_PAPERS[i].get(1), IL.TC_Knowledge_Fragment.get(Math.max(1, i)));
            CR.shapeless(IL.TC_Knowledge_Fragment.get(Math.max(1, i)), CR.DEF, new Object[] { IL.MAGIC_RESEARCH_PAPERS[i] });
        }
    }
    IL.Robot_Tip_Wrench.set(addItem(8000, "Robot Arm Wrench Tip", "Infinitely usable inside an Autocrafter", OreDictToolNames.wrench, "gt:autocrafterinfinite", TC.stack(TC.INSTRUMENTUM, 4)));
    IL.Robot_Tip_Screwdriver.set(addItem(8001, "Robot Arm Screwdriver Tip", "Infinitely usable inside an Autocrafter", OreDictToolNames.screwdriver, "gt:autocrafterinfinite", TC.stack(TC.INSTRUMENTUM, 4)));
    IL.Robot_Tip_Saw.set(addItem(8002, "Robot Arm Saw Tip", "Infinitely usable inside an Autocrafter", OreDictToolNames.saw, "gt:autocrafterinfinite", TC.stack(TC.INSTRUMENTUM, 4)));
    IL.Robot_Tip_Hammer.set(addItem(8003, "Robot Arm Hammer Tip", "Infinitely usable inside an Autocrafter", OreDictToolNames.hammer, OreDictToolNames.hac_mortar, "gt:autocrafterinfinite", TC.stack(TC.INSTRUMENTUM, 4)));
    IL.Robot_Tip_Cutter.set(addItem(8004, "Robot Arm Cutter Tip", "Infinitely usable inside an Autocrafter", OreDictToolNames.wirecutter, OreDictToolNames.scissors, "gt:autocrafterinfinite", TC.stack(TC.INSTRUMENTUM, 4)));
    IL.Robot_Tip_Chisel.set(addItem(8005, "Robot Arm Chisel Tip", "Infinitely usable inside an Autocrafter", OreDictToolNames.chisel, "gt:autocrafterinfinite", TC.stack(TC.INSTRUMENTUM, 4)));
    IL.Robot_Tip_Rubber.set(addItem(8006, "Robot Arm Rubber Hammer Tip", "Infinitely usable inside an Autocrafter", OreDictToolNames.softhammer, "gt:autocrafterinfinite", TC.stack(TC.INSTRUMENTUM, 4)));
    IL.Robot_Tip_Blade.set(addItem(8007, "Robot Arm Blade Tip", "Infinitely usable inside an Autocrafter", OreDictToolNames.sword, OreDictToolNames.blade, OreDictToolNames.hac_cuttingboard, "gt:autocrafterinfinite", TC.stack(TC.INSTRUMENTUM, 4)));
    IL.Robot_Tip_Drill.set(addItem(8008, "Robot Arm Drill Tip", "Infinitely usable inside an Autocrafter", OreDictToolNames.drill, OreDictToolNames.handdrill, "gt:autocrafterinfinite", TC.stack(TC.INSTRUMENTUM, 4)));
    IL.Robot_Tip_File.set(addItem(8009, "Robot Arm File Tip", "Infinitely usable inside an Autocrafter", OreDictToolNames.file, "gt:autocrafterinfinite", TC.stack(TC.INSTRUMENTUM, 4)));
    CR.shaped(IL.Robot_Tip_Wrench.get(1), CR.DEF_REV, "wPh", "CMC", " X ", 'P', OP.plateCurved.dat(MT.SteelGalvanized), 'C', OD_CIRCUITS[3], 'M', IL.MOTORS[3], 'X', OP.toolHeadWrench.dat(MT.Cr));
    CR.shaped(IL.Robot_Tip_Screwdriver.get(1), CR.DEF_REV, "wPh", "CMC", " X ", 'P', OP.plateCurved.dat(MT.SteelGalvanized), 'C', OD_CIRCUITS[3], 'M', IL.MOTORS[3], 'X', OP.toolHeadScrewdriver.dat(MT.StainlessSteel));
    CR.shaped(IL.Robot_Tip_Saw.get(1), CR.DEF_REV, "wPh", "CMC", "DXd", 'P', OP.plateCurved.dat(MT.SteelGalvanized), 'C', OD_CIRCUITS[3], 'M', IL.MOTORS[3], 'X', OP.toolHeadBuzzSaw.dat(MT.CobaltBrass), 'D', OP.dust.dat(ANY.Diamond));
    CR.shaped(IL.Robot_Tip_Hammer.get(1), CR.DEF_REV, "wPh", "CMC", " X ", 'P', OP.plateCurved.dat(MT.SteelGalvanized), 'C', OD_CIRCUITS[3], 'M', IL.PISTONS[3], 'X', OP.toolHeadHammer.dat(MT.TungstenCarbide));
    CR.shaped(IL.Robot_Tip_Cutter.get(1), CR.DEF_REV, "wPh", "CMC", "XfX", 'P', OP.plateCurved.dat(MT.SteelGalvanized), 'C', OD_CIRCUITS[3], 'M', IL.MOTORS[3], 'X', OP.plate.dat(MT.StainlessSteel));
    CR.shaped(IL.Robot_Tip_Chisel.get(1), CR.DEF_REV, "wPh", "CMC", " X ", 'P', OP.plateCurved.dat(MT.SteelGalvanized), 'C', OD_CIRCUITS[3], 'M', IL.PISTONS[3], 'X', OP.toolHeadChisel.dat(MT.TungstenSteel));
    CR.shaped(IL.Robot_Tip_Rubber.get(1), CR.DEF_REV, "wPh", "CMC", " X ", 'P', OP.plateCurved.dat(MT.SteelGalvanized), 'C', OD_CIRCUITS[3], 'M', IL.PISTONS[3], 'X', OP.toolHeadHammer.dat(MT.Rubber));
    CR.shaped(IL.Robot_Tip_Blade.get(1), CR.DEF_REV, "wPh", "CMC", " X ", 'P', OP.plateCurved.dat(MT.SteelGalvanized), 'C', OD_CIRCUITS[3], 'M', IL.PISTONS[3], 'X', OP.toolHeadSword.dat(MT.Bronze));
    CR.shaped(IL.Robot_Tip_Drill.get(1), CR.DEF_REV, "wPh", "CMC", "fX ", 'P', OP.plateCurved.dat(MT.SteelGalvanized), 'C', OD_CIRCUITS[3], 'M', IL.MOTORS[3], 'X', OP.stick.dat(ANY.Steel));
    CR.shaped(IL.Robot_Tip_File.get(1), CR.DEF_REV, "wPh", "CMC", " X ", 'P', OP.plateCurved.dat(MT.SteelGalvanized), 'C', OD_CIRCUITS[3], 'M', IL.CONVEYERS[3], 'X', OP.dust.dat(ANY.Diamond));
    IL.Tool_Remote_Activator.set(addItem(9000, "Remote Activator", "", Behavior_Remote.INSTANCE, TC.stack(TC.MOTUS, 1), TC.stack(TC.PERMUTATIO, 1)));
    IL.Tool_Cheat.set(addItem(9001, "Debug Scanner", "", Behavior_Cropnalyzer.INSTANCE, ItemsGT.DEBUG_ITEMS, ItemsGT.ILLEGAL_DROPS, GarbageGT.BLACKLIST, new Behavior_Scanner(Integer.MAX_VALUE), EnergyStatDebug.INSTANCE, TC.stack(TC.SENSUS, 10), TC.stack(TC.INSTRUMENTUM, 10)));
    IL.Tool_Scanner.set(addItem(9002, "Portable Scanner", "", Behavior_Cropnalyzer.INSTANCE, new Behavior_Scanner(2), EnergyStat.makeTool(TD.Energy.EU, V[3] * 8000, V[3], 64, next()), TC.stack(TC.SENSUS, 10), TC.stack(TC.INSTRUMENTUM, 10)));
    IL.Tool_Cropnalyzer.set(addItem(9003, "Portable Cropnalyzer", "", Behavior_Cropnalyzer.INSTANCE, EnergyStat.makeTool(TD.Energy.EU, V[2] * 8000, V[2], 64, next()), TC.stack(TC.SENSUS, 5), TC.stack(TC.INSTRUMENTUM, 5), TC.stack(TC.HERBA, 5)));
    IL.Tool_Worldgen_Debugger.set(addItem(9999, "Worldgen Debug Wand", "", Behavior_Worldgen_Debugger.INSTANCE, ItemsGT.DEBUG_ITEMS, ItemsGT.ILLEGAL_DROPS, GarbageGT.BLACKLIST, TC.stack(TC.TERRA, 10), TC.stack(TC.PRAECANTIO, 10), TC.stack(TC.INSTRUMENTUM, 10)));
    CR.shaped(IL.Tool_Remote_Activator.get(1), CR.DEF_REV, "TPE", "BCd", "xPT", 'P', OP.plate.dat(MT.Cr), 'T', OP.screw.dat(MT.Cr), 'C', OD_CIRCUITS[4], 'E', IL.EMITTERS[4], 'B', OD.button);
    BooksGT.BOOK_REGISTER.put(IL.Tool_Remote_Activator, (byte) 1);
    // Moved to the Battery Section of the MTE Loader.
    // CR.shaped(IL.Tool_Scanner               .get(1), CR.DEF_REV, "EXR", "CPU", "BXB", 'B', IL.Battery_Alkaline_HV, 'X', OP.plate.dat(MT.Cr), 'U', OD_USB_STICKS[3], 'C', OD_USB_CABLES[3], 'E', IL.EMITTERS[4], 'R', IL.SENSORS[4], 'P', IL.Processor_Crystal_Sapphire);
    // CR.shaped(IL.Tool_Cropnalyzer           .get(1), CR.DEF_REV, "EXR", "CPU", "BXB", 'B', IL.Battery_Alkaline_MV, 'X', OP.plate.dat(MT.Al), 'U', OD_USB_STICKS[1], 'C', OD_USB_CABLES[1], 'E', IL.EMITTERS[2], 'R', IL.SENSORS[2], 'P', OD_CIRCUITS[6]);
    IL.Thermometer_Quicksilver.set(addItem(10000, "Quicksilver Thermometer", "", new Behavior_Tool(TOOL_thermometer), TC.stack(TC.VENENUM, 1), TC.stack(TC.VITREUS, 1)));
    IL.Geiger_Counter_Empty.set(addItem(10001, "Geiger Counter (Empty)", "Fill with proper inert Gas", TC.stack(TC.SENSUS, 1), TC.stack(TC.RADIO, 1)));
    IL.Geiger_Counter.set(addItem(10002, "Geiger Counter", "", new Behavior_Tool(TOOL_geigercounter), TC.stack(TC.SENSUS, 5), TC.stack(TC.RADIO, 5)));
    RM.Canner.addRecipe1(T, 16, 64, IL.Geiger_Counter_Empty.get(1), FL.Helium.make(1000), NF, IL.Geiger_Counter.get(1));
    RM.Canner.addRecipe1(T, 16, 64, IL.Geiger_Counter_Empty.get(1), FL.Neon.make(1000), NF, IL.Geiger_Counter.get(1));
    RM.Canner.addRecipe1(T, 16, 64, IL.Geiger_Counter_Empty.get(1), FL.Argon.make(1000), NF, IL.Geiger_Counter.get(1));
    CR.shaped(IL.Thermometer_Quicksilver.get(1), CR.DEF_REV, " GD", "GQG", "PG ", 'P', OP.plate.dat(ANY.Cu), 'G', OP.plate.dat(MT.Glass), 'D', DYE_OREDICTS[DYE_INDEX_Red], 'Q', OD.itemQuicksilver);
    CR.shaped(IL.Geiger_Counter_Empty.get(1), CR.DEF_REV, "TUT", "PCP", "TdT", 'U', OP.capcellcon.dat(MT.Al), 'P', OP.plate.dat(MT.Al), 'T', OP.screw.dat(MT.Al), 'C', OD_CIRCUITS[1]);
    OM.data(IL.Geiger_Counter.get(1), OM.data(IL.Geiger_Counter_Empty.get(1)));
    IL.Compass_North.set(addItem(11000, "Compass (NORTH)", "Points to Zed Negative", OD.itemCompass, new Behavior_Switch_Metadata(11001, T, T), OM.data(ST.make(Items.compass, 1, 0)), TC.stack(TC.METALLUM, 2), TC.stack(TC.MAGNETO, 2)));
    CR.shapeless(ST.make(Items.compass, 1, 0), CR.DEF, new Object[] { last() });
    IL.Compass_Face.set(addItem(11001, "Compass (FACE)", "Points into the direction you look", OD.itemCompass, new Behavior_Switch_Metadata(11002, T, T), OM.data(ST.make(Items.compass, 1, 0)), TD.Creative.HIDDEN, TC.stack(TC.METALLUM, 2), TC.stack(TC.MAGNETO, 1), TC.stack(TC.COGNITIO, 1)));
    CR.shapeless(ST.make(Items.compass, 1, 0), CR.DEF, new Object[] { last() });
    IL.Compass_Spawn.set(addItem(11002, "Compass (SPAWN)", "Points to the World Spawn like a normal Compass", OD.itemCompass, new Behavior_Switch_Metadata(11003, T, T), OM.data(ST.make(Items.compass, 1, 0)), TD.Creative.HIDDEN, TC.stack(TC.METALLUM, 2), TC.stack(TC.MAGNETO, 1), TC.stack(TC.HUMANUS, 1)));
    CR.shapeless(ST.make(Items.compass, 1, 0), CR.DEF, new Object[] { last() });
    IL.Compass_Center.set(addItem(11003, "Compass (CENTER)", "Points towards the middle of the World", OD.itemCompass, new Behavior_Switch_Metadata(11004, T, T), OM.data(ST.make(Items.compass, 1, 0)), TD.Creative.HIDDEN, TC.stack(TC.METALLUM, 2), TC.stack(TC.MAGNETO, 1), TC.stack(TC.TERRA, 1)));
    CR.shapeless(ST.make(Items.compass, 1, 0), CR.DEF, new Object[] { last() });
    IL.Compass_Death.set(addItem(11004, "Compass (DEATH)", "Points to your last Death, if you did not Rage Quit", OD.itemCompass, new Behavior_Switch_Metadata(11000, T, T), OM.data(ST.make(Items.compass, 1, 0)), TD.Creative.HIDDEN, TC.stack(TC.METALLUM, 2), TC.stack(TC.MAGNETO, 1), TC.stack(TC.MORTUUS, 1)));
    CR.shapeless(ST.make(Items.compass, 1, 0), CR.DEF, new Object[] { last() });
    ItemsGT.addNEIRedirects(IL.Compass_North.get(1), IL.Compass_Face.get(1), IL.Compass_Spawn.get(1), IL.Compass_Center.get(1), IL.Compass_Death.get(1));
    CR.shapeless(IL.Compass_North.get(1), CR.DEF, new Object[] { Items.compass });
    IL.Tape.set(addItem(12000, "Tape", "Full Roll", TC.stack(TC.PANNUS, 1), TC.stack(TC.LIMUS, 1)));
    IL.Tape_Used.set(addItem(12001, "Tape", "Used Roll", TC.stack(TC.PANNUS, 1), TC.stack(TC.LIMUS, 1)));
    CR.shaped(IL.Tape.get(1), CR.DEF, "PPP", " G ", 'P', OD.paperEmpty, 'G', OD.itemGlue);
    CR.shapeless(IL.Tape.get(1), CR.DEF, new Object[] { IL.Tape_Used, IL.Tape_Used, IL.Tape_Used, IL.Tape_Used });
    tBehaviour = new Behavior_Duct_Tape(null, IL.Tape_Used.get(1), IL.Tape.get(1), 0, 10000);
    ItemsGT.addNEIRedirects(IL.Tape.get(1), IL.Tape_Used.get(1));
    BooksGT.BOOK_REGISTER.put(IL.Tape, (byte) 57);
    BooksGT.BOOK_REGISTER.put(IL.Tape_Used, (byte) 57);
    addItemBehavior(12000, tBehaviour);
    addItemBehavior(12001, tBehaviour);
    IL.Duct_Tape.set(addItem(12002, "Duct Tape", "Full Roll", TC.stack(TC.FABRICO, 1), TC.stack(TC.LIMUS, 1), OD.craftingDuctTape));
    IL.Duct_Tape_Used.set(addItem(12003, "Duct Tape", "Used Roll", TC.stack(TC.FABRICO, 1), TC.stack(TC.LIMUS, 1)));
    CR.shaped(IL.Duct_Tape.get(1), CR.DEF, "PPP", " G ", 'P', OP.foil.dat(MT.Plastic), 'G', OD.itemGlue);
    CR.shapeless(IL.Duct_Tape.get(1), CR.DEF, new Object[] { IL.Duct_Tape_Used, IL.Duct_Tape_Used, IL.Duct_Tape_Used, IL.Duct_Tape_Used });
    tBehaviour = new Behavior_Duct_Tape(null, IL.Duct_Tape_Used.get(1), IL.Duct_Tape.get(1), 1, 100000);
    ItemsGT.addNEIRedirects(IL.Duct_Tape.get(1), IL.Duct_Tape_Used.get(1));
    BooksGT.BOOK_REGISTER.put(IL.Duct_Tape, (byte) 58);
    BooksGT.BOOK_REGISTER.put(IL.Duct_Tape_Used, (byte) 58);
    addItemBehavior(12002, tBehaviour);
    addItemBehavior(12003, tBehaviour);
    IL.Brain_Tape.set(addItem(12008, "BrainTech Aerospace Advanced Reinforced Duct Tape FAL-84", "Full Roll", TC.stack(TC.TUTAMEN, 1), TC.stack(TC.LIMUS, 1), OD.craftingDuctTape));
    IL.Brain_Tape_Used.set(addItem(12009, "BrainTech Aerospace Advanced Reinforced Duct Tape FAL-84", "Used Roll", TC.stack(TC.TUTAMEN, 1), TC.stack(TC.LIMUS, 1), OD.craftingDuctTape));
    CR.shaped(IL.Brain_Tape.get(1), CR.DEF, "PPP", " G ", 'P', OP.foil.dat(ANY.W), 'G', OD.itemGlue);
    CR.shapeless(IL.Brain_Tape.get(1), CR.DEF, new Object[] { IL.Brain_Tape_Used, IL.Brain_Tape_Used, IL.Brain_Tape_Used, IL.Brain_Tape_Used });
    tBehaviour = new Behavior_Duct_Tape(null, IL.Brain_Tape_Used.get(1), IL.Brain_Tape.get(1), 2, 10000000);
    ItemsGT.addNEIRedirects(IL.Brain_Tape.get(1), IL.Brain_Tape_Used.get(1));
    BooksGT.BOOK_REGISTER.put(IL.Brain_Tape, (byte) 59);
    BooksGT.BOOK_REGISTER.put(IL.Brain_Tape_Used, (byte) 59);
    addItemBehavior(12008, tBehaviour);
    addItemBehavior(12009, tBehaviour);
    IL.Key_Iron.set(addItem(30000, "Iron Key", "", OD.itemKey, new OreDictItemData(ANY.Iron, U4), Behavior_Key.INSTANCE, TC.stack(TC.MACHINA, 1)));
    CR.shaped(IL.Key_Iron.get(3), CR.DEF_NCC, "fPx", 'P', OP.plate.dat(ANY.Iron));
    IL.Key_Gold.set(addItem(30001, "Gold Key", "", OD.itemKey, new OreDictItemData(MT.Au, U4), Behavior_Key.INSTANCE, TC.stack(TC.MACHINA, 1)));
    CR.shaped(IL.Key_Gold.get(3), CR.DEF_NCC, "fPx", 'P', OP.plate.dat(MT.Au));
    IL.Key_Copper.set(addItem(30002, "Copper Key", "", OD.itemKey, new OreDictItemData(ANY.Cu, U4), Behavior_Key.INSTANCE, TC.stack(TC.MACHINA, 1)));
    CR.shaped(IL.Key_Copper.get(3), CR.DEF_NCC, "fPx", 'P', OP.plate.dat(ANY.Cu));
    IL.Key_Tin.set(addItem(30003, "Tin Key", "", OD.itemKey, new OreDictItemData(MT.Sn, U4), Behavior_Key.INSTANCE, TC.stack(TC.MACHINA, 1)));
    CR.shaped(IL.Key_Tin.get(3), CR.DEF_NCC, "fPx", 'P', OP.plate.dat(MT.Sn));
    IL.Key_Bronze.set(addItem(30004, "Bronze Key", "", OD.itemKey, new OreDictItemData(MT.Bronze, U4), Behavior_Key.INSTANCE, TC.stack(TC.MACHINA, 1)));
    CR.shaped(IL.Key_Bronze.get(3), CR.DEF_NCC, "fPx", 'P', OP.plate.dat(MT.Bronze));
    IL.Key_Brass.set(addItem(30005, "Brass Key", "", OD.itemKey, new OreDictItemData(MT.Brass, U4), Behavior_Key.INSTANCE, TC.stack(TC.MACHINA, 1)));
    CR.shaped(IL.Key_Brass.get(3), CR.DEF_NCC, "fPx", 'P', OP.plate.dat(MT.Brass));
    IL.Key_Silver.set(addItem(30006, "Silver Key", "", OD.itemKey, new OreDictItemData(MT.Ag, U4), Behavior_Key.INSTANCE, TC.stack(TC.MACHINA, 1)));
    CR.shaped(IL.Key_Silver.get(3), CR.DEF_NCC, "fPx", 'P', OP.plate.dat(MT.Ag));
    IL.Key_Platinum.set(addItem(30007, "Platinum Key", "", OD.itemKey, new OreDictItemData(MT.Pt, U4), Behavior_Key.INSTANCE, TC.stack(TC.MACHINA, 1)));
    CR.shaped(IL.Key_Platinum.get(3), CR.DEF_NCC, "fPx", 'P', OP.plate.dat(MT.Pt));
    IL.Key_Lead.set(addItem(30008, "Lead Key", "", OD.itemKey, new OreDictItemData(MT.Pb, U4), Behavior_Key.INSTANCE, TC.stack(TC.MACHINA, 1)));
    CR.shaped(IL.Key_Lead.get(3), CR.DEF_NCC, "fPx", 'P', OP.plate.dat(MT.Pb));
    IL.Key_Plastic.set(addItem(30009, "Plastic Key", "", OD.itemKey, new OreDictItemData(MT.Plastic, U4), Behavior_Key.INSTANCE, TC.stack(TC.MACHINA, 1)));
    CR.shaped(IL.Key_Plastic.get(3), CR.DEF_NCC, "fPx", 'P', OP.plate.dat(MT.Plastic));
    // In order to be able to hide Keys inside Bookshelves
    for (IItemContainer tContainer : IL.KEYS) BooksGT.BOOK_REGISTER.put(tContainer, (byte) 1);
}
Also used : OreDictMaterial(gregapi.oredict.OreDictMaterial) Behavior_Bucket_Simple(gregapi.item.multiitem.behaviors.Behavior_Bucket_Simple) OreDictItemData(gregapi.oredict.OreDictItemData) FluidStack(net.minecraftforge.fluids.FluidStack) IItemContainer(gregapi.code.IItemContainer) CoverTextureCanvas(gregapi.cover.covers.CoverTextureCanvas) MultiItem(gregapi.item.multiitem.MultiItem) Behavior_Tool(gregapi.item.multiitem.behaviors.Behavior_Tool) ItemStack(net.minecraft.item.ItemStack) Behavior_Switch_Metadata(gregapi.item.multiitem.behaviors.Behavior_Switch_Metadata)

Aggregations

IItemContainer (gregapi.code.IItemContainer)2 MultiItem (gregapi.item.multiitem.MultiItem)2 OreDictMaterial (gregapi.oredict.OreDictMaterial)2 ItemStack (net.minecraft.item.ItemStack)2 MultiTileEntityRegistry (gregapi.block.multitileentity.MultiTileEntityRegistry)1 ArrayListNoNulls (gregapi.code.ArrayListNoNulls)1 CoverTextureCanvas (gregapi.cover.covers.CoverTextureCanvas)1 MultiItemRandom (gregapi.item.multiitem.MultiItemRandom)1 Behavior_Bucket_Simple (gregapi.item.multiitem.behaviors.Behavior_Bucket_Simple)1 Behavior_Switch_Metadata (gregapi.item.multiitem.behaviors.Behavior_Switch_Metadata)1 Behavior_Tool (gregapi.item.multiitem.behaviors.Behavior_Tool)1 Behavior_Turn_Into (gregapi.item.multiitem.behaviors.Behavior_Turn_Into)1 IBehavior (gregapi.item.multiitem.behaviors.IBehavior)1 OreDictItemData (gregapi.oredict.OreDictItemData)1 OreDictMaterialStack (gregapi.oredict.OreDictMaterialStack)1 IOreDictConfigurationComponent (gregapi.oredict.configurations.IOreDictConfigurationComponent)1 Recipe (gregapi.recipes.Recipe)1 Entry (java.util.Map.Entry)1 Block (net.minecraft.block.Block)1 FluidStack (net.minecraftforge.fluids.FluidStack)1