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 scripts.common.makeShaped as makeShaped; //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", "CMC") .aisle("CSC", "CGC", "CCC") .where('S', controller.self()) .where('G', ) .where('V', ) .where('D', ) .where("C", CTPredicate.states() | controller.autoAbilities(true, true, true, true, true, false, false)) .where('M', controller.autoAbilities(false, false, false, false, false, false, true)) // same as CTPredicate.abilities() .build(); } as IPatternBuilderFunction) .withRecipeMap( FactoryRecipeMap.start("microverse_projector_basic") // create a RecipeMap. .minInputs(2) .maxInputs(4) .minOutputs(1) .maxOutputs(16) .maxFluidInputs(2) //.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; // Advanced Microverse Projector val microverse_projector_advanced = Builder.start("mbt:microverse_projector_advanced") .withPattern(function(controller as IControllerTile) as IBlockPattern { return FactoryBlockPattern.start() .aisle( "CCMCC", "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.getAir()) .where("C", CTPredicate.states() | controller.autoAbilities(true, true, true, true, true, false, false)) .where('M', controller.autoAbilities(false, false, false, false, false, false, true)) // same as CTPredicate.abilities() .build(); } as IPatternBuilderFunction) .withRecipeMap( FactoryRecipeMap.start("microverse_projector_advanced") // 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_advanced.hasMufflerMechanics = true; microverse_projector_advanced.hasMaintenanceMechanics = true; // 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 ", " CCMCC ", " 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.getAir()) .where('D', ) .where("C", CTPredicate.states() | controller.autoAbilities(true, true, true, true, true, false, false)) .where('M', controller.autoAbilities(false, false, false, false, false, false, true)) // same as CTPredicate.abilities() .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; // 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() | controller.autoAbilities(true, false, 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 = false; // Naquadah Reactor 1 .displayName = "Reaction-Safe Casing"; val naquadah_reactor_1 = Builder.start("naquadah_reactor_1") .withPattern(function(controller as IControllerTile) as IBlockPattern { return FactoryBlockPattern.start() .aisle( "CCC", "PGP", "PGP", "PGP", "CCC" ) .aisle( "CCC", "GOG", "GOG", "GOG", "CCC" ) .aisle( "CSC", "PGP", "PGP", "PGP", "CCC" ) .where('S', controller.self()) .where('G', ) .where('P', ) .where('O', ) .where('C', CTPredicate.states() | CTPredicate.abilities().setMinGlobalLimited(1).setPreviewCount(1) | CTPredicate.abilities().setMinGlobalLimited(1).setMaxGlobalLimited(3).setPreviewCount(1) ) .build(); } as IPatternBuilderFunction) .withRecipeMap( FactoryRecipeMap.start("naquadah_reactor_1") .minInputs(1) .maxInputs(1) .minOutputs(1) .maxOutputs(1) .build()) .withBaseTexture() .buildAndRegister(); naquadah_reactor_1.hasMufflerMechanics = false; naquadah_reactor_1.hasMaintenanceMechanics = false; // Naquadah Reactor 2 val naquadah_reactor_2 = Builder.start("naquadah_reactor_2") .withPattern(function(controller as IControllerTile) as IBlockPattern { return FactoryBlockPattern.start() .aisle( "CCC", "PGP", "PGP", "PGP", "PGP", "CCC" ) .aisle( "CCC", "GOG", "GOG", "GOG", "GOG", "CCC" ) .aisle( "CSC", "PGP", "PGP", "PGP", "PGP", "CCC" ) .where('S', controller.self()) .where('G', ) .where('P', ) .where('O', ) .where('C', CTPredicate.states() | CTPredicate.abilities().setMinGlobalLimited(1).setPreviewCount(1) | CTPredicate.abilities().setMinGlobalLimited(1).setMaxGlobalLimited(3).setPreviewCount(1) ) .build(); } as IPatternBuilderFunction) .withRecipeMap( FactoryRecipeMap.start("naquadah_reactor_2") .minInputs(1) .maxInputs(1) .minOutputs(1) .maxOutputs(1) .build()) .withBaseTexture() .buildAndRegister(); naquadah_reactor_2.hasMufflerMechanics = false; naquadah_reactor_2.hasMaintenanceMechanics = false; // Large Lapidary Dynamo val large_lapidary_dynamo = Builder.start("large_lapidary_dynamo") .withPattern(function(controller as IControllerTile) as IBlockPattern { return FactoryBlockPattern.start() .aisle("CCC", "CCC", "CCC") .aisle("CCC", "CGC", "CCC") .aisle("CCC", "CSC", "CCC") .where('S', controller.self()) .where('G', ) .where('C', CTPredicate.states() | CTPredicate.abilities().setMinGlobalLimited(1).setPreviewCount(1) | CTPredicate.abilities().setMinGlobalLimited(1).setMaxGlobalLimited(16).setPreviewCount(1) ) .build(); } as IPatternBuilderFunction) .withRecipeMap( FactoryRecipeMap.start("large_lapidary_dynamo") .minInputs(1) .maxInputs(1) .build()) .withBaseTexture() .buildAndRegister(); large_lapidary_dynamo.hasMufflerMechanics = false; large_lapidary_dynamo.hasMaintenanceMechanics = false; // Lunar Mining Station //val isOnMoon as IBlockMatcher = function (state as IBlockWorldState) as bool { // return state.getWorld().getDimension() == 100; // Moon dimension //}; //val lunar_mining_station = Builder.start("lunar_mining_station") // .withPattern(function(controller as IControllerTile) as IBlockPattern { // return FactoryBlockPattern.start() // .aisle( // " A ", // " ", // " ", // " ", // " ", // " ", // " ", // " ", // " " // ) // .aisle( // " A ", // " E E ", // " E ", // " ", // " ", // " ", // " ", // " ", // " " // ) // .aisle( // " A ", // " C C ", // " CCC ", // " CCC ", // " CGC ", // " CCC ", // " C ", // " ", // " " // ) // .aisle( // " CAC ", // " C C ", // " C C ", // " C C ", // " C C ", // " C C ", // " C C ", // " BBB ", // " " // ) // .aisle( // "AAAAAAAAA", // " ", // " E E ", // " C C ", // " G G ", // " C C ", // " C C ", // " BBB ", // " M " // ) // .aisle( // " CAS ", // " C C ", // " C C ", // " C C ", // " C C ", // " C C ", // " C C ", // " BBB ", // " " // ) // .aisle( // " A ", // " C C ", // " CCC ", // " CCC ", // " CGC ", // " CCC ", // " C ", // " ", // " " // ) // .aisle( // " A ", // " E E ", // " E ", // " ", // " ", // " ", // " ", // " ", // " " // ) // .aisle( // " A ", // " ", // " ", // " ", // " ", // " ", // " ", // " ", // " " // ) // .where('S', controller.self()) // .where('M', ) // .where('B', ) // .where('G', ) // .where('E', ) // .where('A', ) // .where('C', CTPredicate.states() // | controller.autoAbilities(true, false, true, false, false, true, false)) // .build(); // } as IPatternBuilderFunction) // .withRecipeMap( // FactoryRecipeMap.start("lunar_mining_station") // .minInputs(1) // .maxInputs(1) // .minFluidOutputs(1) // .minFluidOutputs(1) // .build()) // .withBaseTexture() // .buildAndRegister(); // multiblock controller recipes recipes.addShaped("microverse_projector_basic", , [ [, , ], [, , ], [, , ] ]); recipes.addShaped("microverse_projector_advanced", , [ [, , ], [, , ], [, , ] ]); recipes.addShaped("microverse_projector_advanced_ii", , [ [, , ], [, , ], [, , ] ]); makeShaped("naquadah_reactor_1", , ["NCN", "GSG", "PPP"], { C : , //T5 G : , S : , P : , N : }); //Omnium Nugget makeShaped("naquadah_reactor_2", , ["NCN", "GSG", "PPP"], { C : , //T6 G : , S : , P : , N : }); //Omnium Ingot //makeShaped("lunar_mining_station", , // ["CLC", // "LSL", // "CLC"], // { C : , //T4 // L : , //LuV Machine Casing // S : }); var dynamo5 = .withTag({RSControl: 0 as byte, Creative: 0 as byte, Energy: 0, Level: 1 as byte, Augments: []}, false); // Numismatic Dynamo (Hardened) makeShaped("large_lapidary_dynamo", , ["CAC", "ANA", "XAX"], { C : , A : , // Aluminium Casing X : , N : dynamo5 }); // 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) .buildAndRegister(); // t1 gems microverse_projector_basic.recipeMap .recipeBuilder() .duration(500) .EUt(500) .inputs(, , ) .fluidInputs( * 8000) .outputs( * 16, * 16, * 16, * 16, * 64, * 64, * 64) .buildAndRegister(); // t1 stellar creation data 1 microverse_projector_basic.recipeMap .recipeBuilder() .duration(100) .EUt(500) .inputs(, ) .fluidInputs( * 2000) .outputs() .buildAndRegister(); // t1 stellar creation data 2 //microverse_projector_basic.recipeMap // .recipeBuilder() // .duration(100) // .EUt(500) // .inputs() // .fluidInputs( * 2000, * 80000) // .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, * 64, * 64) .buildAndRegister(); // t2 stellar creation data microverse_projector_basic.recipeMap .recipeBuilder() .duration(120) .EUt(1000) .inputs(, * 4) .fluidInputs( * 3000) .outputs( * 4) .buildAndRegister(); // t3 gems microverse_projector_basic.recipeMap .recipeBuilder() .duration(700) .EUt(2000) .inputs(, * 4, ) .fluidInputs( * 20000) .outputs( * 16, * 16, * 16, * 16, * 16, * 16, * 16, * 16, * 16, * 16, * 16, * 16, * 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) .buildAndRegister(); // advanced projector // t4 oil and infinity microverse_projector_advanced.recipeMap .recipeBuilder() .duration(800) .EUt(3750) .inputs(, * 8, , * 64) .outputs( * 64, * 64, .firstItem * 16) .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 microverse_projector_advanced.recipeMap .recipeBuilder() .duration(1000) .EUt(7500) .inputs(, * 16, * 32) .outputs( * 64, * 64, * 32, * 64, * 64) .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(); // t10 tank data //microverse_projector_advanced_ii.recipeMap // .recipeBuilder() // .duration(6000) // .EUt(1000000) // .inputs(, // , // * 36) // .outputs() // .buildAndRegister(); // creative tank provider // creative tank creative_tank_provider.recipeMap .recipeBuilder() .notConsumable() .inputs() .outputs() .duration(500) .EUt(100000) .buildAndRegister(); // Naquadah Reactor Mk1 Recipes naquadah_reactor_1.recipeMap .recipeBuilder() .duration(7500) .EUt(-32768) .inputs() .outputs() .buildAndRegister(); naquadah_reactor_1.recipeMap .recipeBuilder() .duration(30000) .EUt(-32768) .inputs() .outputs() .buildAndRegister(); // Naquadah Reactor Mk2 Recipes naquadah_reactor_2.recipeMap .recipeBuilder() .duration(60000) .EUt(-32768) .inputs() .outputs() .buildAndRegister(); naquadah_reactor_2.recipeMap .recipeBuilder() .duration(240000) .EUt(-32768) .inputs() .outputs() .buildAndRegister(); // lapidary dynamo large_lapidary_dynamo.recipeMap .recipeBuilder() .duration(19200) .EUt(-32) .inputs() .buildAndRegister(); // Lunar Mining Station Rover Missions //lunar_mining_station.recipeMap // .recipeBuilder() // .duration(120000) // .EUt(125) // .inputs() // .fluidOutputs( * 480000) // .property("dimension", 100) // .buildAndRegister(); // //lunar_mining_station.recipeMap // .recipeBuilder() // .duration(120000) // .EUt(125) // .inputs() // .fluidOutputs( * 480000) // .property("dimension", 100) // .buildAndRegister(); //game.setLocalization("mbt.machine.microverse_projector_basic.name", "Basic Microverse Projector"); //game.setLocalization("recipemap.microverse_projector_basic.name", "Basic Microverse");