# Imports
import mods.ctutils.utils.Math;
import crafttweaker.item.IItemStack;
import crafttweaker.liquid.ILiquidStack;
import mods.gregtech.recipe.RecipeMap;
import mods.gregtech.recipe.RecipeMaps;
import mods.gregtech.recipe.FactoryRecipeMap;
import mods.gregtech.multiblock.Builder;
import mods.gregtech.multiblock.FactoryBlockPattern;
import mods.gregtech.multiblock.RelativeDirection;
import mods.gregtech.multiblock.functions.IPatternBuilderFunction;
import mods.gregtech.IControllerTile;
import mods.gregtech.multiblock.CTPredicate;
import mods.gregtech.multiblock.IBlockPattern;



########################################
# Microwave
########################################
Builder.start("microwave_multiblock", 32100)
    .withPattern(function(controller as IControllerTile) as IBlockPattern {
        return FactoryBlockPattern.start()
            .aisle("CCC", "CCC", "CCC")
            .aisle("CCC", "C#C", "CCC")
            .aisle("CCC", "CSC", "CCC")
            .where("S", controller.self())
            .where("C", CTPredicate.states(<metastate:gregtech:metal_casing:5>).setMinGlobalLimited(21) | controller.autoAbilities())
            .where("#", CTPredicate.getAir())
            .build();
    } as IPatternBuilderFunction)
    .withRecipeMap(<recipemap:microwave>)
    .withBaseTexture(<metastate:gregtech:metal_casing:5>)
    .buildAndRegister();

recipes.addShaped(<metaitem:multiblocktweaker:microwave_multiblock>, [
    [<gregtech:transparent_casing>, <gregtech:transparent_casing>, <gregtech:transparent_casing>],
    [<ore:circuitElite>, <metaitem:hull.iv>, <ore:circuitElite>],
    [<metaitem:electric.piston.iv>, <metaitem:electric.pump.iv>, <metaitem:electric.piston.iv>]
]);
