#packmode normal 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; import mods.gregtech.recipe.FactoryRecipeMap; import mods.gregtech.recipe.RecipeMap; import mods.gregtech.recipe.functions.IRunOverclockingLogicFunction; import mods.gregtech.recipe.IRecipeLogic; import mods.gregtech.recipe.IRecipe; import scripts.common.makeShaped as makeShaped; import scripts.common.absolute_int as absolute_int; //val ROCKET_ARROW as ITextureArea = ITextureArea.fullImage("multiblocktweaker:textures/gui/progress_bar/rocket.png"); // multiblock stuctures // Basic Microverse Projector val microverse_projector_basic = Builder.start("mbt:microverse_projector_basic") // automatic allocation ID .withPattern(function(controller as IControllerTile) as IBlockPattern { return FactoryBlockPattern.start() .aisle("CCC", "CVC", "CCC") .aisle("CCC", "GDG", "CCC") .aisle("CSC", "CGC", "CCC") .where('S', controller.self()) .where('G', ) .where('V', ) .where('D', ) .where("C", CTPredicate.states().setMinGlobalLimited(12) | controller.autoAbilities(true, true, true, true, true, false, true)) .build(); } as IPatternBuilderFunction) .withRecipeMap( FactoryRecipeMap.start("microverse_projector_basic") // create a RecipeMap. .minInputs(2) .maxInputs(4) .minOutputs(1) .maxOutputs(16) .maxFluidInputs(1) //.setProgressBar(ROCKET_ARROW, MoveType.HORIZONTAL) .build()) .withBaseTexture() // Looking for existing renderers in CEu. but yeah, you can also use here .buildAndRegister(); microverse_projector_basic.hasMufflerMechanics = true; microverse_projector_basic.hasMaintenanceMechanics = true; microverse_projector_basic.canBeDistinct = true; microverse_projector_basic.frontOverlay = ; // Advanced Microverse Projector val microverse_projector_advanced = Builder.start("mbt:microverse_projector_advanced") .withPattern(function(controller as IControllerTile) as IBlockPattern { return FactoryBlockPattern.start() .aisle( "CCCCC", "CGGGC", "CGGGC", "CGGGC", "CCCCC") .aisle( "CVCVC", "GDDDG", "GDDDG", "GDDDG", "CVCVC") .aisle( "CCCCC", "GDDDG", "GD DG", "GDDDG", "CCCCC") .aisle( "CVCVC", "GDDDG", "GDDDG", "GDDDG", "CVCVC") .aisle( "CCSCC", "CGGGC", "CGGGC", "CGGGC", "CCCCC") .where('S', controller.self()) .where('G', ) .where('D', ) .where('V', ) .where(' ', CTPredicate.getAny()) .where("C", CTPredicate.states().setMinGlobalLimited(45) | controller.autoAbilities(true, true, true, true, false, false, true)) .build(); } as IPatternBuilderFunction) .withRecipeMap( FactoryRecipeMap.start("microverse_projector_advanced") // create a RecipeMap. .minInputs(2) .maxInputs(4) .minOutputs(1) .maxOutputs(16) //.setProgressBar(ROCKET_ARROW, MoveType.HORIZONTAL) .build()) .withBaseTexture() // Looking for existing renderers in CEu. but yeah, you can also use here .buildAndRegister(); microverse_projector_advanced.hasMufflerMechanics = true; microverse_projector_advanced.hasMaintenanceMechanics = true; microverse_projector_advanced.canBeDistinct = true; microverse_projector_advanced.frontOverlay = ; // Advanced Microverse Projector II val microverse_projector_advanced_ii = Builder.start("mbt:microverse_projector_advanced_ii") .withPattern(function(controller as IControllerTile) as IBlockPattern { return FactoryBlockPattern.start() .aisle( " ", " ", " CCCCC ", " CVCVC ", " CCCCC ", " CVCVC ", " CCCCC ", " ", " ") .aisle( " ", " CGGGC ", " CDDDDDC ", " GDDDDDG ", " GDDDDDG ", " GDDDDDG ", " CDDDDDC ", " CGGGC ", " ") .aisle( " CCCCC ", " CDDDDDC ", "CDDDDDDDC", "CDDDDDDDC", "CDDDDDDDC", "CDDDDDDDC", "CDDDDDDDC", " CDDDDDC ", " CCCCC ") .aisle( " CGGGC ", " GDDDDDG ", "CDDDDDDDC", "GDD DDG", "GDD DDG", "GDD DDG", "CDDDDDDDC", " GDDDDDG ", " CGGGC ").setRepeatable(3) .aisle( " CCCCC ", " CDDDDDC ", "CDDDDDDDC", "CDDDDDDDC", "CDDDDDDDC", "CDDDDDDDC", "CDDDDDDDC", " CDDDDDC ", " CCCCC ") .aisle( " ", " CGGGC ", " CDDDDDC ", " GDDDDDG ", " GDDDDDG ", " GDDDDDG ", " CDDDDDC ", " CGGGC ", " ") .aisle( " ", " ", " CCSCC ", " CGGGC ", " CGGGC ", " CGGGC ", " CCCCC ", " ", " ") .where('S', controller.self()) .where('G', ) .where('V', ) .where(' ', CTPredicate.getAny()) .where('D', ) .where("C", CTPredicate.states().setMinGlobalLimited(115) | controller.autoAbilities(true, true, true, true, false, false, true)) .build(); } as IPatternBuilderFunction) .withRecipeMap( FactoryRecipeMap.start("microverse_projector_advanced_ii") // create a RecipeMap. .minInputs(2) .maxInputs(8) .minOutputs(1) .maxOutputs(16) //.setProgressBar(ROCKET_ARROW, MoveType.HORIZONTAL) .build()) .withBaseTexture() // Looking for existing renderers in CEu. but yeah, you can also use here .buildAndRegister(); microverse_projector_advanced_ii.hasMufflerMechanics = true; microverse_projector_advanced_ii.hasMaintenanceMechanics = true; microverse_projector_advanced_ii.canBeDistinct = true; microverse_projector_advanced_ii.frontOverlay = ; // Creative Tank Provider val creative_tank_provider = Builder.start("mbt:creative_tank_provider") .withPattern(function(controller as IControllerTile) as IBlockPattern { return FactoryBlockPattern.start() .aisle("CCC", "CCC", "CCC") .aisle("CCC", "CFC", "CCC") .aisle("CCC", "CSC", "CCC") .where('S', controller.self()) .where('F', ) // Tungstencarbide Frame Box .where("C", CTPredicate.states().setMinGlobalLimited(15) | controller.autoAbilities(true, true, true, true, false, false, false)) .build(); } as IPatternBuilderFunction) .withRecipeMap( FactoryRecipeMap.start("creative_tank_provider") .minInputs(2) .maxInputs(2) .minOutputs(1) .maxOutputs(1) .build()) .withBaseTexture() .buildAndRegister(); creative_tank_provider.hasMufflerMechanics = false; creative_tank_provider.hasMaintenanceMechanics = true; creative_tank_provider.frontOverlay = ; // Naquadah Reactor 1 // Groovy (special generator) // Naquadah Reactor 2 // Groovy (special generator) // multiblock controller recipes recipes.addShaped("microverse_projector_basic", , [ [, , ], [, , ], [, , ] ]); recipes.addShaped("microverse_projector_advanced", , [ [, , ], [, , ], [, , ] ]); recipes.addShaped("microverse_projector_advanced_ii", , [ [, , ], [, , ], [, , ] ]); recipes.addShaped("creative_tank_provider", , [ [, , ], [, , ], [, , ] ]); // Naquadah Reactor // Moved to Groovy // multiblock recipemap recipes // basic projector // t1 ores microverse_projector_basic.recipeMap .recipeBuilder() .duration(500) .EUt(500) .inputs(, , ) .fluidInputs( * 8000) .outputs( * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64) .buildAndRegister(); // t1 gems microverse_projector_basic.recipeMap .recipeBuilder() .duration(500) .EUt(500) .inputs(, , ) .fluidInputs( * 8000) .outputs( * 64, * 64, * 64, * 64) .buildAndRegister(); // t1 stellar creation data 1 microverse_projector_basic.recipeMap .recipeBuilder() .duration(100) .EUt(500) .inputs(, ) .fluidInputs( * 2000) .outputs() .buildAndRegister(); // t2 radium + ores microverse_projector_basic.recipeMap .recipeBuilder() .duration(600) .EUt(1000) .inputs(, * 2) .fluidInputs( * 12000) .outputs( * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64) .buildAndRegister(); // t2 stellar creation data microverse_projector_basic.recipeMap .recipeBuilder() .duration(120) .EUt(1000) .inputs(, * 4) .fluidInputs( * 3000) .outputs( * 4) .buildAndRegister(); // t2 gases microverse_projector_basic.recipeMap .recipeBuilder() .duration(700) .EUt(2000) .inputs(, * 4, * 64) .fluidInputs( * 12000) .outputs( * 10, * 10, * 10) .buildAndRegister(); // t3 gems microverse_projector_basic.recipeMap .recipeBuilder() .duration(700) .EUt(2000) .inputs(, * 4, ) .fluidInputs( * 20000) .outputs( * 64, * 32, * 64, * 48, * 32, * 64, * 64, * 64) .buildAndRegister(); // t3 ores microverse_projector_basic.recipeMap .recipeBuilder() .duration(700) .EUt(2000) .inputs(, * 4, ) .fluidInputs( * 20000) .outputs( * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64) .buildAndRegister(); // advanced projector // t4 oil and infinity microverse_projector_advanced.recipeMap .recipeBuilder() .duration(800) .EUt(3750) .inputs(, * 8, , * 64) .outputs( * 64, * 64, .firstItem * 32) .buildAndRegister(); // t4 dense gem ores microverse_projector_advanced.recipeMap .recipeBuilder() .duration(800) .EUt(3750) .inputs(, * 8, , * 64) .outputs( * 64, * 64, * 64, * 64, * 32, * 16) .buildAndRegister(); // t4 osmium iridium microverse_projector_advanced.recipeMap .recipeBuilder() .duration(800) .EUt(3750) .inputs(, * 8, * 4, * 64) .outputs( * 64, * 64, * 16) .buildAndRegister(); // t5 ores microverse_projector_advanced.recipeMap .recipeBuilder() .duration(1000) .EUt(7500) .inputs(, * 16, * 32) .outputs( * 64, * 64, * 64, * 64, * 64, * 64, * 64, //Ender Pearl Block * 16, * 64, * 64, * 64, * 64) .buildAndRegister(); // t5 naquadah sheldonite trinium microverse_projector_advanced.recipeMap .recipeBuilder() .duration(1000) .EUt(7500) .inputs(, * 16, * 32) .outputs( * 64, * 64, * 64, * 64, * 64, * 48) .buildAndRegister(); // t6 u/os/ir microverse_projector_advanced.recipeMap .recipeBuilder() .duration(1250) .EUt(18750) .inputs(, * 16, * 32, * 16) .outputs( * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64) .buildAndRegister(); // t6 einsteinium microverse_projector_advanced.recipeMap .recipeBuilder() .duration(1250) .EUt(18750) .inputs(, * 16, * 32, * 64) .outputs( * 32) .buildAndRegister(); // t6 eggs microverse_projector_advanced.recipeMap .recipeBuilder() .duration(1250) .EUt(18750) .inputs(, * 16, * 32, * 16) .outputs( * 32) .buildAndRegister(); // advanced projector 2 // t7 hearts microverse_projector_advanced_ii.recipeMap .recipeBuilder() .duration(1500) .EUt(31250) .inputs(, * 32, .firstItem * 64, .firstItem * 64, * 32) .outputs( * 32, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, * 64, //Silver block * 64, //Silver Block * 64, * 64, * 64, //Platinum Block * 16) .buildAndRegister(); // t7 chaos lair data microverse_projector_advanced_ii.recipeMap .recipeBuilder() .duration(1500) .EUt(31250) .inputs(, .firstItem * 64, .firstItem * 64, , * 64, * 64, * 64, * 64) .outputs() .buildAndRegister(); // t8 gravistar nt microverse_projector_advanced_ii.recipeMap .recipeBuilder() .duration(2000) .EUt(62500) .inputs(, * 64, .firstItem * 64, .firstItem * 64, .firstItem * 64, .firstItem * 64, * 64, * 64) .outputs( * 32, * 64, .firstItem * 16, ) .buildAndRegister(); // t8 shards eggs microverse_projector_advanced_ii.recipeMap .recipeBuilder() .duration(1500) .EUt(62500) .inputs(, * 64, .firstItem * 64, .firstItem * 64, .firstItem * 64, .firstItem * 64, ) .outputs( * 4, * 64, * 64, * 64, * 64) .buildAndRegister(); // t9 nt microverse_projector_advanced_ii.recipeMap .recipeBuilder() .duration(3000) .EUt(250000) .inputs(, * 8, * 4, ) .outputs(.firstItem * 64, .firstItem * 64, .firstItem * 64, .firstItem * 64, .firstItem * 64, .firstItem * 64, .firstItem * 64, .firstItem * 64, .firstItem * 64) .buildAndRegister(); // t9 universe creation data microverse_projector_advanced_ii.recipeMap .recipeBuilder() .duration(3000) .EUt(250000) .inputs(, * 4, * 64, * 64, * 64, * 64) .outputs() .buildAndRegister(); // t10 hotu microverse_projector_advanced_ii.recipeMap .recipeBuilder() .duration(6000) .EUt(1000000) .inputs(, , * 8) .outputs() .buildAndRegister(); // creative tank provider // creative tank creative_tank_provider.recipeMap .recipeBuilder() .notConsumable() .inputs() .outputs() .duration(500) .EUt(100000) .buildAndRegister(); // Naquadah Reactor Mk1 Recipes .recipeBuilder() .duration(938) .EUt(393216) .inputs() .outputs() .buildAndRegister(); .recipeBuilder() .duration(3750) .EUt(393216) .inputs() .outputs() .buildAndRegister(); // Naquadah Reactor Mk2 Recipes .recipeBuilder() .duration(1875) .EUt(1572864) .inputs() .outputs() .buildAndRegister(); .recipeBuilder() .duration(7500) .EUt(1572864) .inputs() .outputs() .buildAndRegister();