Search in sources :

Example 1 with And

use of gregapi.code.ICondition.And in project gregtech6 by GregTech6.

the class Loader_Recipes_Handlers method run.

@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public void run() {
    RM.Sifting.add(new RecipeMapHandlerPrefix(pebbles, 1, null, 0, NF, 16, 0, 512, NF, dust, 3, null, 0, NI, NI, T, F, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(rockGt, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(rawOreChunk, 1, null, 0, NF, 16, 0, 64, NF, crushedTiny, 3, null, 0, NI, NI, T, F, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(chunk, 1, null, 0, NF, 16, 0, 128, NF, rubble, 1, null, 0, NI, NI, T, F, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(rubble, 1, null, 0, NF, 16, 0, 128, NF, pebbles, 1, null, 0, NI, NI, T, F, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(gemLegendary, 1, null, 0, NF, 16, 0, 256, NF, gemExquisite, 2, null, 0, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(gemExquisite, 1, null, 0, NF, 16, 0, 256, NF, gemFlawless, 2, null, 0, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(gemFlawless, 1, null, 0, NF, 16, 0, 256, NF, gem, 2, null, 0, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(gem, 1, null, 0, NF, 16, 0, 256, NF, gemFlawed, 2, null, 0, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(gemFlawed, 1, null, 0, NF, 16, 0, 256, NF, gemChipped, 2, null, 0, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(gemChipped, 1, null, 0, NF, 16, 0, 256, NF, null, 0, null, 0, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerPrefix(bouleGt, 1, null, 0, NF, 16, 0, 256, NF, gem, 4, null, 0, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Crusher.add(new RecipeMapHandlerCrushing());
    RM.Mortar.add(new RecipeMapHandlerPrefix(rockGt, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, ANTIMATTER.NOT));
    RM.Mortar.add(new RecipeMapHandlerPrefix(crushedPurified, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(crushedPurifiedTiny, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(crushedCentrifuged, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(crushedCentrifugedTiny, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(cleanGravel, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(dirtyGravel, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(crystalline, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(reduced, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(crystal, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(clump, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(scrapGt, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(billet, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(chunkGt, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(nugget, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(plateTiny, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(plateGemTiny, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(round, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(screw, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(bolt, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(wireFine, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(toolHeadArrow, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(toolHeadRawArrow, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(gemChipped, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Mortar.add(new RecipeMapHandlerPrefix(gemFlawed, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR, new Or(BRITTLE, FOOD, gemChipped.NOT))));
    RM.Mortar.add(new RecipeMapHandlerPrefix(gem, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, T, T, F, new And(ANTIMATTER.NOT, MORTAR, new Or(BRITTLE, FOOD, gemFlawed.NOT))));
    RM.Mortar.add(new RecipeMapHandlerPrefix(gemFlawless, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR, new Or(BRITTLE, FOOD, gem.NOT))));
    RM.Mortar.add(new RecipeMapHandlerPrefix(gemExquisite, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR, new Or(BRITTLE, FOOD, gemFlawless.NOT))));
    RM.Mortar.add(new RecipeMapHandlerPrefix(gemLegendary, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR, new Or(BRITTLE, FOOD, gemExquisite.NOT))));
    RM.Mortar.add(new RecipeMapHandlerPrefix(stick, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR, new Or(BRITTLE, FOOD, WOOD))));
    RM.Mortar.add(new RecipeMapHandlerPrefix(stickLong, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR, new Or(BRITTLE, FOOD, WOOD))));
    RM.Mortar.add(new RecipeMapHandlerPrefix(ingot, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, T, T, F, new And(ANTIMATTER.NOT, MORTAR, new Or(BRITTLE, FOOD, WOOD))));
    RM.Mortar.add(new RecipeMapHandlerPrefix(plate, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR, new Or(BRITTLE, FOOD, WOOD))));
    RM.Mortar.add(new RecipeMapHandlerPrefix(plateGem, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR, new Or(BRITTLE, FOOD, WOOD))));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(dustImpure, 1, null, 0, NF, 16, 0, 256, NF, dust, 1, dustTiny, 1, NI, NI, F, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT, MT.Bedrock.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(dustPure, 1, null, 0, NF, 16, 0, 256, NF, dust, 1, dustTiny, 2, NI, NI, F, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT, MT.Bedrock.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(dustRefined, 1, null, 0, NF, 16, 0, 256, NF, dust, 1, dustTiny, 3, NI, NI, F, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT, MT.Bedrock.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(chunk, 1, null, 0, NF, 16, 0, 256, NF, dust, 2, dustTiny, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(rubble, 1, null, 0, NF, 16, 0, 256, NF, dust, 2, dustTiny, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(pebbles, 1, null, 0, NF, 16, 0, 256, NF, dust, 2, dustTiny, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(clump, 1, null, 0, NF, 16, 0, 256, NF, dust, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(reduced, 1, null, 0, NF, 16, 0, 256, NF, dust, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(crystalline, 1, null, 0, NF, 16, 0, 256, NF, dust, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(cleanGravel, 1, null, 0, NF, 16, 0, 256, NF, dust, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(cluster, 1, null, 0, NF, 16, 0, 256, NF, dust, 3, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(dustImpure, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, dustTiny, 1, NI, NI, F, F, F, new And(ANTIMATTER.NOT, MORTAR, MT.Bedrock.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(dustPure, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, dustTiny, 2, NI, NI, F, F, F, new And(ANTIMATTER.NOT, MORTAR, MT.Bedrock.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(dustRefined, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, dustTiny, 3, NI, NI, F, F, F, new And(ANTIMATTER.NOT, MORTAR, MT.Bedrock.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(chunk, 1, null, 0, NF, 16, 0, 16, NF, dust, 2, dustTiny, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(rubble, 1, null, 0, NF, 16, 0, 16, NF, dust, 2, dustTiny, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(pebbles, 1, null, 0, NF, 16, 0, 16, NF, dust, 2, dustTiny, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(clump, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(reduced, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(crystalline, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(cleanGravel, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(cluster, 1, null, 0, NF, 16, 0, 16, NF, dust, 3, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushed }, L12_LONG_1, NF, 16, 0, 256, NF, new OreDictPrefix[] { dust, dustTiny, dustDiv72 }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushedPurified }, L12_LONG_1, NF, 16, 0, 256, NF, new OreDictPrefix[] { dust, dustSmall }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushedCentrifuged }, L12_LONG_1, NF, 16, 0, 256, NF, new OreDictPrefix[] { dust, dustSmall, dustTiny, dustDiv72 }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushedTiny }, L12_LONG_1, NF, 16, 0, 256, NF, new OreDictPrefix[] { dustTiny, dustDiv72 }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushedPurifiedTiny }, L12_LONG_1, NF, 16, 0, 256, NF, new OreDictPrefix[] { dustTiny, dustDiv72, dustDiv72 }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushedCentrifugedTiny }, L12_LONG_1, NF, 16, 0, 256, NF, new OreDictPrefix[] { dustTiny, dustDiv72, dustDiv72, dustDiv72 }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushed }, L12_LONG_1, NF, 16, 0, 16, NF, new OreDictPrefix[] { dust, dustTiny, dustDiv72 }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushedPurified }, L12_LONG_1, NF, 16, 0, 16, NF, new OreDictPrefix[] { dust, dustSmall }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushedCentrifuged }, L12_LONG_1, NF, 16, 0, 16, NF, new OreDictPrefix[] { dust, dustSmall, dustTiny, dustDiv72 }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushedTiny }, L12_LONG_1, NF, 16, 0, 16, NF, new OreDictPrefix[] { dustTiny, dustDiv72 }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushedPurifiedTiny }, L12_LONG_1, NF, 16, 0, 16, NF, new OreDictPrefix[] { dustTiny, dustDiv72, dustDiv72 }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Shredder.add(new RecipeMapHandlerPrefixShredding(new OreDictPrefix[] { crushedCentrifugedTiny }, L12_LONG_1, NF, 16, 0, 16, NF, new OreDictPrefix[] { dustTiny, dustDiv72, dustDiv72, dustDiv72 }, L12_LONG_1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    for (OreDictPrefix tPrefix : OreDictPrefix.VALUES) if (tPrefix.mByProducts.isEmpty() && tPrefix.contains(RECYCLABLE) && !tPrefix.containsAny(ORE, ORE_PROCESSING_BASED, DUST_BASED, IS_CONTAINER) && !tPrefix.mNameInternal.startsWith("cableGt") && !tPrefix.mNameInternal.startsWith("wireGt") && !tPrefix.mNameInternal.startsWith("pipe")) {
        RM.Shredder.add(new RecipeMapHandlerPrefix(tPrefix, 1, null, 0, NF, 16, 0, 256, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR.NOT)));
        RM.Shredder.add(new RecipeMapHandlerPrefix(tPrefix, 1, null, 0, NF, 16, 0, 16, NF, null, 0, null, 0, NI, NI, F, T, F, new And(ANTIMATTER.NOT, MORTAR)));
    }
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(rockGt, 1, null, 0, NF, 16, 0, 16, NF, dustSmall, 9, null, 0, ST.emptySlot(), NI, T, F, F, ANTIMATTER.NOT));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(chunk, 1, null, 0, NF, 16, 0, 16, NF, dust, 2, dustTiny, 1, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(rubble, 1, null, 0, NF, 16, 0, 16, NF, dust, 2, dustTiny, 1, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(pebbles, 1, null, 0, NF, 16, 0, 16, NF, dust, 2, dustTiny, 1, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(clump, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(reduced, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(crystalline, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(cleanGravel, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(cluster, 1, null, 0, NF, 16, 0, 16, NF, dust, 3, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(oreRaw, 1, null, 0, NF, 16, 0, 16, NF, crushed, 1, crushedTiny, 6, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR, selfcrush())));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(crushed, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, dustDiv72, 9, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(crushedPurified, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, dustDiv72, 18, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(crushedCentrifuged, 1, null, 0, NF, 16, 0, 16, NF, dust, 1, dustDiv72, 27, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(crushedTiny, 1, null, 0, NF, 16, 0, 16, NF, dustDiv72, 9, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(crushedPurifiedTiny, 1, null, 0, NF, 16, 0, 16, NF, dustDiv72, 10, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefixShredding(crushedCentrifugedTiny, 1, null, 0, NF, 16, 0, 16, NF, dustDiv72, 11, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, MORTAR)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingot, 1, ingot, 1, NF, 64, 0, 64, NF, ingotDouble, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingot, 1, ingotDouble, 1, NF, 64, 0, 64, NF, ingotTriple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingot, 1, ingotTriple, 1, NF, 64, 0, 64, NF, ingotQuadruple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingot, 1, ingotQuadruple, 1, NF, 64, 0, 64, NF, ingotQuintuple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingotDouble, 1, ingotDouble, 1, NF, 64, 0, 64, NF, ingotQuadruple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingotDouble, 1, ingotTriple, 1, NF, 64, 0, 64, NF, ingotQuintuple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(plate, 1, plate, 1, NF, 64, 0, 64, NF, plateDouble, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(plate, 1, plateDouble, 1, NF, 64, 0, 64, NF, plateTriple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(plate, 1, plateTriple, 1, NF, 64, 0, 64, NF, plateQuadruple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(plate, 1, plateQuadruple, 1, NF, 64, 0, 64, NF, plateQuintuple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(plateDouble, 1, plateDouble, 1, NF, 64, 0, 64, NF, plateQuadruple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(plateDouble, 1, plateTriple, 1, NF, 64, 0, 64, NF, plateQuintuple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(stick, 1, stick, 1, NF, 64, 0, 64, NF, stickLong, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ring, 2, ring, 2, NF, 64, 0, 64, NF, chain, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(chunkGt, 1, null, 0, NF, 64, 0, 64, NF, plateTiny, 1, scrapGt, 1, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)).chances(10000, 9000));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingot, 1, null, 0, NF, 64, 0, 64, NF, plateSteamcraft, 1, scrapGt, 3, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)).chances(10000, 9000));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingotDouble, 1, null, 0, NF, 64, 0, 64, NF, plate, 1, scrapGt, 9, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)).chances(10000, 9000));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingotTriple, 1, null, 0, NF, 64, 0, 64, NF, plateDouble, 1, scrapGt, 9, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)).chances(10000, 9000));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingotQuadruple, 1, null, 0, NF, 64, 0, 64, NF, plateTriple, 1, scrapGt, 9, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)).chances(10000, 9000));
    RM.Anvil.add(new RecipeMapHandlerPrefix(ingotQuintuple, 1, null, 0, NF, 64, 0, 64, NF, plateQuadruple, 1, scrapGt, 9, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)).chances(10000, 9000));
    RM.Anvil.add(new RecipeMapHandlerPrefix(plate, 1, null, 0, NF, 64, 0, 64, NF, casingSmall, 1, scrapGt, 4, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)).chances(10000, 9000));
    RM.Anvil.add(new RecipeMapHandlerPrefix(plateCurved, 1, null, 0, NF, 64, 0, 64, NF, plate, 1, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(gemLegendary, 1, null, 0, NF, 64, 0, 64, NF, gemExquisite, 2, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(gemExquisite, 1, null, 0, NF, 64, 0, 64, NF, gemFlawless, 2, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(gemFlawless, 1, null, 0, NF, 64, 0, 64, NF, gem, 2, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(gem, 1, null, 0, NF, 64, 0, 64, NF, gemFlawed, 2, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(gemFlawed, 1, null, 0, NF, 64, 0, 64, NF, gemChipped, 2, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT)));
    RM.Anvil.add(new RecipeMapHandlerPrefix(gemChipped, 1, null, 0, NF, 64, 0, 64, NF, dustSmall, 1, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT)));
    RM.AnvilBendBig.add(new RecipeMapHandlerPrefix(plate, 1, null, 0, NF, 64, 0, 64, NF, plateCurved, 1, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE)));
    RM.AnvilBendBig.add(new RecipeMapHandlerPrefix(stick, 1, null, 0, NF, 64, 0, 64, NF, springSmall, 1, scrapGt, 2, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE)).chances(10000, 9000));
    RM.AnvilBendBig.add(new RecipeMapHandlerPrefix(stickLong, 1, null, 0, NF, 64, 0, 64, NF, spring, 1, null, 0, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE)));
    RM.AnvilBendSmall.add(new RecipeMapHandlerPrefix(plate, 1, null, 0, NF, 64, 0, 64, NF, foil, 2, scrapGt, 4, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)).chances(10000, 9000));
    RM.AnvilBendSmall.add(new RecipeMapHandlerPrefix(stick, 1, null, 0, NF, 64, 0, 64, NF, ring, 1, scrapGt, 2, ST.emptySlot(), NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, COATED.NOT)).chances(10000, 9000));
    RM.Compressor.add(new RecipeMapHandlerPrefix(dust, 1, NF, 16, 0, 256, NF, plateGem, 1, NI, NI, T, F, F, new Nor(gemLegendary, gemExquisite, gemFlawless, bouleGt, MT.Ice, ANTIMATTER, LAYERED, COATED, FURNACE)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(compressed, 9, NF, 16, 0, 256, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(plate, 9, NF, 16, 0, 256, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(plateTriple, 3, NF, 16, 0, 256, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(blockPlate, 1, NF, 16, 0, 256, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(blockSolid, 1, NF, 16, 0, 256, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(ingot, 1, NF, 16, 0, 256, NF, compressed, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(billet, 1, NF, 16, 0, 256, NF, plateSteamcraft, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(dust, 1, NF, 16, 16, 0, NF, plateGem, 1, NI, NI, T, F, F, new Nor(gemLegendary, gemExquisite, gemFlawless, bouleGt, MT.Ice, ANTIMATTER, LAYERED, COATED, FURNACE.NOT)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(compressed, 9, NF, 16, 16 * 9, 0, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(plate, 9, NF, 16, 16 * 9, 0, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(plateTriple, 3, NF, 16, 16 * 9, 0, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(blockPlate, 1, NF, 16, 16 * 9, 0, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(blockSolid, 1, NF, 16, 16 * 9, 0, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(ingot, 1, NF, 16, 16, 0, NF, compressed, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE)));
    RM.Compressor.add(new RecipeMapHandlerPrefix(billet, 1, NF, 16, 32 / 3, 0, NF, plateSteamcraft, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE)));
    if (IL.IC2_Plantball.exists()) {
        RM.Compressor.add(new RecipeMapHandlerPrefix(plantGtBerry, 16, NF, 16, 16, 0, NF, null, 0, NI, IL.IC2_Plantball.get(1), F, F, F, ANTIMATTER.NOT));
        RM.Compressor.add(new RecipeMapHandlerPrefix(plantGtBlossom, 8, NF, 16, 16, 0, NF, null, 0, NI, IL.IC2_Plantball.get(1), F, F, F, ANTIMATTER.NOT));
        RM.Compressor.add(new RecipeMapHandlerPrefix(plantGtTwig, 4, NF, 16, 16, 0, NF, null, 0, NI, IL.IC2_Plantball.get(1), F, F, F, ANTIMATTER.NOT));
        RM.Compressor.add(new RecipeMapHandlerPrefix(plantGtWart, 8, NF, 16, 16, 0, NF, null, 0, NI, IL.IC2_Plantball.get(1), F, F, F, ANTIMATTER.NOT));
    } else if (IL.HBM_Biomass.exists()) {
        RM.Compressor.add(new RecipeMapHandlerPrefix(plantGtBerry, 16, NF, 16, 16, 0, NF, null, 0, NI, IL.HBM_Biomass.get(1), F, F, F, ANTIMATTER.NOT));
        RM.Compressor.add(new RecipeMapHandlerPrefix(plantGtBlossom, 8, NF, 16, 16, 0, NF, null, 0, NI, IL.HBM_Biomass.get(1), F, F, F, ANTIMATTER.NOT));
        RM.Compressor.add(new RecipeMapHandlerPrefix(plantGtTwig, 4, NF, 16, 16, 0, NF, null, 0, NI, IL.HBM_Biomass.get(1), F, F, F, ANTIMATTER.NOT));
        RM.Compressor.add(new RecipeMapHandlerPrefix(plantGtWart, 8, NF, 16, 16, 0, NF, null, 0, NI, IL.HBM_Biomass.get(1), F, F, F, ANTIMATTER.NOT));
    }
    RM.Press.add(new RecipeMapHandlerPrefix(toolHeadArrow, 1, NF, 16, 16, 0, NF, arrowGtWood, 1, OP.arrowGtWood.mat(MT.Empty, 1), NI, T, F, F, new And(ANTIMATTER.NOT, MT.Empty.NOT)));
    RM.Press.add(new RecipeMapHandlerPrefix(toolHeadArrow, 1, NF, 16, 16, 0, NF, arrowGtPlastic, 1, OP.arrowGtPlastic.mat(MT.Empty, 1), NI, T, F, F, new And(ANTIMATTER.NOT, MT.Empty.NOT)));
    RM.Press.add(new RecipeMapHandlerPrefix(round, 1, NF, 16, 16, 0, NF, bulletGtSmall, 1, OP.bulletGtSmall.mat(MT.Empty, 1), NI, T, F, F, new And(ANTIMATTER.NOT, MT.Empty.NOT)));
    RM.Press.add(new RecipeMapHandlerPrefix(round, 2, NF, 16, 32, 0, NF, bulletGtMedium, 1, OP.bulletGtMedium.mat(MT.Empty, 1), NI, T, F, F, new And(ANTIMATTER.NOT, MT.Empty.NOT)));
    RM.Press.add(new RecipeMapHandlerPrefix(round, 3, NF, 16, 64, 0, NF, bulletGtLarge, 1, OP.bulletGtLarge.mat(MT.Empty, 1), NI, T, F, F, new And(ANTIMATTER.NOT, MT.Empty.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(nugget, 1, NF, 16, 0, 256, NF, plateTiny, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(billet, 1, NF, 16, 0, 256, NF, plateSteamcraft, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(ingot, 1, NF, 16, 0, 256, NF, plate, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(ingotDouble, 1, NF, 16, 0, 256, NF, plateDouble, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(ingotTriple, 1, NF, 16, 0, 256, NF, plateTriple, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(ingotQuadruple, 1, NF, 16, 0, 256, NF, plateQuadruple, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(ingotQuintuple, 1, NF, 16, 0, 256, NF, plateQuintuple, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(blockSolid, 1, NF, 16, 0, 256, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(compressed, 1, NF, 16, 0, 256, NF, plate, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(plateCurved, 1, NF, 16, 0, 256, NF, plate, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(plate, 1, NF, 16, 0, 256, NF, sheetGt, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(nugget, 1, NF, 16, 16 / 9, 0, NF, plateTiny, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(billet, 1, NF, 16, 32 / 3, 0, NF, plateSteamcraft, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(ingot, 1, NF, 16, 16, 0, NF, plate, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(ingotDouble, 1, NF, 16, 16 * 2, 0, NF, plateDouble, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(ingotTriple, 1, NF, 16, 16 * 3, 0, NF, plateTriple, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(ingotQuadruple, 1, NF, 16, 16 * 4, 0, NF, plateQuadruple, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(ingotQuintuple, 1, NF, 16, 16 * 5, 0, NF, plateQuintuple, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(blockSolid, 1, NF, 16, 16 * 9, 0, NF, plateDense, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(compressed, 1, NF, 16, 16, 0, NF, plate, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(plateCurved, 1, NF, 16, 16, 0, NF, plate, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollingMill.add(new RecipeMapHandlerPrefix(plate, 1, NF, 16, 16, 0, NF, sheetGt, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.Wiremill.add(new RecipeMapHandlerPrefix(stick, 1, NF, 16, 0, 128, NF, wireFine, 4, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Wiremill.add(new RecipeMapHandlerPrefix(stickLong, 1, NF, 16, 0, 128, NF, wireFine, 8, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Wiremill.add(new RecipeMapHandlerPrefix(ingot, 1, NF, 16, 0, 128, NF, wireGt01, 2, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Wiremill.add(new RecipeMapHandlerPrefix(compressed, 1, NF, 16, 0, 128, NF, wireGt01, 2, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Wiremill.add(new RecipeMapHandlerPrefix(stick, 1, NF, 16, 16 / 2, 0, NF, wireFine, 4, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.Wiremill.add(new RecipeMapHandlerPrefix(stickLong, 1, NF, 16, 16, 0, NF, wireFine, 8, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.Wiremill.add(new RecipeMapHandlerPrefix(ingot, 1, NF, 16, 16, 0, NF, wireGt01, 2, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.Wiremill.add(new RecipeMapHandlerPrefix(compressed, 1, NF, 16, 16, 0, NF, wireGt01, 2, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.RollBender.add(new RecipeMapHandlerPrefix(plate, 1, NF, 16, 0, 256, NF, plateCurved, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollBender.add(new RecipeMapHandlerPrefix(stick, 1, NF, 16, 0, 256, NF, ring, 2, NI, NI, T, F, F, new And(ANTIMATTER.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollBender.add(new RecipeMapHandlerPrefix(stickLong, 1, NF, 16, 0, 256, NF, spring, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollBender.add(new RecipeMapHandlerPrefix(wireFine, 2, NF, 16, 0, 256, NF, springSmall, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollBender.add(new RecipeMapHandlerPrefix(plate, 1, NF, 16, 16, 0, NF, plateCurved, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, SMITHABLE, FURNACE)));
    RM.RollBender.add(new RecipeMapHandlerPrefix(stick, 1, NF, 16, 16 / 4, 0, NF, ring, 2, NI, NI, T, F, F, new And(ANTIMATTER.NOT, SMITHABLE, FURNACE)));
    RM.RollBender.add(new RecipeMapHandlerPrefix(stickLong, 1, NF, 16, 16, 0, NF, spring, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, SMITHABLE, FURNACE)));
    RM.RollBender.add(new RecipeMapHandlerPrefix(wireFine, 2, NF, 16, 16 / 4, 0, NF, springSmall, 1, NI, NI, T, F, F, new And(ANTIMATTER.NOT, SMITHABLE, FURNACE)));
    RM.ClusterMill.add(new RecipeMapHandlerPrefix(plate, 1, NF, 16, 0, 256, NF, foil, 4, NI, NI, T, F, F, new And(ANTIMATTER.NOT, SMITHABLE, FURNACE.NOT)));
    RM.ClusterMill.add(new RecipeMapHandlerPrefix(plate, 1, NF, 16, 16, 0, NF, foil, 4, NI, NI, T, F, F, new And(ANTIMATTER.NOT, SMITHABLE, FURNACE)));
    RM.RollFormer.add(new RecipeMapHandlerPrefix(plate, 1, NF, 16, 0, 64, NF, railGt, 4, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE.NOT)));
    RM.RollFormer.add(new RecipeMapHandlerPrefix(plate, 1, NF, 16, 16, 0, NF, railGt, 4, NI, NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(ingot, 2, NF, 16, 0, 64, NF, ingotDouble, 1, ST.tag(2), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(ingot, 3, NF, 16, 0, 64, NF, ingotTriple, 1, ST.tag(3), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(ingot, 4, NF, 16, 0, 64, NF, ingotQuadruple, 1, ST.tag(4), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(ingot, 5, NF, 16, 0, 64, NF, ingotQuintuple, 1, ST.tag(5), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(ingot, 9, NF, 16, 0, 64, NF, blockSolid, 1, ST.tag(9), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 1, NF, 16, 0, 64, NF, pipeTiny, 2, ST.tag(1), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 1, NF, 16, 0, 64, NF, pipeSmall, 1, ST.tag(2), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 3, NF, 16, 0, 64, NF, pipeMedium, 1, ST.tag(3), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 6, NF, 16, 0, 64, NF, pipeLarge, 1, ST.tag(4), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 12, NF, 16, 0, 64, NF, pipeHuge, 1, ST.tag(5), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(casingSmall, 2, NF, 16, 0, 64, NF, plate, 1, ST.tag(2), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(bolt, 4, NF, 16, 0, 64, NF, stick, 1, ST.tag(4), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(bolt, 8, NF, 16, 0, 64, NF, stickLong, 1, ST.tag(8), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(stick, 2, NF, 16, 0, 64, NF, stickLong, 1, ST.tag(2), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(ingot, 2, NF, 16, 16 * 2, 0, NF, ingotDouble, 1, ST.tag(2), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(ingot, 3, NF, 16, 16 * 3, 0, NF, ingotTriple, 1, ST.tag(3), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(ingot, 4, NF, 16, 16 * 4, 0, NF, ingotQuadruple, 1, ST.tag(4), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(ingot, 5, NF, 16, 16 * 5, 0, NF, ingotQuintuple, 1, ST.tag(5), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(ingot, 9, NF, 16, 16 * 9, 0, NF, blockSolid, 1, ST.tag(9), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 1, NF, 16, 16 * 1, 0, NF, pipeTiny, 2, ST.tag(1), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 1, NF, 16, 16 * 1, 0, NF, pipeSmall, 1, ST.tag(2), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 3, NF, 16, 16 * 3, 0, NF, pipeMedium, 1, ST.tag(3), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 6, NF, 16, 16 * 6, 0, NF, pipeLarge, 1, ST.tag(4), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 12, NF, 16, 16 * 12, 0, NF, pipeHuge, 1, ST.tag(5), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(casingSmall, 2, NF, 16, 16, 0, NF, plate, 1, ST.tag(2), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(bolt, 4, NF, 16, 16 / 2, 0, NF, stick, 1, ST.tag(4), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(bolt, 8, NF, 16, 16, 0, NF, stickLong, 1, ST.tag(8), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(stick, 2, NF, 16, 16, 0, NF, stickLong, 1, ST.tag(2), NI, T, F, F, new And(ANTIMATTER.NOT, COATED.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 4, ring, 1, NF, 16, 0, 64, NF, rotor, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plate, 6, stickLong, 2, NF, 16, 0, 64, NF, casingMachine, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateDouble, 6, stickLong, 2, NF, 16, 0, 64, NF, casingMachineDouble, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateQuadruple, 6, stickLong, 2, NF, 16, 0, 64, NF, casingMachineQuadruple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateDense, 6, stickLong, 2, NF, 16, 0, 64, NF, casingMachineDense, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plate, 6, stick, 4, NF, 16, 0, 64, NF, casingMachine, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateDouble, 6, stick, 4, NF, 16, 0, 64, NF, casingMachineDouble, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateQuadruple, 6, stick, 4, NF, 16, 0, 64, NF, casingMachineQuadruple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateDense, 6, stick, 4, NF, 16, 0, 64, NF, casingMachineDense, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE.NOT)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateCurved, 4, ring, 1, NF, 16, 16 * 4, 0, NF, rotor, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plate, 6, stickLong, 2, NF, 16, 16 * 8, 0, NF, casingMachine, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateDouble, 6, stickLong, 2, NF, 16, 16 * 14, 0, NF, casingMachineDouble, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateQuadruple, 6, stickLong, 2, NF, 16, 16 * 26, 0, NF, casingMachineQuadruple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateDense, 6, stickLong, 2, NF, 16, 16 * 56, 0, NF, casingMachineDense, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plate, 6, stick, 4, NF, 16, 16 * 8, 0, NF, casingMachine, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateDouble, 6, stick, 4, NF, 16, 16 * 14, 0, NF, casingMachineDouble, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateQuadruple, 6, stick, 4, NF, 16, 16 * 26, 0, NF, casingMachineQuadruple, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Welder.add(new RecipeMapHandlerPrefix(plateDense, 6, stick, 4, NF, 16, 16 * 56, 0, NF, casingMachineDense, 1, null, 0, NI, NI, T, F, F, new And(ANTIMATTER.NOT, FLAMMABLE.NOT, SMITHABLE, FURNACE)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(bolt, 1, NF, 16, 0, 64, NF, screw, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(nugget, 1, NF, 16, 0, 64, NF, round, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(plateGem, 1, NF, 16, 0, 64, NF, lens, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(ingot, 1, NF, 16, 0, 64, NF, stick, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(billet, 1, NF, 16, 0, 64, NF, stick, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(bouleGt, 1, NF, 16, 0, 64, NF, stickLong, 3, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(gemChipped, 1, NF, 16, 0, 64, NF, bolt, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(gemFlawed, 1, NF, 16, 0, 64, NF, bolt, 3, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE.NOT, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(bolt, 1, NF, 16, 16 / 8, 0, NF, screw, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(nugget, 1, NF, 16, 16 / 9, 0, NF, round, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(plateGem, 1, NF, 16, 16, 0, NF, lens, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(ingot, 1, NF, 16, 16, 0, NF, stick, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(billet, 1, NF, 16, 16, 0, NF, stick, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(bouleGt, 1, NF, 16, 16 * 4, 0, NF, stickLong, 3, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(gemChipped, 1, NF, 16, 16 / 4, 0, NF, bolt, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE, LAYERED.NOT)));
    RM.Lathe.add(new RecipeMapHandlerPrefix(gemFlawed, 1, NF, 16, 16 / 2, 0, NF, bolt, 3, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, FURNACE, LAYERED.NOT)));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(nugget, 1, NF, 16, 0, 256, NF, round, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT)).chances(10000, 7500));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(plateGem, 1, NF, 16, 0, 256, NF, lens, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT)).chances(10000, 7500));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(ingot, 1, NF, 16, 0, 256, NF, stick, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT)).chances(10000, 7500));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(billet, 1, NF, 16, 0, 256, NF, stick, 1, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT)).chances(10000, 7500));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(gemChipped, 1, NF, 16, 0, 256, NF, toolHeadArrow, 2, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT)).chances(10000, 7500));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(rockGt, 1, NF, 16, 0, 256, NF, toolHeadArrow, 8, NI, NI, T, T, F, new And(ANTIMATTER.NOT, COATED.NOT, STONE)).chances(10000, 7500));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawArrow, 1, NF, 16, 0, 16, NF, toolHeadArrow, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawSaw, 1, NF, 16, 0, 16, NF, toolHeadSaw, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawChisel, 1, NF, 16, 0, 16, NF, toolHeadChisel, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawSword, 1, NF, 16, 0, 16, NF, toolHeadSword, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawPickaxe, 1, NF, 16, 0, 16, NF, toolHeadPickaxe, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawShovel, 1, NF, 16, 0, 16, NF, toolHeadShovel, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawSpade, 1, NF, 16, 0, 16, NF, toolHeadSpade, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawUniversalSpade, 1, NF, 16, 0, 16, NF, toolHeadUniversalSpade, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawAxe, 1, NF, 16, 0, 16, NF, toolHeadAxe, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawAxeDouble, 1, NF, 16, 0, 16, NF, toolHeadAxeDouble, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawHoe, 1, NF, 16, 0, 16, NF, toolHeadHoe, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawSense, 1, NF, 16, 0, 16, NF, toolHeadSense, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    RM.Sharpening.add(new RecipeMapHandlerPrefix(toolHeadRawPlow, 1, NF, 16, 0, 16, NF, toolHeadPlow, 1, NI, NI, T, T, F, ANTIMATTER.NOT));
    lens.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, plateGem, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    stick.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, ingot, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    stick.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, billet, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    toolHeadArrow.addListener(new OreProcessing_CraftFrom(2, null, new String[][] { { "X ", " f" } }, gemChipped, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT)));
    toolHeadArrow.addListener(new OreProcessing_CraftFrom(8, null, new String[][] { { "X ", " f" } }, rockGt, null, null, null, null, new And(ANTIMATTER.NOT, COATED.NOT, STONE)));
    toolHeadArrow.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawArrow, null, null, null, null, ANTIMATTER.NOT));
    toolHeadSaw.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawSaw, null, null, null, null, ANTIMATTER.NOT));
    toolHeadChisel.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawChisel, null, null, null, null, ANTIMATTER.NOT));
    toolHeadSword.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawSword, null, null, null, null, ANTIMATTER.NOT));
    toolHeadPickaxe.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawPickaxe, null, null, null, null, ANTIMATTER.NOT));
    toolHeadShovel.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawShovel, null, null, null, null, ANTIMATTER.NOT));
    toolHeadSpade.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawSpade, null, null, null, null, ANTIMATTER.NOT));
    toolHeadUniversalSpade.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawUniversalSpade, null, null, null, null, ANTIMATTER.NOT));
    toolHeadAxe.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawAxe, null, null, null, null, ANTIMATTER.NOT));
    toolHeadAxeDouble.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawAxeDouble, null, null, null, null, ANTIMATTER.NOT));
    toolHeadHoe.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawHoe, null, null, null, null, ANTIMATTER.NOT));
    toolHeadSense.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawSense, null, null, null, null, ANTIMATTER.NOT));
    toolHeadPlow.addListener(new OreProcessing_CraftFrom(1, null, new String[][] { { "X ", " f" } }, toolHeadRawPlow, null, null, null, null, ANTIMATTER.NOT));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dustSmall, 1, FL.Steam.make(25600), 0, 800, 0, FL.DistW.make(120), gemChipped, 1, ST.tag(0), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dustSmall, 2, FL.Steam.make(51200), 0, 1600, 0, FL.DistW.make(240), gemFlawed, 1, ST.tag(1), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dustSmall, 4, FL.Steam.make(102400), 0, 3200, 0, FL.DistW.make(480), gem, 1, ST.tag(2), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dustSmall, 8, FL.Steam.make(204800), 0, 6400, 0, FL.DistW.make(960), gemFlawless, 1, ST.tag(3), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dustSmall, 16, FL.Steam.make(409600), 0, 12800, 0, FL.DistW.make(1920), gemExquisite, 1, ST.tag(4), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dustSmall, 32, FL.Steam.make(819200), 0, 25600, 0, FL.DistW.make(3840), gemLegendary, 1, ST.tag(5), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dust, 1, FL.Steam.make(102400), 0, 3200, 0, FL.DistW.make(480), gemChipped, 4, ST.tag(0), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dust, 1, FL.Steam.make(102400), 0, 3200, 0, FL.DistW.make(480), gemFlawed, 2, ST.tag(1), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dust, 1, FL.Steam.make(102400), 0, 3200, 0, FL.DistW.make(480), gem, 1, ST.tag(2), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dust, 2, FL.Steam.make(204800), 0, 6400, 0, FL.DistW.make(960), gemFlawless, 1, ST.tag(3), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dust, 4, FL.Steam.make(409600), 0, 12800, 0, FL.DistW.make(1920), gemExquisite, 1, ST.tag(4), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Autoclave.add(new RecipeMapHandlerPrefix(dust, 8, FL.Steam.make(819200), 0, 25600, 0, FL.DistW.make(3840), gemLegendary, 1, ST.tag(5), NI, T, F, F, new And(ANTIMATTER.NOT, CRYSTALLISABLE)));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(arrowGtWood, 1, NF, 16, 16, 0, NF, toolHeadArrow, 1, NI, arrowGtWood.mat(MT.Empty, 1), F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(arrowGtPlastic, 1, NF, 16, 16, 0, NF, toolHeadArrow, 1, NI, arrowGtPlastic.mat(MT.Empty, 1), F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(bulletGtSmall, 1, NF, 16, 16, 0, NF, round, 1, NI, bulletGtSmall.mat(MT.Empty, 1), F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(bulletGtMedium, 1, NF, 16, 16, 0, NF, round, 2, NI, bulletGtMedium.mat(MT.Empty, 1), F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(bulletGtLarge, 1, NF, 16, 16, 0, NF, round, 3, NI, bulletGtLarge.mat(MT.Empty, 1), F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(pipeQuadruple, 1, NF, 16, 16, 0, NF, pipeMedium, 4, NI, NI, F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(pipeNonuple, 1, NF, 16, 16, 0, NF, pipeSmall, 9, NI, NI, F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGtRaw, 1, NF, 16, 16, 0, NF, oreRaw, 16, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGtDust, 1, NF, 16, 16, 0, NF, dust, 16, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGtGem, 1, NF, 16, 16, 0, NF, gem, 16, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGtIngot, 1, NF, 16, 16, 0, NF, ingot, 16, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGtPlate, 1, NF, 16, 16, 0, NF, plate, 16, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGtPlateGem, 1, NF, 16, 16, 0, NF, plateGem, 16, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGt64Raw, 1, NF, 16, 16, 0, NF, oreRaw, 64, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGt64Dust, 1, NF, 16, 16, 0, NF, dust, 64, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGt64Gem, 1, NF, 16, 16, 0, NF, gem, 64, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGt64Ingot, 1, NF, 16, 16, 0, NF, ingot, 64, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGt64Plate, 1, NF, 16, 16, 0, NF, plate, 64, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crateGt64PlateGem, 1, NF, 16, 16, 0, NF, plateGem, 64, NI, IL.Crate.get(1), T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(blockRaw, 1, NF, 16, 16, 0, NF, oreRaw, 9, NI, NI, T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(blockDust, 1, NF, 16, 16, 0, NF, dust, 9, NI, NI, T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(blockGem, 1, NF, 16, 16, 0, NF, gem, 9, NI, NI, T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(blockIngot, 1, NF, 16, 16, 0, NF, ingot, 9, NI, NI, T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(blockPlate, 1, NF, 16, 16, 0, NF, plate, 9, NI, NI, T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(blockPlateGem, 1, NF, 16, 16, 0, NF, plateGem, 9, NI, NI, T, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crushed, 1, NF, 16, 16, 0, NF, crushedTiny, 9, NI, NI, F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crushedPurified, 1, NF, 16, 16, 0, NF, crushedPurifiedTiny, 9, NI, NI, F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(crushedCentrifuged, 1, NF, 16, 16, 0, NF, crushedCentrifugedTiny, 9, NI, NI, F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(ingot, 1, NF, 16, 16, 0, NF, nugget, 9, NI, NI, F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(billet, 1, NF, 16, 16, 0, NF, nugget, 6, NI, NI, F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(dust, 1, NF, 16, 16, 0, NF, dustTiny, 9, NI, NI, F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(dustSmall, 1, NF, 16, 16, 0, NF, dustDiv72, 18, NI, NI, F, F, F, ANTIMATTER.NOT));
    RM.Unboxinator.add(new RecipeMapHandlerPrefix(dustTiny, 1, NF, 16, 16, 0, NF, dustDiv72, 8, NI, NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(pipeMedium, 4, NF, 16, 16, 0, NF, pipeQuadruple, 1, ST.tag(4), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(pipeSmall, 9, NF, 16, 16, 0, NF, pipeNonuple, 1, ST.tag(9), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(dustSmall, 64, NF, 16, 16, 0, NF, crateGtDust, 1, IL.Crate.get(1), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(chunkGt, 64, NF, 16, 16, 0, NF, crateGtIngot, 1, IL.Crate.get(1), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(billet, 24, NF, 16, 16, 0, NF, crateGtIngot, 1, IL.Crate.get(1), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(oreRaw, 64, NF, 16, 16, 0, NF, crateGt64Raw, 1, IL.Crate.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(dust, 64, NF, 16, 16, 0, NF, crateGt64Dust, 1, IL.Crate.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(gem, 64, NF, 16, 16, 0, NF, crateGt64Gem, 1, IL.Crate.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(ingot, 64, NF, 16, 16, 0, NF, crateGt64Ingot, 1, IL.Crate.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(plate, 64, NF, 16, 16, 0, NF, crateGt64Plate, 1, IL.Crate.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(plateGem, 64, NF, 16, 16, 0, NF, crateGt64PlateGem, 1, IL.Crate.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(dustSmall, 64, NF, 16, 16, 0, NF, crateGtDust, 1, IL.Crate_Fireproof.get(1), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(chunkGt, 64, NF, 16, 16, 0, NF, crateGtIngot, 1, IL.Crate_Fireproof.get(1), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(billet, 24, NF, 16, 16, 0, NF, crateGtIngot, 1, IL.Crate_Fireproof.get(1), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(oreRaw, 64, NF, 16, 16, 0, NF, crateGt64Raw, 1, IL.Crate_Fireproof.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(dust, 64, NF, 16, 16, 0, NF, crateGt64Dust, 1, IL.Crate_Fireproof.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(gem, 64, NF, 16, 16, 0, NF, crateGt64Gem, 1, IL.Crate_Fireproof.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(ingot, 64, NF, 16, 16, 0, NF, crateGt64Ingot, 1, IL.Crate_Fireproof.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(plate, 64, NF, 16, 16, 0, NF, crateGt64Plate, 1, IL.Crate_Fireproof.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(plateGem, 64, NF, 16, 16, 0, NF, crateGt64PlateGem, 1, IL.Crate_Fireproof.get(1), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(dustSmall, 36, NF, 16, 16, 0, NF, blockDust, 1, ST.tag(9), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(oreRaw, 9, NF, 16, 16, 0, NF, blockRaw, 1, ST.tag(9), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(dust, 9, NF, 16, 16, 0, NF, blockDust, 1, ST.tag(9), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(gem, 9, NF, 16, 16, 0, NF, blockGem, 1, ST.tag(9), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(chunkGt, 36, NF, 16, 16, 0, NF, blockIngot, 1, ST.tag(9), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(billet, 27, NF, 16, 16, 0, NF, blockIngot, 2, ST.tag(9), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(ingot, 9, NF, 16, 16, 0, NF, blockIngot, 1, ST.tag(9), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(plate, 9, NF, 16, 16, 0, NF, blockPlate, 1, ST.tag(9), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(plateGem, 9, NF, 16, 16, 0, NF, blockPlateGem, 1, ST.tag(9), NI, T, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(crushedTiny, 9, NF, 16, 16, 0, NF, crushed, 1, ST.tag(9), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(crushedPurifiedTiny, 9, NF, 16, 16, 0, NF, crushedPurified, 1, ST.tag(9), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(crushedCentrifugedTiny, 9, NF, 16, 16, 0, NF, crushedCentrifuged, 1, ST.tag(9), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(dustDiv72, 8, NF, 16, 16, 0, NF, dustTiny, 1, ST.tag(9), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(dustDiv72, 18, NF, 16, 16, 0, NF, dustSmall, 1, ST.tag(4), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(dustTiny, 9, NF, 16, 16, 0, NF, dust, 1, ST.tag(9), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(dustSmall, 4, NF, 16, 16, 0, NF, dust, 1, ST.tag(4), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(nugget, 6, NF, 16, 16, 0, NF, billet, 1, ST.tag(6), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(ingot, 2, NF, 16, 16, 0, NF, billet, 3, ST.tag(6), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(nugget, 9, NF, 16, 16, 0, NF, ingot, 1, ST.tag(9), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(chunkGt, 4, NF, 16, 16, 0, NF, ingot, 1, ST.tag(4), NI, F, F, F, ANTIMATTER.NOT));
    RM.Boxinator.add(new RecipeMapHandlerPrefix(billet, 3, NF, 16, 16, 0, NF, ingot, 2, ST.tag(3), NI, F, F, F, ANTIMATTER.NOT));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(oreRaw, gem, 1, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(oreRaw, rawOreChunk, 3, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(crushed, crushedTiny, 9, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(crushed, gemFlawed, 1, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(crushedPurified, crushedPurifiedTiny, 9, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(crushedPurified, gemFlawed, 1, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(crushedCentrifuged, crushedCentrifugedTiny, 9, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(crushedCentrifuged, gemFlawed, 1, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(ingot, nugget, 9, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(ingot, chunkGt, 4, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(billet, nugget, 6, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(dust, dustTiny, 9, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(dust, dustSmall, 4, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(dustTiny, dustDiv72, 8, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(dustSmall, dustDiv72, 18, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(blockRaw, oreRaw, 9, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(blockDust, dust, 9, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(blockDust, dustSmall, 36, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(blockIngot, ingot, 9, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(blockIngot, chunkGt, 36, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(blockGem, gem, 9, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(blockPlate, plate, 9, F));
    GameRegistry.addRecipe(new AdvancedCrafting1ToY(blockPlateGem, plateGem, 9, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(rawOreChunk, 3, oreRaw, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(crushedTiny, 9, crushed, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(crushedPurifiedTiny, 9, crushedPurified, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(crushedCentrifugedTiny, 9, crushedCentrifuged, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(ingot, 2, billet, 3, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(ingot, 3, nugget, 27, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(ingot, 4, billet, 6, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(ingot, 5, nugget, 45, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(ingot, 6, billet, 9, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(ingot, 7, nugget, 63, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(ingot, 8, billet, 12, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(ingot, 9, blockIngot, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(billet, 2, nugget, 12, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(billet, 3, ingot, 2, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(billet, 4, nugget, 24, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(billet, 5, nugget, 30, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(billet, 6, ingot, 4, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(billet, 7, nugget, 42, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(billet, 8, nugget, 48, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(billet, 9, ingot, 6, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(chunkGt, 4, ingot, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(chunkGt, 8, billet, 3, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(nugget, 6, billet, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(nugget, 9, ingot, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(dustDiv72, 8, dustTiny, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(dustTiny, 9, dust, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(dustSmall, 4, dust, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(dustSmall, 8, dust, 2, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(oreRaw, 9, blockRaw, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(dust, 9, blockDust, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(gem, 9, blockGem, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(plate, 9, blockPlate, 1, F));
    GameRegistry.addRecipe(new AdvancedCraftingXToY(plateGem, 9, blockPlateGem, 1, F));
    for (OreDictPrefix tPrefix : OreDictPrefix.VALUES) if (tPrefix != OP.oreRaw) {
        if (tPrefix.contains(STANDARD_ORE))
            GameRegistry.addRecipe(new AdvancedCrafting1ToY(tPrefix, oreRaw, 1, F));
        if (tPrefix.contains(DENSE_ORE))
            GameRegistry.addRecipe(new AdvancedCrafting1ToY(tPrefix, oreRaw, 2, F));
    }
    for (int tBig = 1; tBig <= 16; tBig++) for (int tSmall = 1; tSmall < tBig; tSmall++) if (tBig % tSmall == 0) {
        int tAmount = tBig / tSmall;
        RM.Loom.add(new RecipeMapHandlerPrefix(wireGt[tSmall - 1], tAmount, NF, 16, 0, 64, NF, wireGt[tBig - 1], 1, ST.tag(tBig), NI, F, F, F, ANTIMATTER.NOT));
        RM.Unboxinator.add(new RecipeMapHandlerPrefix(wireGt[tBig - 1], 1, NF, 16, 16, 0, NF, wireGt[tSmall - 1], tAmount, NI, NI, T, F, F, ANTIMATTER.NOT));
        if (tAmount < 10)
            GameRegistry.addRecipe(new AdvancedCraftingXToY(wireGt[tSmall - 1], tAmount, wireGt[tBig - 1], 1, F));
        GameRegistry.addRecipe(new AdvancedCrafting1ToY(wireGt[tBig - 1], wireGt[tSmall - 1], tAmount, F));
    }
    FluidStack[] tFluids = FL.array(FL.Water.make(1000), FL.SpDew.make(1000), FL.DistW.make(1000), FL.Lubricant.make(1000), FL.LubRoCant.make(1000));
    long[] tMultiplier = new long[] { 4, 4, 3, 1, 1 };
    ICondition tConditionM = new And(ANTIMATTER.NOT, COATED.NOT);
    for (int i = 0; i < 4; i++) if (tFluids[i] != null) {
        RM.Cutter.add(new RecipeMapHandlerPrefix(blockSolid, 1, FL.mul(tFluids[i], tMultiplier[i] * 7 * 16, 1000, T), 32, tMultiplier[i] * 7 * 16, 0, NF, plate, 8, NI, NI, T, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(stickLong, 1, FL.mul(tFluids[i], tMultiplier[i] * 16, 1000, T), 32, tMultiplier[i] * 16, 0, NF, stick, 2, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(stick, 1, FL.mul(tFluids[i], tMultiplier[i] * 3 * 16, 1000, T), 32, tMultiplier[i] * 3 * 16, 0, NF, bolt, 4, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(plate, 1, FL.mul(tFluids[i], tMultiplier[i] * 4 * 16, 1000, T), 32, tMultiplier[i] * 4 * 16, 0, NF, plateTiny, 8, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(plateGem, 1, FL.mul(tFluids[i], tMultiplier[i] * 4 * 16, 1000, T), 32, tMultiplier[i] * 4 * 16, 0, NF, plateGemTiny, 8, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(gemChipped, 1, FL.mul(tFluids[i], tMultiplier[i] * 16, 1000, T), 32, tMultiplier[i] * 16, 0, NF, plateGemTiny, 2, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(gemFlawed, 1, FL.mul(tFluids[i], tMultiplier[i] * 2 * 16, 1000, T), 32, tMultiplier[i] * 2 * 16, 0, NF, plateGemTiny, 4, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(gem, 1, FL.mul(tFluids[i], tMultiplier[i] * 16, 1000, T), 96, tMultiplier[i] * 16, 0, NF, plateGem, 1, NI, NI, T, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(gemFlawless, 1, FL.mul(tFluids[i], tMultiplier[i] * 16, 1000, T), 96, tMultiplier[i] * 16, 0, NF, plateGem, 2, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(gemExquisite, 1, FL.mul(tFluids[i], tMultiplier[i] * 3 * 16, 1000, T), 96, tMultiplier[i] * 3 * 16, 0, NF, plateGem, 4, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(gemLegendary, 1, FL.mul(tFluids[i], tMultiplier[i] * 7 * 16, 1000, T), 96, tMultiplier[i] * 7 * 16, 0, NF, plateGem, 8, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(bouleGt, 1, FL.mul(tFluids[i], tMultiplier[i] * 3 * 16, 1000, T), 32, tMultiplier[i] * 3 * 16, 0, NF, plateGem, 4, NI, NI, T, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(ingotDouble, 1, FL.mul(tFluids[i], tMultiplier[i] * 16, 1000, T), 32, tMultiplier[i] * 16, 0, NF, ingot, 2, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(ingotTriple, 1, FL.mul(tFluids[i], tMultiplier[i] * 2 * 16, 1000, T), 32, tMultiplier[i] * 2 * 16, 0, NF, ingot, 3, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(ingotQuadruple, 1, FL.mul(tFluids[i], tMultiplier[i] * 3 * 16, 1000, T), 32, tMultiplier[i] * 3 * 16, 0, NF, ingot, 4, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(ingotQuintuple, 1, FL.mul(tFluids[i], tMultiplier[i] * 4 * 16, 1000, T), 32, tMultiplier[i] * 4 * 16, 0, NF, ingot, 5, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(plateDouble, 1, FL.mul(tFluids[i], tMultiplier[i] * 16, 1000, T), 32, tMultiplier[i] * 16, 0, NF, plate, 2, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(plateTriple, 1, FL.mul(tFluids[i], tMultiplier[i] * 2 * 16, 1000, T), 32, tMultiplier[i] * 2 * 16, 0, NF, plate, 3, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(plateQuadruple, 1, FL.mul(tFluids[i], tMultiplier[i] * 3 * 16, 1000, T), 32, tMultiplier[i] * 3 * 16, 0, NF, plate, 4, NI, NI, F, T, F, tConditionM));
        RM.Cutter.add(new RecipeMapHandlerPrefix(plateQuintuple, 1, FL.mul(tFluids[i], tMultiplier[i] * 4 * 16, 1000, T), 32, tMultiplier[i] * 4 * 16, 0, NF, plate, 5, NI, NI, F, T, F, tConditionM));
    }
    ICondition tConditionP = new Nor(PREFIX_UNUSED, PLANT_DROP, IS_CONTAINER, DUST_BASED, ORE, ORE_PROCESSING_BASED, scrapGt, ingotHot);
    RM.Polarizer.add(new RecipeMapHandlerMaterial(MT.Nd, NF, 128, 144, NF, MT.NeodymiumMagnetic, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.WoodUntreated.mToThis) {
        RM.Bath.add(new RecipeMapHandlerMaterial(tMaterial, FL.Oil_Seed.make(100), 0, 144, NF, MT.WoodTreated, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMaterial, FL.Oil_Lin.make(100), 0, 144, NF, MT.WoodTreated, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMaterial, FL.Oil_Hemp.make(100), 0, 144, NF, MT.WoodTreated, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMaterial, FL.Oil_Nut.make(100), 0, 144, NF, MT.WoodTreated, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMaterial, FL.Oil_Olive.make(100), 0, 144, NF, MT.WoodTreated, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMaterial, FL.Oil_Sunflower.make(100), 0, 144, NF, MT.WoodTreated, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMaterial, FL.Oil_Creosote.make(100), 0, 144, NF, MT.WoodTreated, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMaterial, FL.Oil_Fish.make(1000), 0, 144, NF, MT.WoodPolished, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMaterial, FL.Oil_Whale.make(500), 0, 144, NF, MT.WoodPolished, NI, T, tConditionP));
    }
    RM.Sluice.add(new RecipeMapHandlerPrefix(crushed, 1, null, 0, MT.Petrotheum.liquid(9 * U50, T), 16, 144, 0, NF, crushedPurified, 2, crushedPurifiedTiny, 9, NI, OM.dust(MT.SluiceSand), T, F, T, ANTIMATTER.NOT).chances(10000, 5000, 10000));
    RM.Sluice.add(new RecipeMapHandlerPrefix(crushedTiny, 1, null, 0, MT.Petrotheum.liquid(U50, T), 16, 16, 0, NF, crushedPurifiedTiny, 2, crushedPurifiedTiny, 1, NI, OM.dust(MT.SluiceSand, U9), T, F, T, ANTIMATTER.NOT).chances(10000, 5000, 10000));
    if (FL.Mana_TE.exists()) {
        OreDictManager.INSTANCE.triggerVisibility("ingotThaumium");
        OreDictManager.INSTANCE.triggerVisibility("ingotArdite");
        for (OreDictMaterial tMat : ANY.Iron.mToThis) RM.Bath.add(new RecipeMapHandlerMaterial(tMat, FL.Mana_TE.make(250), 0, 144, NF, MT.Thaumium, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(MT.Ag, FL.Mana_TE.make(125), 0, 144, NF, MT.AstralSilver, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(MT.Au, FL.Mana_TE.make(125), 0, 144, NF, MT.Midasium, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(MT.Pt, FL.Mana_TE.make(125), 0, 144, NF, MT.Mithril, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(MT.Ni, FL.Mana_TE.make(50), 0, 144, NF, MT.Ardite, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(MT.MilkyQuartz, FL.Mana_TE.make(1), 0, 144, NF, MT.NetherQuartz, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(MT.NetherQuartz, FL.Mana_TE.make(1), 0, 144, NF, MT.CertusQuartz, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(MT.VoidQuartz, FL.Mana_TE.make(1), 0, 144, NF, MT.CertusQuartz, NI, T, tConditionP));
    }
    RM.Bath.add(new RecipeMapHandlerMaterial(MT.Pb, MT.Midasium.liquid(U4, T), 0, 144, NF, MT.Au, NI, T, tConditionP));
    for (OreDictMaterial tMat : ANY.Fe.mToThis) {
        RM.Freezer.add(new RecipeMapHandlerMaterial(tMat, NF, 128, 144, NF, MT.FrozenIron, NI, T, tConditionP));
        RM.Polarizer.add(new RecipeMapHandlerMaterial(tMat, NF, 16, 144, NF, MT.IronMagnetic, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMat, MT.Au.liquid(U9, T), 0, 144, NF, MT.GildedIron, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMat, FL.FieryBlood.make(L), 0, 144, NF, MT.FierySteel, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMat, FL.FieryTears.make(L), 0, 144, NF, MT.FierySteel, NI, T, tConditionP));
    }
    for (OreDictMaterial tMat : ANY.Steel.mToThis) {
        RM.Polarizer.add(new RecipeMapHandlerMaterial(tMat, NF, 16, 144, NF, MT.SteelMagnetic, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMat, MT.Zn.liquid(U9, T), 0, 144, NF, MT.SteelGalvanized, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMat, FL.FieryBlood.make(L), 0, 144, NF, MT.FierySteel, NI, T, tConditionP));
        RM.Bath.add(new RecipeMapHandlerMaterial(tMat, FL.FieryTears.make(L), 0, 144, NF, MT.FierySteel, NI, T, tConditionP));
    }
    for (OreDictMaterial tMat : ANY.Diamond.mToThis) {
        RM.Bath.add(new RecipeMapHandlerMaterial(tMat, MT.Netherite.liquid(U4, T), 0, 144, NF, MT.NetherizedDiamond, NI, T, tConditionP));
    }
    tConditionP = new And(SIMPLIFIABLE, ingotHot.NOT);
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.VoidQuartz, NF, 0, 1, NF, MT.NetherQuartz, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.NetherQuartz, NF, 0, 1, NF, MT.MilkyQuartz, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.CertusQuartz, NF, 0, 1, NF, MT.MilkyQuartz, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.ChargedCertusQuartz, NF, 0, 1, NF, MT.CertusQuartz, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.Redstonia, NF, 0, 1, NF, MT.Redstone, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.Palis, NF, 0, 1, NF, MT.Lapis, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.VoidCrystal, NF, 0, 1, NF, MT.Coal, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.AnnealedCopper, NF, 0, 1, NF, MT.Cu, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.NeodymiumMagnetic, NF, 0, 1, NF, MT.Nd, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.AstralSilver, NF, 0, 1, NF, MT.Ag, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.Midasium, NF, 0, 1, NF, MT.Au, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.Mithril, NF, 0, 1, NF, MT.Pt, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.TungstenSintered, NF, 0, 1, NF, MT.W, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.Aredrite, NF, 0, 1, NF, MT.Ardite, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.Chimerite, NF, 0, 1, NF, MT.Vinteum, NI, T, tConditionP));
    RM.Generifier.add(new RecipeMapHandlerMaterial(MT.BlueTopaz, NF, 0, 1, NF, MT.Topaz, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.WroughtIron, MT.MeteoricIron, MT.IronMagnetic, MT.Meteorite, MT.PigIron, MT.IronCompressed, MT.IronCast, MT.Thaumium, MT.Enori }) RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Fe, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.MeteoricSteel, MT.SteelMagnetic, MT.Knightmetal }) RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Steel, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.STONES.Betweenstone, MT.STONES.Pitstone, MT.STONES.Umber, MT.STONES.Diorite, MT.STONES.Redrock, MT.STONES.GraniteBlack, MT.STONES.GraniteRed, MT.STONES.Granite, MT.STONES.Limestone, MT.STONES.Marble, MT.STONES.Basalt, MT.STONES.Gabbro, MT.Concrete, MT.STONES.Eclogite, MT.STONES.Shale, MT.STONES.Andesite, MT.STONES.Dacite, MT.STONES.Chert, MT.STONES.Blueschist, MT.Epidote, MT.STONES.Migmatite, MT.STONES.Quartzite, MT.STONES.Gneiss, MT.STONES.Greenschist, MT.STONES.Greywacke, MT.STONES.Komatiite, MT.STONES.Kimberlite, MT.STONES.Siltstone, MT.STONES.Rhyolite, MT.STONES.MoonRock, MT.STONES.MoonTurf, MT.STONES.MarsRock, MT.STONES.MarsSand, MT.STONES.SpaceRock, MT.STONES.Livingrock, MT.STONES.Deadrock, MT.STONES.Holystone }) RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Stone, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.Oilshale }) RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.STONES.Shale, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Ash.mToThis) if (tMaterial != MT.Ash)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Ash, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Diamond.mToThis) if (tMaterial != MT.Diamond)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Diamond, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Sapphire.mToThis) if (tMaterial != MT.Sapphire)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Sapphire, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Emerald.mToThis) if (tMaterial != MT.Emerald)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Emerald, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Amethyst.mToThis) if (tMaterial != MT.Amethyst)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Amethyst, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Jasper.mToThis) if (tMaterial != MT.Jasper)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Jasper, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.CaF2.mToThis) if (tMaterial != MT.CaF2)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.CaF2, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Wood.mToThis) if (tMaterial != MT.Wood)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Wood, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Wax.mToThis) if (tMaterial != MT.Wax)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Wax, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Phosphorus.mToThis) if (tMaterial != MT.Phosphorus)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Phosphorus, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Glowstone.mToThis) if (tMaterial != MT.Glowstone)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Glowstone, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Clay.mToThis) if (tMaterial != MT.Clay)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Clay, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.W.mToThis) if (tMaterial != MT.W)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.W, NI, T, tConditionP));
    for (OreDictMaterial tMaterial : ANY.Si.mToThis) if (tMaterial != MT.Si)
        RM.Generifier.add(new RecipeMapHandlerMaterial(tMaterial, NF, 0, 1, NF, MT.Si, NI, T, tConditionP));
    // Since Gems and Ingots are sometimes mutually exclusive, I made sure that those are always possible Extruder Fodder.
    for (OreDictPrefix tInput : OreDictPrefix.VALUES) if (tInput.containsAny(TD.Prefix.EXTRUDER_FODDER, TD.Prefix.INGOT_BASED, TD.Prefix.GEM_BASED)) {
        addExtruderRecipe(tInput, ingot, T, IL.Shape_Extruder_Ingot.get(0));
        addExtruderRecipe(tInput, plate, T, IL.Shape_Extruder_Plate.get(0));
        addExtruderRecipe(tInput, plateCurved, T, IL.Shape_Extruder_Plate_Curved.get(0));
        addExtruderRecipe(tInput, stick, T, IL.Shape_Extruder_Rod.get(0));
        addExtruderRecipe(tInput, stickLong, T, IL.Shape_Extruder_Rod_Long.get(0));
        addExtruderRecipe(tInput, bolt, T, IL.Shape_Extruder_Bolt.get(0));
        addExtruderRecipe(tInput, ring, T, IL.Shape_Extruder_Ring.get(0));
        addExtruderRecipe(tInput, wireGt01, T, IL.Shape_Extruder_Wire.get(0));
        addExtruderRecipe(tInput, casingSmall, T, IL.Shape_Extruder_Casing.get(0));
        addExtruderRecipe(tInput, toolHeadRawShovel, T, IL.Shape_Extruder_Shovel.get(0));
        addExtruderRecipe(tInput, pipeTiny, T, IL.Shape_Extruder_Pipe_Tiny.get(0));
        addExtruderRecipe(tInput, pipeSmall, T, IL.Shape_Extruder_Pipe_Small.get(0));
        addExtruderRecipe(tInput, pipeMedium, T, IL.Shape_Extruder_Pipe_Medium.get(0));
        addExtruderRecipe(tInput, pipeLarge, T, IL.Shape_Extruder_Pipe_Large.get(0));
        addExtruderRecipe(tInput, pipeHuge, T, IL.Shape_Extruder_Pipe_Huge.get(0));
        addExtruderRecipe(tInput, toolHeadRawSword, T, IL.Shape_Extruder_Sword.get(0));
        addExtruderRecipe(tInput, toolHeadRawHoe, T, IL.Shape_Extruder_Hoe.get(0));
        addExtruderRecipe(tInput, toolHeadRawSaw, T, IL.Shape_Extruder_Saw.get(0));
        addExtruderRecipe(tInput, toolHeadRawPickaxe, T, IL.Shape_Extruder_Pickaxe.get(0));
        addExtruderRecipe(tInput, toolHeadRawAxe, T, IL.Shape_Extruder_Axe.get(0));
        addExtruderRecipe(tInput, toolHeadFile, T, IL.Shape_Extruder_File.get(0));
        addExtruderRecipe(tInput, toolHeadHammer, T, IL.Shape_Extruder_Hammer.get(0));
        addExtruderRecipe(tInput, gearGt, T, IL.Shape_Extruder_Gear.get(0));
        addExtruderRecipe(tInput, gearGtSmall, T, IL.Shape_Extruder_Gear_Small.get(0));
        addExtruderRecipe(tInput, blockSolid, T, IL.Shape_Extruder_Block.get(0));
        addExtruderRecipe(tInput, capcellcon, T, IL.Shape_Extruder_CCC.get(0));
        addExtruderRecipe(tInput, plateTiny, T, IL.Shape_Extruder_Plate_Tiny.get(0));
        addExtruderRecipe(tInput, foil, T, IL.Shape_Extruder_Foil.get(0), SMITHABLE.NOT);
        addExtruderRecipe(tInput, wireFine, T, IL.Shape_Extruder_Wire_Fine.get(0), SMITHABLE.NOT);
    }
    // Yes I know this special case is exclusively using the Simple Extruder Shapes not the normal ones. Makes it easier to code on my end, and people who wanna use Dusts will end up having to use the Simple Shapes, but only in the event that Dusts no longer count as general Extruder Fodder for whatever reason at all. ;D
    for (OreDictPrefix tInput : OreDictPrefix.VALUES) if (tInput.containsAny(TD.Prefix.EXTRUDER_FODDER, TD.Prefix.INGOT_BASED, TD.Prefix.GEM_BASED, TD.Prefix.DUST_BASED)) {
        addExtruderRecipe(tInput, ingot, F, IL.Shape_SimpleEx_Ingot.get(0));
        addExtruderRecipe(tInput, plate, F, IL.Shape_SimpleEx_Plate.get(0));
        addExtruderRecipe(tInput, plateCurved, F, IL.Shape_SimpleEx_Plate_Curved.get(0));
        addExtruderRecipe(tInput, stick, F, IL.Shape_SimpleEx_Rod.get(0));
        addExtruderRecipe(tInput, stickLong, F, IL.Shape_SimpleEx_Rod_Long.get(0));
        addExtruderRecipe(tInput, bolt, F, IL.Shape_SimpleEx_Bolt.get(0));
        addExtruderRecipe(tInput, ring, F, IL.Shape_SimpleEx_Ring.get(0));
        addExtruderRecipe(tInput, wireGt01, F, IL.Shape_SimpleEx_Wire.get(0));
        addExtruderRecipe(tInput, casingSmall, F, IL.Shape_SimpleEx_Casing.get(0));
        addExtruderRecipe(tInput, toolHeadRawShovel, F, IL.Shape_SimpleEx_Shovel.get(0));
        addExtruderRecipe(tInput, pipeTiny, F, IL.Shape_SimpleEx_Pipe_Tiny.get(0));
        addExtruderRecipe(tInput, pipeSmall, F, IL.Shape_SimpleEx_Pipe_Small.get(0));
        addExtruderRecipe(tInput, pipeMedium, F, IL.Shape_SimpleEx_Pipe_Medium.get(0));
        addExtruderRecipe(tInput, pipeLarge, F, IL.Shape_SimpleEx_Pipe_Large.get(0));
        addExtruderRecipe(tInput, pipeHuge, F, IL.Shape_SimpleEx_Pipe_Huge.get(0));
        addExtruderRecipe(tInput, toolHeadRawSword, F, IL.Shape_SimpleEx_Sword.get(0));
        addExtruderRecipe(tInput, toolHeadRawHoe, F, IL.Shape_SimpleEx_Hoe.get(0));
        addExtruderRecipe(tInput, toolHeadRawSaw, F, IL.Shape_SimpleEx_Saw.get(0));
        addExtruderRecipe(tInput, toolHeadRawPickaxe, F, IL.Shape_SimpleEx_Pickaxe.get(0));
        addExtruderRecipe(tInput, toolHeadRawAxe, F, IL.Shape_SimpleEx_Axe.get(0));
        addExtruderRecipe(tInput, toolHeadFile, F, IL.Shape_SimpleEx_File.get(0));
        addExtruderRecipe(tInput, toolHeadHammer, F, IL.Shape_SimpleEx_Hammer.get(0));
        addExtruderRecipe(tInput, gearGt, F, IL.Shape_SimpleEx_Gear.get(0));
        addExtruderRecipe(tInput, gearGtSmall, F, IL.Shape_SimpleEx_Gear_Small.get(0));
        addExtruderRecipe(tInput, blockSolid, F, IL.Shape_SimpleEx_Block.get(0));
        addExtruderRecipe(tInput, capcellcon, F, IL.Shape_SimpleEx_CCC.get(0));
        addExtruderRecipe(tInput, plateTiny, F, IL.Shape_SimpleEx_Plate_Tiny.get(0));
        addExtruderRecipe(tInput, foil, F, IL.Shape_SimpleEx_Foil.get(0), SMITHABLE.NOT);
        addExtruderRecipe(tInput, wireFine, F, IL.Shape_SimpleEx_Wire_Fine.get(0), SMITHABLE.NOT);
    }
}
Also used : OreDictMaterial(gregapi.oredict.OreDictMaterial) Or(gregapi.code.ICondition.Or) AdvancedCrafting1ToY(gregapi.recipes.AdvancedCrafting1ToY) FluidStack(net.minecraftforge.fluids.FluidStack) OreProcessing_CraftFrom(gregtech.loaders.b.Loader_OreProcessing.OreProcessing_CraftFrom) AdvancedCraftingXToY(gregapi.recipes.AdvancedCraftingXToY) Nor(gregapi.code.ICondition.Nor) OreDictPrefix(gregapi.oredict.OreDictPrefix) And(gregapi.code.ICondition.And) ICondition(gregapi.code.ICondition)

Example 2 with And

use of gregapi.code.ICondition.And in project gregtech6 by GregTech6.

the class Loader_Recipes_Handlers method addExtruderRecipe.

@SuppressWarnings({ "unchecked", "rawtypes" })
private static void addExtruderRecipe(OreDictPrefix aInput, OreDictPrefix aOutput, boolean aHot, ItemStack aShape, ICondition<OreDictMaterial> aCondition) {
    if (aInput == aOutput)
        return;
    long tInputAmount = 1, tOutputAmount = 1;
    if (aOutput.mAmount > aInput.mAmount)
        tInputAmount = UT.Code.divup(aOutput.mAmount, aInput.mAmount);
    else
        tOutputAmount = aInput.mAmount / aOutput.mAmount;
    if (tInputAmount > 64 || tOutputAmount < 1)
        return;
    if (tOutputAmount > 64)
        tOutputAmount = 64;
    if (aHot)
        RM.Extruder.add(new RecipeMapHandlerPrefixForging(aInput, tInputAmount, NF, 96, 0, 0, NF, aOutput, tOutputAmount, aShape, NI, aInput == OP.dust || aInput == OP.ingot || aInput == OP.gem, F, F, new And(aCondition, sExtruderNormal)));
    RM.Extruder.add(new RecipeMapHandlerPrefixForging(aInput, tInputAmount, NF, 16, UT.Code.units(aOutput.mAmount * tOutputAmount, U, 64, T), 0, NF, aOutput, tOutputAmount, aShape, NI, aInput == OP.dust || aInput == OP.ingot || aInput == OP.gem, F, F, new And(aCondition, sExtruderSimple)));
}
Also used : And(gregapi.code.ICondition.And)

Example 3 with And

use of gregapi.code.ICondition.And in project gregtech6 by GregTech6.

the class Loader_Tools method run.

@Override
public void run() {
    // TODO Fix Temp Hazmat Recipes!
    ArmorsGT.HAZMATS_INSECTS.add(ArmorsGT.HAZMAT_INSECTS[0] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.insect.head", "Bumblehead", "Full Set protects against any Insects", "hazard_insects", 0, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, T, "RRR", "RGR", "q l", 'R', foil.dat(MT.Rubber), 'G', ST.make(Blocks.stained_glass_pane, 1, 15 - DYE_INDEX_Black)));
    ArmorsGT.HAZMATS_INSECTS.add(ArmorsGT.HAZMAT_INSECTS[1] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.insect.chest", "Bumbleshirt", "Full Set protects against any Insects", "hazard_insects", 1, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, T, "RqR", "RRR", "RRR", 'R', foil.dat(MT.Rubber)));
    ArmorsGT.HAZMATS_INSECTS.add(ArmorsGT.HAZMAT_INSECTS[2] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.insect.legs", "Bumblepants", "Full Set protects against any Insects", "hazard_insects", 2, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, T, "RRR", "RqR", "RlR", 'R', foil.dat(MT.Rubber)));
    ArmorsGT.HAZMATS_INSECTS.add(ArmorsGT.HAZMAT_INSECTS[3] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.insect.boots", "Bumbleboots", "Full Set protects against any Insects", "hazard_insects", 3, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, T, "RlR", "RqR", 'R', foil.dat(MT.Rubber)));
    ArmorsGT.HAZMATS_FROST.add(ArmorsGT.HAZMAT_FROST[0] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.frost.head", "Frost Protection Suit Mask", "Full Set protects against Cold", "hazard_frost", 0, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "AAA", "AGA", "q l", 'A', plate.dat(MT.Asbestos), 'G', ST.make(Blocks.stained_glass_pane, 1, 15 - DYE_INDEX_Black)));
    ArmorsGT.HAZMATS_FROST.add(ArmorsGT.HAZMAT_FROST[1] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.frost.chest", "Frost Protection Suit Shirt", "Full Set protects against Cold", "hazard_frost", 1, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "AqA", "AAA", "AAA", 'A', plate.dat(MT.Asbestos)));
    ArmorsGT.HAZMATS_FROST.add(ArmorsGT.HAZMAT_FROST[2] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.frost.legs", "Frost Protection Suit Pants", "Full Set protects against Cold", "hazard_frost", 2, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "AAA", "AqA", "AlA", 'A', plate.dat(MT.Asbestos)));
    ArmorsGT.HAZMATS_FROST.add(ArmorsGT.HAZMAT_FROST[3] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.frost.boots", "Frost Protection Suit Boots", "Full Set protects against Cold", "hazard_frost", 3, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "AlA", "AqA", 'A', plate.dat(MT.Asbestos)));
    ArmorsGT.HAZMATS_HEAT.add(ArmorsGT.HAZMAT_HEAT[0] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.heat.head", "Heat Protection Suit Mask", "Full Set protects against Heat", "hazard_heat", 0, new int[] { 1, 1, 1, 1 }, 128, 8, 0, T, F, "FFF", "FGF", "x l", 'F', foil.dat(MT.Al), 'G', ST.make(Blocks.stained_glass_pane, 1, 15 - DYE_INDEX_Black)));
    ArmorsGT.HAZMATS_HEAT.add(ArmorsGT.HAZMAT_HEAT[1] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.heat.chest", "Heat Protection Suit Shirt", "Full Set protects against Heat", "hazard_heat", 1, new int[] { 1, 1, 1, 1 }, 128, 8, 0, T, F, "FxF", "FFF", "FFF", 'F', foil.dat(MT.Al)));
    ArmorsGT.HAZMATS_HEAT.add(ArmorsGT.HAZMAT_HEAT[2] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.heat.legs", "Heat Protection Suit Pants", "Full Set protects against Heat", "hazard_heat", 2, new int[] { 1, 1, 1, 1 }, 128, 8, 0, T, F, "FFF", "FxF", "FlF", 'F', foil.dat(MT.Al)));
    ArmorsGT.HAZMATS_HEAT.add(ArmorsGT.HAZMAT_HEAT[3] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.heat.boots", "Heat Protection Suit Boots", "Full Set protects against Heat", "hazard_heat", 3, new int[] { 1, 1, 1, 1 }, 128, 8, 0, T, F, "FlF", "FxF", 'F', foil.dat(MT.Al)));
    ArmorsGT.HAZMATS_RADIOACTIVE.add(ArmorsGT.HAZMAT_RADIOACTIVE[0] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.radiation.head", "Radiation Hazard Suit Mask", "Full Set protects against Radiation", "hazard_radiation", 0, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "LLL", "LGL", "x l", 'L', plate.dat(MT.Pb), 'G', Blocks.glass_pane));
    ArmorsGT.HAZMATS_RADIOACTIVE.add(ArmorsGT.HAZMAT_RADIOACTIVE[1] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.radiation.chest", "Radiation Hazard Suit Shirt", "Full Set protects against Radiation", "hazard_radiation", 1, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "LxL", "LLL", "LLL", 'L', plate.dat(MT.Pb)));
    ArmorsGT.HAZMATS_RADIOACTIVE.add(ArmorsGT.HAZMAT_RADIOACTIVE[2] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.radiation.legs", "Radiation Hazard Suit Pants", "Full Set protects against Radiation", "hazard_radiation", 2, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "LLL", "LxL", "LlL", 'L', plate.dat(MT.Pb)));
    ArmorsGT.HAZMATS_RADIOACTIVE.add(ArmorsGT.HAZMAT_RADIOACTIVE[3] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.radiation.boots", "Radiation Hazard Suit Boots", "Full Set protects against Radiation", "hazard_radiation", 3, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "LlL", "LxL", 'L', plate.dat(MT.Pb)));
    ArmorsGT.HAZMAT_BIOCHEMGAS[0] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.biochemgas.head", "Biochemical Gas Hazard Suit Mask", "Full Set protects against Chemicals and Gases", "hazard_biochemgas", 0, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "RRR", "RGR", "q l", 'R', plate.dat(MT.Rubber), 'G', Blocks.glass_pane);
    ArmorsGT.HAZMAT_BIOCHEMGAS[1] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.biochemgas.chest", "Biochemical Gas Hazard Suit Shirt", "Full Set protects against Chemicals and Gases", "hazard_biochemgas", 1, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "RqR", "RRR", "RRR", 'R', plate.dat(MT.Rubber));
    ArmorsGT.HAZMAT_BIOCHEMGAS[2] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.biochemgas.legs", "Biochemical Gas Hazard Suit Pants", "Full Set protects against Chemicals and Gases", "hazard_biochemgas", 2, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "RRR", "RqR", "RlR", 'R', plate.dat(MT.Rubber));
    ArmorsGT.HAZMAT_BIOCHEMGAS[3] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.biochemgas.boots", "Biochemical Gas Hazard Suit Boots", "Full Set protects against Chemicals and Gases", "hazard_biochemgas", 3, new int[] { 1, 1, 1, 1 }, 128, 8, 0, F, F, "RlR", "RqR", 'R', plate.dat(MT.Rubber));
    ArmorsGT.HAZMAT_UNIVERSAL[0] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.universal.head", "Universal Hazard Suit Mask", "Full Set protects against Hazards", "hazard_universal", 0, new int[] { 1, 1, 1, 1 }, 128, 8, 0, T, T, "AlB", "CqD", "ExF", 'A', ST.make(ArmorsGT.HAZMAT_BIOCHEMGAS[0], 1, 0), 'B', ST.make(ArmorsGT.HAZMAT_INSECTS[0], 1, 0), 'C', ST.make(ArmorsGT.HAZMAT_FROST[0], 1, 0), 'D', ST.make(ArmorsGT.HAZMAT_HEAT[0], 1, 0), 'E', ST.make(ArmorsGT.HAZMAT_RADIOACTIVE[0], 1, 0), 'F', ST.make(Items.chainmail_helmet, 1, 0));
    ArmorsGT.HAZMAT_UNIVERSAL[1] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.universal.chest", "Universal Hazard Suit Shirt", "Full Set protects against Hazards", "hazard_universal", 1, new int[] { 1, 1, 1, 1 }, 128, 8, 0, T, T, "AlB", "CqD", "ExF", 'A', ST.make(ArmorsGT.HAZMAT_BIOCHEMGAS[1], 1, 0), 'B', ST.make(ArmorsGT.HAZMAT_INSECTS[1], 1, 0), 'C', ST.make(ArmorsGT.HAZMAT_FROST[1], 1, 0), 'D', ST.make(ArmorsGT.HAZMAT_HEAT[1], 1, 0), 'E', ST.make(ArmorsGT.HAZMAT_RADIOACTIVE[1], 1, 0), 'F', ST.make(Items.chainmail_chestplate, 1, 0));
    ArmorsGT.HAZMAT_UNIVERSAL[2] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.universal.legs", "Universal Hazard Suit Pants", "Full Set protects against Hazards", "hazard_universal", 2, new int[] { 1, 1, 1, 1 }, 128, 8, 0, T, T, "AlB", "CqD", "ExF", 'A', ST.make(ArmorsGT.HAZMAT_BIOCHEMGAS[2], 1, 0), 'B', ST.make(ArmorsGT.HAZMAT_INSECTS[2], 1, 0), 'C', ST.make(ArmorsGT.HAZMAT_FROST[2], 1, 0), 'D', ST.make(ArmorsGT.HAZMAT_HEAT[2], 1, 0), 'E', ST.make(ArmorsGT.HAZMAT_RADIOACTIVE[2], 1, 0), 'F', ST.make(Items.chainmail_leggings, 1, 0));
    ArmorsGT.HAZMAT_UNIVERSAL[3] = new ItemArmorBase(MD.GT.mID, "gt.armor.hazmat.universal.boots", "Universal Hazard Suit Boots", "Full Set protects against Hazards", "hazard_universal", 3, new int[] { 1, 1, 1, 1 }, 128, 8, 0, T, T, "AlB", "CqD", "ExF", 'A', ST.make(ArmorsGT.HAZMAT_BIOCHEMGAS[3], 1, 0), 'B', ST.make(ArmorsGT.HAZMAT_INSECTS[3], 1, 0), 'C', ST.make(ArmorsGT.HAZMAT_FROST[3], 1, 0), 'D', ST.make(ArmorsGT.HAZMAT_HEAT[3], 1, 0), 'E', ST.make(ArmorsGT.HAZMAT_RADIOACTIVE[3], 1, 0), 'F', ST.make(Items.chainmail_boots, 1, 0));
    for (ItemArmorBase tArmor : ArmorsGT.HAZMAT_UNIVERSAL) {
        ArmorsGT.HAZMATS_GAS.add(tArmor);
        ArmorsGT.HAZMATS_BIO.add(tArmor);
        ArmorsGT.HAZMATS_CHEM.add(tArmor);
        ArmorsGT.HAZMATS_INSECTS.add(tArmor);
        ArmorsGT.HAZMATS_FROST.add(tArmor);
        ArmorsGT.HAZMATS_HEAT.add(tArmor);
        ArmorsGT.HAZMATS_RADIOACTIVE.add(tArmor);
        ArmorsGT.HAZMATS_LIGHTNING.add(tArmor);
    }
    for (ItemArmorBase tArmor : ArmorsGT.HAZMAT_BIOCHEMGAS) {
        ArmorsGT.HAZMATS_GAS.add(tArmor);
        ArmorsGT.HAZMATS_BIO.add(tArmor);
        ArmorsGT.HAZMATS_CHEM.add(tArmor);
    }
    ToolsGT.sMetaTool = new MultiItemToolWithCompat(MD.GT.mID, "gt.metatool.01");
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.SWORD, "Sword", "", new GT_Tool_Sword().setMaterialAmount(toolHeadSword.mAmount), OreDictToolNames.sword, OreDictToolNames.blade, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.TELUM, 4)), TOOL_sword);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.PICKAXE, "Pickaxe", "", new GT_Tool_Pickaxe().setMaterialAmount(toolHeadPickaxe.mAmount), OreDictToolNames.pickaxe, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.PERFODIO, 4)), TOOL_pickaxe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.SHOVEL, "Shovel", "", new GT_Tool_Shovel().setMaterialAmount(toolHeadShovel.mAmount), OreDictToolNames.shovel, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.PERFODIO, 4)), TOOL_shovel);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.SPADE, "Spade", "for Snow, Grass, Mycelium, Podzol, Mud and Clay", new GT_Tool_Spade().setMaterialAmount(toolHeadSpade.mAmount), OreDictToolNames.shovel, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.PERFODIO, 4)), TOOL_shovel);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.AXE, "Axe", "Faster on Logs. Chops down whole Trees.", new GT_Tool_Axe().setMaterialAmount(toolHeadAxe.mAmount), OreDictToolNames.axe, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.METO, 2), TC.stack(TC.ARBOR, 2)), TOOL_axe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.DOUBLE_AXE, "Double Axe", "Chops down whole Trees and has a slow Attack Rate", new GT_Tool_AxeDouble().setMaterialAmount(toolHeadAxeDouble.mAmount), OreDictToolNames.axe, TC.stack(TC.INSTRUMENTUM, 3), TC.stack(TC.METO, 2), TC.stack(TC.ARBOR, 2)), TOOL_axe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.HOE, "Hoe", "", new GT_Tool_Hoe().setMaterialAmount(toolHeadHoe.mAmount), OreDictToolNames.hoe, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.METO, 2), TC.stack(TC.MESSIS, 2)), TOOL_hoe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.SAW, "Saw", "Faster on Planks. Slower on Logs. Can harvest Ice.", new GT_Tool_Saw().setMaterialAmount(toolHeadSaw.mAmount), OreDictToolNames.saw, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.METO, 2), TC.stack(TC.ARBOR, 2)), TOOL_saw);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.HARDHAMMER, "Hammer", "Crushes Ores instead of harvesting them", new GT_Tool_HardHammer().setMaterialAmount(toolHeadHammer.mAmount), OreDictToolNames.hammer, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.ORDO, 2)), TOOL_hammer);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.SOFTHAMMER, "Soft Hammer", "Can rotate vanilla-ish things and toggle Lamps/Rails", new GT_Tool_SoftHammer().setMaterialAmount(toolHeadHammer.mAmount), OreDictToolNames.softhammer, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.LIMUS, 4)), TOOL_softhammer);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.WRENCH, "Wrench", "Hold Leftclick to dismantle Machines", new GT_Tool_Wrench().setMaterialAmount(6 * U), OreDictToolNames.wrench, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.MACHINA, 2), TC.stack(TC.ORDO, 2)), TOOL_wrench);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.FILE, "File", "Harvests Iron Bars and similar faster", new GT_Tool_File().setMaterialAmount(toolHeadFile.mAmount), OreDictToolNames.file, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.ORDO, 2)), TOOL_file);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.CROWBAR, "Crowbar", "Harvests anything that cannot be harvested otherwise", new GT_Tool_Crowbar().setMaterialAmount(3 * U2), OreDictToolNames.crowbar, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.TELUM, 2)), TOOL_crowbar);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.SCREWDRIVER, "Screwdriver", "", new GT_Tool_Screwdriver().setMaterialAmount(toolHeadScrewdriver.mAmount), OreDictToolNames.screwdriver, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.ORDO, 2)), TOOL_screwdriver);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.CLUB, "Club", "A blunt primitive weapon with a lot of Power", new GT_Tool_Club().setMaterialAmount(6 * U), TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.HUMANUS, 2), TC.stack(TC.STRONTIO, 2)), TOOL_hammer);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.WIRECUTTER, "Wire Cutter", "Harvests Cables and Wires faster", new GT_Tool_WireCutter().setMaterialAmount(4 * U), OreDictToolNames.wirecutter, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.ORDO, 2)), TOOL_cutter);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.SCOOP, "Scoop", "", new GT_Tool_Scoop().setMaterialAmount(3 * U), OreDictToolNames.scoop, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.BESTIA, 2), TC.stack(TC.PANNUS, 2)), TOOL_scoop);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.BRANCHCUTTER, "Branch Cutter", "", new GT_Tool_BranchCutter().setMaterialAmount(5 * U), OreDictToolNames.branchcutter, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.METO, 2), TC.stack(TC.HERBA, 2)), TOOL_grafter);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.UNIVERSALSPADE, "Universal Spade", "", new GT_Tool_UniversalSpade().setMaterialAmount(toolHeadUniversalSpade.mAmount), OreDictToolNames.blade, OreDictToolNames.shovel, OreDictToolNames.crowbar, OreDictToolNames.saw, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.TELUM, 1), TC.stack(TC.METO, 1), TC.stack(TC.FABRICO, 1)), TOOL_crowbar);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.KNIFE, "Knife", "", new GT_Tool_Knife().setMaterialAmount(1 * U), OreDictToolNames.blade, OreDictToolNames.knife, OreDictToolNames.hac_cuttingboard, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.TELUM, 2), TC.stack(TC.CORPUS, 2)), TOOL_knife);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.BUTCHERYKNIFE, "Butchery Knife", "Has a slow Attack Rate", new GT_Tool_ButcheryKnife().setMaterialAmount(4 * U), OreDictToolNames.blade, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.CORPUS, 4)), TOOL_knife);
    // ToolsGT.add(ToolIDs.sMetaTool.addTool(ToolIDs.SICKLE                    , "Sickle"                          , "Harvests Crops more efficiently"                     , new GT_Tool_Sickle()                                           .setMaterialAmount(3*U                                       ), OreDictToolNames.blade                                                                                                                   , TC.stack(TC.INSTRUMENTUM  , 2), TC.stack(TC.METO          , 2), TC.stack(TC.GRANUM        , 2)                                ), TOOL_sickle);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.SENSE, "Sense", "Because a Scythe doesn't make Sense", new GT_Tool_Sense().setMaterialAmount(toolHeadSense.mAmount), OreDictToolNames.blade, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.METO, 2), TC.stack(TC.HERBA, 2), TC.stack(TC.MORTUUS, 2)), TOOL_sense);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.PLOW, "Plow", "Used to get rid of Snow", new GT_Tool_Plow().setMaterialAmount(toolHeadPlow.mAmount), OreDictToolNames.plow, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.METO, 2), TC.stack(TC.GELUM, 2)), TOOL_plow);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.PLUNGER, "Plunger", "Not as good at cleaning Pipes as flaming Flowers", new GT_Tool_Plunger().setMaterialAmount(0), OreDictToolNames.plunger, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.VACUOS, 2), TC.stack(TC.ITER, 2)), TOOL_plunger);
    ToolsGT.sMetaTool.addTool(ToolsGT.ROLLING_PIN, "Rolling Pin", "", new GT_Tool_RollingPin().setMaterialAmount(2 * U), OreDictToolNames.rollingpin, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.LIMUS, 4));
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.CHISEL, "Chisel", "Be slow/careful with it on Servers because Ping!", new GT_Tool_Chisel().setMaterialAmount(toolHeadChisel.mAmount), OreDictToolNames.chisel, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.PERMUTATIO, 1), TC.stack(TC.PERDITIO, 1)), TOOL_chisel);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.FLINT_AND_TINDER, "Flint and Tinder", "", new GT_Tool_FlintAndTinder().setMaterialAmount(0), OreDictToolNames.flintandtinder, OD.craftingFirestarter, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.IGNIS, 2)), TOOL_igniter);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.MONKEY_WRENCH, "Monkey Wrench", "Hold Leftclick to dismantle Machines", new GT_Tool_MonkeyWrench().setMaterialAmount(6 * U), OreDictToolNames.monkeywrench, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.MACHINA, 2), TC.stack(TC.ORDO, 2)), TOOL_monkeywrench);
    ToolsGT.sMetaTool.addTool(ToolsGT.BENDING_CYLINDER, "Bending Cylinder", "", new GT_Tool_BendingCylinder().setMaterialAmount(6 * U), OreDictToolNames.bendingcylinder, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.METALLUM, 4));
    ToolsGT.sMetaTool.addTool(ToolsGT.BENDING_CYLINDER_SMALL, "Small Bending Cylinder", "", new GT_Tool_BendingCylinderSmall().setMaterialAmount(3 * U), OreDictToolNames.bendingcylindersmall, TC.stack(TC.INSTRUMENTUM, 1), TC.stack(TC.METALLUM, 2));
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.CONSTRUCTION_PICK, "Construction Pick", "Good for Bricks and alike, terrible for mining", new GT_Tool_PickaxeConstruction().setMaterialAmount(toolHeadConstructionPickaxe.mAmount), OreDictToolNames.pickaxe, TC.stack(TC.INSTRUMENTUM, 3), TC.stack(TC.PERFODIO, 3)), TOOL_pickaxe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.MAGNIFYING_GLASS, "Magnifying Glass", "Crafted with a Stick and a Lens", new GT_Tool_MagnifyingGlass().setMaterialAmount(lens.mAmount), OreDictToolNames.magnifyingglass, TC.stack(TC.INSTRUMENTUM, 1), TC.stack(TC.SENSUS, 2)), TOOL_magnifyingglass);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.SCISSORS, "Scissors", "Don't run around while holding them!", new GT_Tool_Scissors().setMaterialAmount(U * 2 + screw.mAmount + 2 * ring.mAmount), OreDictToolNames.scissors, OreDictToolNames.shears, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.TELUM, 2), TC.stack(TC.PANNUS, 2)), TOOL_scissors);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.PINCERS, "Pincers", "", new GT_Tool_Pincers().setMaterialAmount(U * 2 + screw.mAmount + 2 * stick.mAmount), OreDictToolNames.pincers, TC.stack(TC.INSTRUMENTUM, 4), TC.stack(TC.FABRICO, 2)), TOOL_pincers);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.GEM_PICK, "Gem tipped Pickaxe", "Half of the Durability of a full Gem Pick", new GT_Tool_PickaxeGem().setMaterialAmount(toolHeadPickaxeGem.mAmount), OreDictToolNames.pickaxe, TC.stack(TC.INSTRUMENTUM, 3), TC.stack(TC.PERFODIO, 3)), TOOL_pickaxe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.HAND_DRILL, "Hand Drill", "", new GT_Tool_HandDrill().setMaterialAmount(toolHeadArrow.mAmount + 2 * bolt.mAmount), OreDictToolNames.handdrill, TC.stack(TC.INSTRUMENTUM, 2), TC.stack(TC.PERFODIO, 1)), TOOL_drill);
    ToolsGT.sMetaTool.addTool(ToolsGT.BUILDERWAND, "Builders Wand", "", new GT_Tool_Builderwand().setMaterialAmount(toolHeadBuilderwand.mAmount), TC.stack(TC.INSTRUMENTUM, 1), TC.stack(TC.ORDO, 1), TC.stack(TC.PRAECANTIO, 1));
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.MININGDRILL_LV, "Mining Drill (LV)", "", new GT_Tool_MiningDrill_LV().setMaterialAmount(toolHeadDrill.mAmount), OreDictToolNames.miningdrill, TC.stack(TC.MACHINA, 2), TC.stack(TC.PERFODIO, 4)), TOOL_pickaxe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.MININGDRILL_MV, "Mining Drill (MV)", "", new GT_Tool_MiningDrill_MV().setMaterialAmount(toolHeadDrill.mAmount), OreDictToolNames.miningdrill, TC.stack(TC.MACHINA, 2), TC.stack(TC.PERFODIO, 4)), TOOL_pickaxe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.MININGDRILL_HV, "Mining Drill (HV)", "", new GT_Tool_MiningDrill_HV().setMaterialAmount(toolHeadDrill.mAmount), OreDictToolNames.miningdrill, TC.stack(TC.MACHINA, 2), TC.stack(TC.PERFODIO, 4)), TOOL_pickaxe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.CHAINSAW_LV, "Chainsaw (LV)", "Can also harvest Ice", new GT_Tool_Chainsaw_LV().setMaterialAmount(toolHeadChainsaw.mAmount), OreDictToolNames.saw, TC.stack(TC.MACHINA, 2), TC.stack(TC.METO, 2), TC.stack(TC.ARBOR, 2)), TOOL_saw);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.CHAINSAW_MV, "Chainsaw (MV)", "Can also harvest Ice", new GT_Tool_Chainsaw_MV().setMaterialAmount(toolHeadChainsaw.mAmount), OreDictToolNames.saw, TC.stack(TC.MACHINA, 2), TC.stack(TC.METO, 2), TC.stack(TC.ARBOR, 2)), TOOL_saw);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.CHAINSAW_HV, "Chainsaw (HV)", "Can also harvest Ice", new GT_Tool_Chainsaw_HV().setMaterialAmount(toolHeadChainsaw.mAmount), OreDictToolNames.saw, TC.stack(TC.MACHINA, 2), TC.stack(TC.METO, 2), TC.stack(TC.ARBOR, 2)), TOOL_saw);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.WRENCH_LV, "Wrench (LV)", "Sneak Rightclick to switch to Monkey Wrench", new GT_Tool_Wrench_LV(ToolsGT.MONKEY_WRENCH_LV).setMaterialAmount(toolHeadWrench.mAmount), OreDictToolNames.wrench, TC.stack(TC.MACHINA, 4), TC.stack(TC.ORDO, 2)), TOOL_wrench);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.WRENCH_MV, "Wrench (MV)", "Sneak Rightclick to switch to Monkey Wrench", new GT_Tool_Wrench_MV(ToolsGT.MONKEY_WRENCH_MV).setMaterialAmount(toolHeadWrench.mAmount), OreDictToolNames.wrench, TC.stack(TC.MACHINA, 4), TC.stack(TC.ORDO, 2)), TOOL_wrench);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.WRENCH_HV, "Wrench (HV)", "Sneak Rightclick to switch to Monkey Wrench", new GT_Tool_Wrench_HV(ToolsGT.MONKEY_WRENCH_HV).setMaterialAmount(toolHeadWrench.mAmount), OreDictToolNames.wrench, TC.stack(TC.MACHINA, 4), TC.stack(TC.ORDO, 2)), TOOL_wrench);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.JACKHAMMER_HV_Normal, "JackHammer (HV, Normal Mode)", "Breaks Rocks into pieces", new GT_Tool_JackHammer_HV_Normal(ToolsGT.JACKHAMMER_HV_No_Ores).setMaterialAmount(3 * U2), OreDictToolNames.jackhammer, TC.stack(TC.MACHINA, 2), TC.stack(TC.PERFODIO, 2), TC.stack(TC.PERDITIO, 2)), TOOL_pickaxe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.JACKHAMMER_HV_No_Ores, "JackHammer (HV, No Ores Mode)", "Doesn't break Ore Blocks, except Layer Ores", new GT_Tool_JackHammer_HV_No_Ores(ToolsGT.JACKHAMMER_HV_Normal).setMaterialAmount(3 * U2), OreDictToolNames.jackhammer, TC.stack(TC.MACHINA, 2), TC.stack(TC.PERFODIO, 2), TC.stack(TC.PERDITIO, 2)), TOOL_pickaxe);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.BUZZSAW_LV, "Buzzsaw (LV)", "Not suitable for harvesting Blocks", new GT_Tool_BuzzSaw_LV().setMaterialAmount(toolHeadBuzzSaw.mAmount), OreDictToolNames.saw, TC.stack(TC.MACHINA, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.ARBOR, 2)), TOOL_saw);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.SCREWDRIVER_LV, "Screwdriver (LV)", "", new GT_Tool_Screwdriver_LV().setMaterialAmount(toolHeadScrewdriver.mAmount), OreDictToolNames.screwdriver, TC.stack(TC.MACHINA, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.ORDO, 2)), TOOL_screwdriver);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.DRILL_LV, "Hand Drill (LV)", "", new GT_Tool_Drill_LV().setMaterialAmount(stick.mAmount), OreDictToolNames.drill, OreDictToolNames.handdrill, TC.stack(TC.MACHINA, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.PERFODIO, 1)), TOOL_drill);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.MIXER_LV, "Hand Mixer (LV)", "Doesn't consume exhaustion in the Mixing Bowls", new GT_Tool_Mixer_LV().setMaterialAmount(3 * U2), OreDictToolNames.mixer, TC.stack(TC.MACHINA, 2), TC.stack(TC.FABRICO, 2), TC.stack(TC.PERMUTATIO, 1)), TOOL_mixer);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.MONKEY_WRENCH_LV, "Monkey Wrench (LV)", "Sneak Rightclick to switch to Wrench", new GT_Tool_MonkeyWrench_LV(ToolsGT.WRENCH_LV).setMaterialAmount(toolHeadWrench.mAmount), OreDictToolNames.monkeywrench, TC.stack(TC.MACHINA, 4), TC.stack(TC.ORDO, 2)), TOOL_monkeywrench);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.MONKEY_WRENCH_MV, "Monkey Wrench (MV)", "Sneak Rightclick to switch to Wrench", new GT_Tool_MonkeyWrench_MV(ToolsGT.WRENCH_MV).setMaterialAmount(toolHeadWrench.mAmount), OreDictToolNames.monkeywrench, TC.stack(TC.MACHINA, 4), TC.stack(TC.ORDO, 2)), TOOL_monkeywrench);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.MONKEY_WRENCH_HV, "Monkey Wrench (HV)", "Sneak Rightclick to switch to Wrench", new GT_Tool_MonkeyWrench_HV(ToolsGT.WRENCH_HV).setMaterialAmount(toolHeadWrench.mAmount), OreDictToolNames.monkeywrench, TC.stack(TC.MACHINA, 4), TC.stack(TC.ORDO, 2)), TOOL_monkeywrench);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.TRIMMER_LV, "Trimmer (LV)", "", new GT_Tool_Trimmer_LV().setMaterialAmount(2 * toolHeadSword.mAmount), OreDictToolNames.branchcutter, TC.stack(TC.MACHINA, 2), TC.stack(TC.METO, 2), TC.stack(TC.HERBA, 2)), TOOL_grafter);
    ToolsGT.sMetaTool.addTool(ToolsGT.POCKET_MULTITOOL, "Pocket Multitool", "7 useful Tools in one!", new GT_Tool_Pocket_Multitool(ToolsGT.POCKET_KNIFE).setMaterialAmount(199 * U18), TC.stack(TC.INSTRUMENTUM, 6), TC.stack(TC.FABRICO, 3), TC.stack(TC.ORDO, 3));
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.POCKET_KNIFE, "Pocket Multitool (Knife)", "", new GT_Tool_Pocket_Knife(ToolsGT.POCKET_SAW).setMaterialAmount(199 * U18), OreDictToolNames.blade, OreDictToolNames.knife, OreDictToolNames.hac_cuttingboard, TC.stack(TC.INSTRUMENTUM, 6), TC.stack(TC.FABRICO, 3), TC.stack(TC.ORDO, 3)), TOOL_knife);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.POCKET_SAW, "Pocket Multitool (Saw)", "Faster on Planks. Slower on Logs. Can harvest Ice.", new GT_Tool_Pocket_Saw(ToolsGT.POCKET_FILE).setMaterialAmount(199 * U18), OreDictToolNames.saw, TC.stack(TC.INSTRUMENTUM, 6), TC.stack(TC.FABRICO, 3), TC.stack(TC.ORDO, 3)), TOOL_saw);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.POCKET_FILE, "Pocket Multitool (File)", "Harvests Iron Bars and similar faster", new GT_Tool_Pocket_File(ToolsGT.POCKET_SCREWDRIVER).setMaterialAmount(199 * U18), OreDictToolNames.file, TC.stack(TC.INSTRUMENTUM, 6), TC.stack(TC.FABRICO, 3), TC.stack(TC.ORDO, 3)), TOOL_file);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.POCKET_SCREWDRIVER, "Pocket Multitool (Screwdriver)", "", new GT_Tool_Pocket_Screwdriver(ToolsGT.POCKET_WIRECUTTER).setMaterialAmount(199 * U18), OreDictToolNames.screwdriver, TC.stack(TC.INSTRUMENTUM, 6), TC.stack(TC.FABRICO, 3), TC.stack(TC.ORDO, 3)), TOOL_screwdriver);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.POCKET_WIRECUTTER, "Pocket Multitool (Wirecutter)", "Harvests Cables and Wires faster", new GT_Tool_Pocket_Cutter(ToolsGT.POCKET_SCISSORS).setMaterialAmount(199 * U18), OreDictToolNames.wirecutter, TC.stack(TC.INSTRUMENTUM, 6), TC.stack(TC.FABRICO, 3), TC.stack(TC.ORDO, 3)), TOOL_cutter);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.POCKET_SCISSORS, "Pocket Multitool (Scissors)", "Don't run around while holding them!", new GT_Tool_Pocket_Scissors(ToolsGT.POCKET_CHISEL).setMaterialAmount(199 * U18), OreDictToolNames.scissors, OreDictToolNames.shears, TC.stack(TC.INSTRUMENTUM, 6), TC.stack(TC.FABRICO, 3), TC.stack(TC.ORDO, 3)), TOOL_scissors);
    ToolsGT.add(ToolsGT.sMetaTool.addTool(ToolsGT.POCKET_CHISEL, "Pocket Multitool (Chisel)", "Be slow/careful with it on Servers because Ping!", new GT_Tool_Pocket_Chisel(ToolsGT.POCKET_MULTITOOL).setMaterialAmount(199 * U18), OreDictToolNames.chisel, TC.stack(TC.INSTRUMENTUM, 6), TC.stack(TC.FABRICO, 3), TC.stack(TC.ORDO, 3)), TOOL_chisel);
    ItemsGT.addNEIRedirects(ST.make(ToolsGT.sMetaTool, 1, ToolsGT.JACKHAMMER_HV_Normal), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.JACKHAMMER_HV_Normal + 1), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.JACKHAMMER_HV_No_Ores), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.JACKHAMMER_HV_No_Ores + 1));
    for (int i = 0; i < 8; i++) ItemsGT.addNEIRedirect(ST.make(ToolsGT.sMetaTool, 1, ToolsGT.POCKET_MULTITOOL + i * 2), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.POCKET_MULTITOOL + ((i + 1) % 8) * 2), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.POCKET_MULTITOOL + ((i + 2) % 8) * 2), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.POCKET_MULTITOOL + ((i + 3) % 8) * 2), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.POCKET_MULTITOOL + ((i + 4) % 8) * 2), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.POCKET_MULTITOOL + ((i + 5) % 8) * 2), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.POCKET_MULTITOOL + ((i + 6) % 8) * 2), ST.make(ToolsGT.sMetaTool, 1, ToolsGT.POCKET_MULTITOOL + ((i + 7) % 8) * 2));
    // TODO Guns: ToolsGT.sMetaTool.addTool(ToolsGT.PISTOL, "Pistol", "Single Shot, Moderate Damage", new GT_Tool_Gun().setMaterialAmount(U*3), TC.stack(TC.TELUM, 6), TC.stack(TC.FABRICO, 3), TC.stack(TC.IGNIS, 3));
    GAPI.mBeforePostInit.add(new Runnable() {

        @SuppressWarnings({ "rawtypes", "unchecked" })
        @Override
        public void run() {
            CR.shapeless(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, 1, MT.Steel, MT.Flint), CR.DEF, new Object[] { ST.make(Items.flint_and_steel, 1, 0) });
            CR.shaped(ST.make(Items.flint_and_steel, 1, 0), CR.DEL_OTHER_NATIVE_RECIPES | CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', nugget.dat(MT.Steel));
            for (OreDictMaterial tMaterial : ANY.Iron.mToThis) if (tMaterial != MT.Steel) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', nugget.dat(tMaterial));
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', rockGt.dat(tMaterial));
            }
            for (OreDictMaterial tMaterial : ANY.Jasper.mToThis) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', gemChipped.dat(tMaterial));
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', rockGt.dat(tMaterial));
            }
            for (OreDictMaterial tMaterial : ANY.TigerEye.mToThis) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', gemChipped.dat(tMaterial));
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', rockGt.dat(tMaterial));
            }
            for (OreDictMaterial tMaterial : ANY.Aventurine.mToThis) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', gemChipped.dat(tMaterial));
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', rockGt.dat(tMaterial));
            }
            for (OreDictMaterial tMaterial : ANY.Quartz.mToThis) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', gem.dat(tMaterial));
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', rockGt.dat(tMaterial));
            }
            for (OreDictMaterial tMaterial : ANY.Phosphorus.mToThis) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', gem.dat(tMaterial));
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', rockGt.dat(tMaterial));
            }
            for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.Phosphorite, MT.PO4, MT.P, MT.Apatite }) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', gem.dat(tMaterial));
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', rockGt.dat(tMaterial));
            }
            for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.Au, MT.As, MT.Co, MT.Co_60, MT.Ni, MT.HSLA, MT.Thaumium, MT.DamascusSteel, MT.Netherite, MT.NetherizedDiamond }) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', nugget.dat(tMaterial));
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', rockGt.dat(tMaterial));
            }
            for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.STONES.Chert }) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', stone.dat(tMaterial));
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', rockGt.dat(tMaterial));
            }
            for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.Pyrite, MT.Fe2O3, MT.OREMATS.Cobaltite, MT.OREMATS.Garnierite, MT.OREMATS.Pentlandite, MT.OREMATS.Chromite, MT.OREMATS.Ilmenite, MT.OREMATS.BrownLimonite, MT.OREMATS.YellowLimonite, MT.OREMATS.Magnetite, MT.OREMATS.BasalticMineralSand, MT.OREMATS.GraniticMineralSand, MT.OREMATS.Arsenopyrite, MT.OREMATS.Chalcopyrite }) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.FLINT_AND_TINDER, tMaterial, MT.Flint), CR.DEF_MIR, "T ", " F", 'F', OD.itemFlint, 'T', rockGt.dat(tMaterial));
            }
            for (OreDictMaterial tMaterial : new OreDictMaterial[] { MT.Plastic, MT.Syrmorite, MT.Au, MT.Al, MT.Cr, MT.StainlessSteel, MT.Netherite, MT.NetherizedDiamond }) CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.ROLLING_PIN, tMaterial, tMaterial), CR.DEF_MIR, "  S", " I ", "S f", 'I', ingot.dat(tMaterial), 'S', stick.dat(tMaterial));
            for (Object[] tHandle : new Object[][] { { ANY.Wood, OD.stickAnyWood }, { MT.PetrifiedWood, stick.dat(MT.PetrifiedWood) }, { MT.Bamboo, OD.bamboo }, { MT.Bone, Items.bone }, { MT.Plastic, stick.dat(MT.Plastic) } }) {
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.KNIFE, MT.Flint, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "SX", 'S', tHandle[1], 'X', OD.itemFlint);
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.AXE, MT.Flint, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "XX", "XS", 'S', tHandle[1], 'X', OD.itemFlint);
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.SHOVEL, MT.Flint, (OreDictMaterial) tHandle[0]), CR.DEF, "X", "S", 'S', tHandle[1], 'X', OD.itemFlint);
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.PICKAXE, MT.Flint, (OreDictMaterial) tHandle[0]), CR.DEF, "XXX", " S ", 'S', tHandle[1], 'X', OD.itemFlint);
                CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.CLUB, MT.Bone, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "  X", " X ", "S  ", 'S', tHandle[1], 'X', Items.bone);
                for (OreDictMaterial tRock : new OreDictMaterial[] { MT.Obsidian }) {
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.KNIFE, tRock, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "SX", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.AXE, tRock, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "XX", "XS", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.SHOVEL, tRock, (OreDictMaterial) tHandle[0]), CR.DEF, "X", "S", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.PICKAXE, tRock, (OreDictMaterial) tHandle[0]), CR.DEF, "XXX", " S ", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                }
                for (OreDictMaterial tRock : new OreDictMaterial[] { MT.PetrifiedWood }) {
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.AXE, tRock, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "XX", "XS", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.HOE, tRock, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "XX", " S", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.SHOVEL, tRock, (OreDictMaterial) tHandle[0]), CR.DEF, "X", "S", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.PICKAXE, tRock, (OreDictMaterial) tHandle[0]), CR.DEF, "XXX", " S ", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.CLUB, tRock, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, " XX", "XXX", "SX ", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.HARDHAMMER, tRock, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "XX ", "XXS", "XX ", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                }
                for (OreDictMaterial tRock : ANY.Stone.mToThis) {
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.AXE, tRock, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "XX", "XS", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.HOE, tRock, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "XX", " S", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.SHOVEL, tRock, (OreDictMaterial) tHandle[0]), CR.DEF, "X", "S", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.PICKAXE, tRock, (OreDictMaterial) tHandle[0]), CR.DEF, "XXX", " S ", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.CLUB, tRock, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, " XX", "XXX", "SX ", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                    CR.shaped(ToolsGT.sMetaTool.getToolWithStats(ToolsGT.HARDHAMMER, tRock, (OreDictMaterial) tHandle[0]), CR.DEF_MIR, "XX ", "XXS", "XX ", 'S', tHandle[1], 'X', rockGt.dat(tRock));
                }
            // End of Tool Handle Loop
            }
            final String tCategory = ConfigCategories.Recipes.gregtechtools + ".";
            toolHeadBuilderwand.addListener(new OreProcessing_Tool(BUILDERWAND, tCategory + "Builderwand", T, F, 0, 0, null, null, new String[][] { { " P ", "f h", " s " }, { " C ", "f h", " s " }, { " G ", "f h", " s " } }, null, null, null, null, null, new And(ANTIMATTER.NOT)));
            toolHeadConstructionPickaxe.addListener(new OreProcessing_Tool(CONSTRUCTION_PICK, tCategory + "ConstructionPickaxe", T, F, 0, 0, null, null, new String[][] { { "PIP", "f h" }, { "CGC", "f  " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT)));
            toolHeadPickaxe.addListener(new OreProcessing_Tool(PICKAXE, tCategory + "Pickaxe", T, F, 0, 0, null, null, new String[][] { { "PII", "f h" }, { "CGG", "f  " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT)));
            toolHeadShovel.addListener(new OreProcessing_Tool(SHOVEL, tCategory + "Shovel", T, F, 0, 0, null, null, new String[][] { { "fPh" }, { "fC " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT)));
            toolHeadSpade.addListener(new OreProcessing_Tool(SPADE, tCategory + "Spade", T, F, 0, 0, null, null, new String[][] { { "fPh", " s " }, { "fC ", " s " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT)));
            toolHeadUniversalSpade.addListener(new OreProcessing_Tool(UNIVERSALSPADE, tCategory + "UniversalSpade", F, F, 0, 0, null, new String[][] { { "AT", "Sd" } }, null, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, typemin(2))));
            toolHeadHoe.addListener(new OreProcessing_Tool(HOE, tCategory + "Hoe", T, F, 0, 0, null, null, new String[][] { { "PIh", "f  " }, { "CG ", "f  " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT)));
            toolHeadAxe.addListener(new OreProcessing_Tool(AXE, tCategory + "Axe", T, F, 0, 0, null, null, new String[][] { { "PIh", "P  ", "f  " }, { "CG ", "C  ", "f  " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT)));
            toolHeadAxeDouble.addListener(new OreProcessing_Tool(DOUBLE_AXE, tCategory + "DoubleAxe", T, F, 0, 0, null, null, new String[][] { { "PIP", "P P", "f h" }, { "CGC", "C C", "f  " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT, typemin(2))));
            toolHeadSense.addListener(new OreProcessing_Tool(SENSE, tCategory + "Sense", T, F, 0, 0, null, null, new String[][] { { "PPI", "f h" }, { "CCG", "f  " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT, typemin(2))));
            toolHeadPlow.addListener(new OreProcessing_Tool(PLOW, tCategory + "Plow", T, F, 0, 0, null, null, new String[][] { { "PPP", "PPP", "f h" }, { "CCC", "CCC", "f  " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT, typemin(2))));
            toolHeadFile.addListener(new OreProcessing_Tool(FILE, tCategory + "File", T, F, 0, 0, null, null, new String[][] { { " P ", " Pk" } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT, typemin(2), qualmax(2))));
            toolHeadChisel.addListener(new OreProcessing_Tool(CHISEL, tCategory + "Chisel", T, F, 0, 0, null, null, new String[][] { { "hPf", " S " }, { "Cf", "S " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT, typemin(2))));
            toolHeadScrewdriver.addListener(new OreProcessing_Tool(SCREWDRIVER, tCategory + "Screwdriver", T, F, 0, 0, null, null, new String[][] { { "hS", "Sf" } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT, typemin(2))));
            toolHeadSaw.addListener(new OreProcessing_Tool(SAW, tCategory + "Saw", T, F, 0, 0, null, null, new String[][] { { "PP", "fh" }, { "CC", "f " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT, typemin(2))));
            toolHeadChainsaw.addListener(new OreProcessing_Tool(CHAINSAW_LV, tCategory + "Chainsaw", F, F, 0, 0, null, null, new String[][] { { "WVW", "XhX", "WVW" } }, chain, null, null, ring.dat(ANY.Steel), plate.dat(ANY.Steel), new And(ANTIMATTER.NOT, MT.Wood.NOT, typemin(2))));
            toolHeadDrill.addListener(new OreProcessing_Tool(MININGDRILL_LV, tCategory + "MiningDrill", F, F, 0, 0, null, null, new String[][] { { "PVP", "PVP", "VhV" }, { "CVC", "CVC", "VhV" } }, null, null, null, plateCurved.dat(ANY.Steel), null, new And(ANTIMATTER.NOT, MT.Wood.NOT, typemin(2))));
            toolHeadWrench.addListener(new OreProcessing_Tool(WRENCH, tCategory + "Wrench", F, F, 0, 0, null, new String[][] { { "PhP", " P ", " P " }, { "CfC", " C ", " C " } }, new String[][] { { "hPW", "PVP", "WPd" }, { "hCW", "CVC", "WCd" } }, null, null, null, ring.dat(ANY.Steel), screw.dat(ANY.Steel), new And(ANTIMATTER.NOT, MT.Wood.NOT, typemin(2), qualmin(1))));
            toolHeadWrench.addListener(new OreProcessing_Tool(MONKEY_WRENCH, tCategory + "MonkeyWrench", F, F, 0, 0, null, new String[][] { { "PPd", "hPT", " P " }, { "CCd", "fCT", " C " } }, null, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, typemin(2), qualmin(1))));
            toolHeadWrench.addListener(new OreProcessing_Tool(BENDING_CYLINDER, tCategory + "BendingCylinder", F, F, 0, 0, null, new String[][] { { "sfh", "III", "III" } }, null, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, typemin(2))));
            toolHeadWrench.addListener(new OreProcessing_Tool(BENDING_CYLINDER_SMALL, tCategory + "BendingCylinderSmall", F, F, 0, 0, null, new String[][] { { "sfh", "III", "   " } }, null, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, typemin(2))));
            toolHeadWrench.addListener(new OreProcessing_Tool(CROWBAR, tCategory + "Crowbar", F, F, 0, 0, null, new String[][] { { "hVS", "VSV", "SVf" } }, null, null, null, null, DYE_OREDICTS[DYE_INDEX_Blue], null, new And(ANTIMATTER.NOT, MT.Wood.NOT)));
            toolHeadWrench.addListener(new OreProcessing_Tool(PLUNGER, tCategory + "Plunger", F, F, 0, 0, null, new String[][] { { "xVV", " SV", "S f" } }, null, null, null, null, plate.dat(MT.Rubber), null, new And(ANTIMATTER.NOT, MT.Wood.NOT)));
            toolHeadWrench.addListener(new OreProcessing_Tool(PINCERS, tCategory + "Pincers", F, F, 0, 0, null, new String[][] { { "XhX", " T ", "SdS" } }, null, plateCurved, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, typemin(2))));
            toolHeadPickaxe.addListener(new OreProcessing_Tool(SCOOP, tCategory + "Scoop", F, F, 0, 0, null, new String[][] { { "SVS", "SSS", "xSh" } }, null, null, null, null, Blocks.wool, null, new And(ANTIMATTER.NOT, MT.Wood.NOT)));
            toolHeadSword.addListener(new OreProcessing_Tool(SWORD, tCategory + "Sword", T, F, 0, 0, null, null, new String[][] { { " P ", "fPh" }, { " C ", "fC " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT)));
            toolHeadSword.addListener(new OreProcessing_Tool(KNIFE, tCategory + "Knife", F, F, 0, 0, null, new String[][] { { "fP", "hH" }, { "fC", "hH" } }, null, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT)));
            toolHeadSword.addListener(new OreProcessing_Tool(BUTCHERYKNIFE, tCategory + "ButcheryKnife", F, F, 0, 0, null, new String[][] { { "fPP", "hPP", "  H" }, { "fCC", " CC", "  H" } }, null, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, BOUNCY.NOT, STRETCHY.NOT, typemin(2))));
            toolHeadSword.addListener(new OreProcessing_Tool(WIRECUTTER, tCategory + "WireCutter", F, F, 0, 0, null, new String[][] { { "PfP", "hPd", "STS" }, { "CfC", "hCd", "STS" } }, null, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, BOUNCY.NOT, STRETCHY.NOT, typemin(2))));
            toolHeadSword.addListener(new OreProcessing_Tool(BRANCHCUTTER, tCategory + "BranchCutter", F, F, 0, 0, null, new String[][] { { "PfP", "PdP", "STS" }, { "CfC", "CdC", "STS" } }, null, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, BOUNCY.NOT, STRETCHY.NOT, typemin(2))));
            toolHeadSword.addListener(new OreProcessing_Tool(SCISSORS, tCategory + "Scissors", F, F, 0, 0, null, new String[][] { { "PfP", " T ", "OdO" }, { "CfC", " T ", "OdO" } }, null, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, BOUNCY.NOT, STRETCHY.NOT, typemin(2))));
            toolHeadHammer.addListener(new OreProcessing_Tool(HARDHAMMER, tCategory + "HardHammer", T, F, 0, 0, null, null, new String[][] { { "II ", "IIh", "II " }, { "GG ", "GGf", "GG " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT, new Nor(WOOD, BOUNCY, STRETCHY))));
            toolHeadHammer.addListener(new OreProcessing_Tool(SOFTHAMMER, tCategory + "SoftHammer", T, F, 0, 0, null, null, new String[][] { { "II ", "IIr", "II " }, { "GG ", "GGr", "GG " } }, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, COATED.NOT, new Or(WOOD, BOUNCY, STRETCHY))));
            toolHeadHammer.addListener(new OreProcessing_Tool(CLUB, tCategory + "Club", T, F, 0, 0, null, new String[][] { { " II", "III", "HI " }, { " GG", "GGG", "HG " }, { " RR", "RRR", "HR " } }, null, null, null, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT)));
            toolHeadArrow.addListener(new OreProcessing_Tool(HAND_DRILL, tCategory + "HandDrill", T, F, 0, 0, null, new String[][] { { "  X", "HYH", "YH " } }, null, toolHeadArrow, bolt, null, null, null, new And(ANTIMATTER.NOT, MT.Wood.NOT, WOOD.NOT, BOUNCY.NOT, STRETCHY.NOT, typemin(2), qualmin(2))));
            GameRegistry.addRecipe(new AdvancedCraftingTool(MAGNIFYING_GLASS, lens, typemin(1), MT.Glass));
            GameRegistry.addRecipe(new AdvancedCraftingTool(HARDHAMMER, toolHeadHammer, new Nor(WOOD, BOUNCY, STRETCHY)));
            GameRegistry.addRecipe(new AdvancedCraftingTool(SOFTHAMMER, toolHeadHammer, new Or(WOOD, BOUNCY, STRETCHY), MT.Rubber));
            GameRegistry.addRecipe(new AdvancedCraftingTool(SWORD, toolHeadSword));
            // Suggests using Gems for those Wands since you usually only have one workable Gem per Type.
            GameRegistry.addRecipe(new AdvancedCraftingTool(BUILDERWAND, toolHeadBuilderwand, MT.YellowSapphire));
            GameRegistry.addRecipe(new AdvancedCraftingTool(CONSTRUCTION_PICK, toolHeadConstructionPickaxe));
            // Amber, to show the Silk Touch usage first.
            GameRegistry.addRecipe(new AdvancedCraftingTool(GEM_PICK, toolHeadPickaxeGem, MT.Amber));
            // Suggests Bronze for early Tools.
            GameRegistry.addRecipe(new AdvancedCraftingTool(PICKAXE, toolHeadPickaxe, MT.Bronze));
            // Suggests Bronze for early Tools.
            GameRegistry.addRecipe(new AdvancedCraftingTool(SHOVEL, toolHeadShovel, MT.Bronze));
            GameRegistry.addRecipe(new AdvancedCraftingTool(SPADE, toolHeadSpade));
            // Suggests Bronze for early Tools.
            GameRegistry.addRecipe(new AdvancedCraftingTool(AXE, toolHeadAxe, MT.Bronze));
            GameRegistry.addRecipe(new AdvancedCraftingTool(DOUBLE_AXE, toolHeadAxeDouble));
            // Suggests Wood for Hoes. Surely no particular reason to chose Birch there.
            GameRegistry.addRecipe(new AdvancedCraftingTool(HOE, toolHeadHoe, MT.WOODS.Birch));
            GameRegistry.addRecipe(new AdvancedCraftingTool(SENSE, toolHeadSense));
            // Suggests Wood for Plows.
            GameRegistry.addRecipe(new AdvancedCraftingTool(PLOW, toolHeadPlow, MT.WOODS.Spruce));
            // Lead, to make it easier to see for Beginners.
            GameRegistry.addRecipe(new AdvancedCraftingTool(FILE, toolHeadFile, MT.Pb));
            // Lead, to make it easier to see for Beginners.
            GameRegistry.addRecipe(new AdvancedCraftingTool(CHISEL, toolHeadChisel, MT.Pb));
            GameRegistry.addRecipe(new AdvancedCraftingTool(SCREWDRIVER, toolHeadScrewdriver));
            GameRegistry.addRecipe(new AdvancedCraftingTool(SAW, toolHeadSaw));
            ICondition tCondition = new And(ANTIMATTER.NOT, WOOD.NOT, BOUNCY.NOT, STRETCHY.NOT, typemin(3), qualmin(1));
            toolHeadScrewdriver.addListener(new OreProcessing_Tool(POCKET_MULTITOOL, tCategory + "PocketMultitool", F, F, 0, 0, MT.Blue, new String[][] { { "AXO", "ZPV", "OWY" } }, null, toolHeadSaw, toolHeadChisel, toolHeadFile, toolHeadSword, toolHeadSword, tCondition));
            for (ItemStack tBattery : OreDictManager.getOres("gt:re-battery1", F)) {
                toolHeadDrill.addListener(new OreProcessing_Tool(MIXER_LV, tCategory + "MixerLV", F, T, -1, V[1], MT.Orange, new String[][] { { "SSY", "SXW", "hVZ" } }, null, plateCurved.dat(MT.DATA.Electric_T[1]), ring.dat(MT.DATA.Electric_T[1]), plate.dat(MT.DATA.Electric_T[1]), tBattery, IL.MOTORS[1], tCondition));
                toolHeadDrill.addListener(new OreProcessing_Tool(DRILL_LV, tCategory + "DrillLV", F, T, -1, V[1], MT.Orange, new String[][] { { "fSY", "TXW", "dVZ" } }, null, plateCurved.dat(MT.DATA.Electric_T[1]), ring.dat(MT.DATA.Electric_T[1]), plate.dat(MT.DATA.Electric_T[1]), tBattery, IL.MOTORS[1], tCondition));
                toolHeadScrewdriver.addListener(new OreProcessing_Tool(SCREWDRIVER_LV, tCategory + "ScrewdriverLV", F, T, -1, V[1], MT.Orange, new String[][] { { "XdA", "TWY", "VYX" } }, null, plateCurved.dat(MT.DATA.Electric_T[1]), ring.dat(MT.DATA.Electric_T[1]), null, tBattery, IL.MOTORS[1], tCondition));
                toolHeadBuzzSaw.addListener(new OreProcessing_Tool(BUZZSAW_LV, tCategory + "BuzzSawLV", F, T, -1, V[1], MT.Orange, new String[][] { { "YXV", "TWX", "AdY" } }, null, plateCurved.dat(MT.DATA.Electric_T[1]), plate.dat(MT.DATA.Electric_T[1]), null, tBattery, IL.MOTORS[1], tCondition));
                toolHeadSword.addListener(new OreProcessing_Tool(TRIMMER_LV, tCategory + "TrimmerLV", F, T, -1, V[1], MT.Orange, new String[][] { { "XAT", "ZYA", "VWd" } }, null, plateCurved.dat(MT.DATA.Electric_T[1]), ring.dat(MT.DATA.Electric_T[1]), stickLong.dat(MT.DATA.Electric_T[1]), tBattery, IL.PISTONS[1], tCondition));
                toolHeadWrench.addListener(new OreProcessing_Tool(WRENCH_LV, tCategory + "WrenchLV", F, T, -1, V[1], MT.Orange, new String[][] { { "dAT", "XWX", "XVX" } }, null, plateCurved.dat(MT.DATA.Electric_T[1]), null, null, tBattery, IL.MOTORS[1], tCondition));
                toolHeadDrill.addListener(new OreProcessing_Tool(MININGDRILL_LV, tCategory + "MiningDrillLV", F, T, -1, V[1], MT.Orange, new String[][] { { "dAT", "XWX", "XVX" } }, null, plateCurved.dat(MT.DATA.Electric_T[1]), null, null, tBattery, IL.MOTORS[1], tCondition));
                toolHeadChainsaw.addListener(new OreProcessing_Tool(CHAINSAW_LV, tCategory + "ChainsawLV", F, T, -1, V[1], MT.Orange, new String[][] { { "dAT", "XWX", "XVX" } }, null, plateCurved.dat(MT.DATA.Electric_T[1]), null, null, tBattery, IL.MOTORS[1], tCondition));
            }
            for (ItemStack tBattery : OreDictManager.getOres("gt:re-battery2", F)) {
                toolHeadWrench.addListener(new OreProcessing_Tool(WRENCH_MV, tCategory + "WrenchMV", F, T, -1, V[2], MT.Red, new String[][] { { "dAT", "XWX", "XVX" } }, null, plateCurved.dat(MT.DATA.Electric_T[2]), null, null, tBattery, IL.MOTORS[2], tCondition));
                toolHeadDrill.addListener(new OreProcessing_Tool(MININGDRILL_MV, tCategory + "MiningDrillMV", F, T, -1, V[2], MT.Red, new String[][] { { "dAT", "XWX", "XVX" } }, null, plateCurved.dat(MT.DATA.Electric_T[2]), null, null, tBattery, IL.MOTORS[2], tCondition));
                toolHeadChainsaw.addListener(new OreProcessing_Tool(CHAINSAW_MV, tCategory + "ChainsawMV", F, T, -1, V[2], MT.Red, new String[][] { { "dAT", "XWX", "XVX" } }, null, plateCurved.dat(MT.DATA.Electric_T[2]), null, null, tBattery, IL.MOTORS[2], tCondition));
            }
            for (ItemStack tBattery : OreDictManager.getOres("gt:re-battery3", F)) {
                toolHeadWrench.addListener(new OreProcessing_Tool(WRENCH_HV, tCategory + "WrenchHV", F, T, -1, V[3], MT.Blue, new String[][] { { "dAT", "XWX", "XVX" } }, null, plateCurved.dat(MT.DATA.Electric_T[3]), null, null, tBattery, IL.MOTORS[3], tCondition));
                toolHeadDrill.addListener(new OreProcessing_Tool(MININGDRILL_HV, tCategory + "MiningDrillHV", F, T, -1, V[3], MT.Blue, new String[][] { { "dAT", "XWX", "XVX" } }, null, plateCurved.dat(MT.DATA.Electric_T[3]), null, null, tBattery, IL.MOTORS[3], tCondition));
                toolHeadChainsaw.addListener(new OreProcessing_Tool(CHAINSAW_HV, tCategory + "ChainsawHV", F, T, -1, V[3], MT.Blue, new String[][] { { "dAT", "XWX", "XVX" } }, null, plateCurved.dat(MT.DATA.Electric_T[3]), null, null, tBattery, IL.MOTORS[3], tCondition));
                toolHeadDrill.addListener(new OreProcessing_Tool(JACKHAMMER_HV_Normal, tCategory + "JackhammerHV", F, T, -1, V[3], MT.Blue, new String[][] { { "SVS", "XWX", "YSY" } }, null, plateCurved.dat(MT.DATA.Electric_T[3]), spring.dat(MT.DATA.Electric_T[3]), null, tBattery, IL.PISTONS[3], tCondition));
            }
        }
    });
}
Also used : Or(gregapi.code.ICondition.Or) GT_Tool_Pocket_Screwdriver(gregtech.items.tools.pocket.GT_Tool_Pocket_Screwdriver) GT_Tool_Pocket_Knife(gregtech.items.tools.pocket.GT_Tool_Pocket_Knife) GT_Tool_Pocket_Scissors(gregtech.items.tools.pocket.GT_Tool_Pocket_Scissors) GT_Tool_Pocket_File(gregtech.items.tools.pocket.GT_Tool_Pocket_File) GT_Tool_RollingPin(gregtech.items.tools.crafting.GT_Tool_RollingPin) GT_Tool_BendingCylinderSmall(gregtech.items.tools.crafting.GT_Tool_BendingCylinderSmall) GT_Tool_Pocket_Saw(gregtech.items.tools.pocket.GT_Tool_Pocket_Saw) MultiItemToolWithCompat(gregapi.item.multiitem.MultiItemToolWithCompat) Nor(gregapi.code.ICondition.Nor) And(gregapi.code.ICondition.And) AdvancedCraftingTool(gregapi.recipes.AdvancedCraftingTool) ItemStack(net.minecraft.item.ItemStack) GT_Tool_Pocket_Cutter(gregtech.items.tools.pocket.GT_Tool_Pocket_Cutter) GT_Tool_Pocket_Multitool(gregtech.items.tools.pocket.GT_Tool_Pocket_Multitool) GT_Tool_File(gregtech.items.tools.crafting.GT_Tool_File) ICondition(gregapi.code.ICondition) OreDictMaterial(gregapi.oredict.OreDictMaterial) ItemArmorBase(gregapi.item.ItemArmorBase) GT_Tool_BendingCylinder(gregtech.items.tools.crafting.GT_Tool_BendingCylinder) GT_Tool_Pocket_Chisel(gregtech.items.tools.pocket.GT_Tool_Pocket_Chisel)

Example 4 with And

use of gregapi.code.ICondition.And in project gregtech6 by GregTech6.

the class Loader_OreProcessing method run.

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

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

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

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

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

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

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

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

Aggregations

And (gregapi.code.ICondition.And)4 ICondition (gregapi.code.ICondition)3 Nor (gregapi.code.ICondition.Nor)2 Or (gregapi.code.ICondition.Or)2 OreDictMaterial (gregapi.oredict.OreDictMaterial)2 OreDictPrefix (gregapi.oredict.OreDictPrefix)2 BlockBase (gregapi.block.BlockBase)1 BlockStones (gregapi.block.metatype.BlockStones)1 CoverTextureMulti (gregapi.cover.covers.CoverTextureMulti)1 CoverTextureSimple (gregapi.cover.covers.CoverTextureSimple)1 ItemArmorBase (gregapi.item.ItemArmorBase)1 MultiItemToolWithCompat (gregapi.item.multiitem.MultiItemToolWithCompat)1 IOreDictListenerEvent (gregapi.oredict.event.IOreDictListenerEvent)1 OreDictListenerEvent_Names (gregapi.oredict.event.OreDictListenerEvent_Names)1 AdvancedCrafting1ToY (gregapi.recipes.AdvancedCrafting1ToY)1 AdvancedCraftingTool (gregapi.recipes.AdvancedCraftingTool)1 AdvancedCraftingXToY (gregapi.recipes.AdvancedCraftingXToY)1 ITexture (gregapi.render.ITexture)1 GT_Tool_BendingCylinder (gregtech.items.tools.crafting.GT_Tool_BendingCylinder)1 GT_Tool_BendingCylinderSmall (gregtech.items.tools.crafting.GT_Tool_BendingCylinderSmall)1