#packmode normal #modloaded deepmoblearning 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 crafttweaker.data.IData; import crafttweaker.world.IFacing; import crafttweaker.item.IItemStack; import crafttweaker.item.IItemCondition; import scripts.common.makeShaped as makeShaped; // from DML's config val mobs as int[string] = { // mob RF/t "zombie": 64, "skeleton": 64, "creeper": 64, "spider": 64, "slime": 64, "witch": 512, "blaze": 1024, "ghast": 1024, "wither_skeleton": 1024, "enderman": 2048, "wither": 6666, "dragon": 6666, "shulker": 512, "guardian": 1024, "thermal_elemental": 1024 }; val pristine_types as IItemStack[string] = { // mob pristine type "zombie": , "skeleton": , "creeper": , "spider": , "slime": , "witch": , "blaze": , "ghast": , "wither_skeleton": , "enderman": , "wither": , "dragon": , "shulker": , "guardian": , "thermal_elemental": }; val model_prefix = "deepmoblearning:data_model_"; val pristine_prefix = "deepmoblearning:pristine_matter_"; //// from DML's config //val pristine_chances as int[] = [ // 5, // 10, // 20, // 30 //]; // //// from DML's config //val maxExperience as int[] = [ // 0, // 50, // 250, // 500 //]; val name as string = "dml_sim_chamber"; val dml_sim_chamber = Builder.start("dml_sim_chamber", 3100) .withPattern(function(controller as IControllerTile) as IBlockPattern { return FactoryBlockPattern.start() .aisle( "CCCCC", "DEEED", "DEEED", "DEEED", "CCCCC" ) .aisle( "CCCCC", "GOOOG", "DOOOD", "GOOOG", "CGGGC" ) .aisle( "CCCCC", "GOOOG", "DO-OD", "GOOOG", "CGGGC" ) .aisle( "CCCCC", "GOOOG", "DOOOD", "GOOOG", "CGGGC" ) .aisle( "CCSCC", "DEGED", "DGGGD", "DEGED", "CCCCC" ) .where('S', controller.self()) .where('D', ) .where('E', ) // enderium .where('G', ) .where('O', /* omnium */) .where('-', CTPredicate.getAny()) .where('C', CTPredicate.states().setMinGlobalLimited(30) | controller.autoAbilities(true, true, true, true, false, false, false)) .build(); } as IPatternBuilderFunction) .withRecipeMap( FactoryRecipeMap.start("dml_sim_chamber") .minInputs(2) .maxInputs(2) .minOutputs(2) .maxOutputs(2) .build()) .withBaseTexture() .buildAndRegister(); dml_sim_chamber.hasMaintenanceMechanics = true; dml_sim_chamber.hasMufflerMechanics = false; dml_sim_chamber.canBeDistinct = true; dml_sim_chamber.frontOverlay = ; //Recipe for Controller // Moved to Groovy val DATA_MODEL_MAXIMUM_TIER = 4; val PRISTINE_CHANCE_FIXED = 30; // in % for mob, cost in mobs { dml_sim_chamber.recipeMap.recipeBuilder() .duration(301) .EUt(cost / 4 as int) .inputs() .notConsumable(itemUtils.getItem(model_prefix + mob).withEmptyTag()) .outputs(pristine_types[mob]) .chancedOutput(itemUtils.getItem(pristine_prefix + mob), PRISTINE_CHANCE_FIXED * 100, 0) .buildAndRegister(); }