//1
GTCEuStartupEvents.registry('gtceu:recipe_type', event => {
	event.create('boom_of_create')
		.category('ctnh')
		.setMaxIOSize(1, 0, 1, 0)
		.setEUIO('in')
		.setSlotOverlay(false, false, GuiTextures.SOLIDIFIER_OVERLAY)
		.setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, FillDirection.LEFT_TO_RIGHT)
		.setSound(GTSoundEntries.COOLING)
})

GTCEuStartupEvents.registry('gtceu:machine', event => {
	event.create('boom_of_create', 'multiblock')
		.rotationState(RotationState.NON_Y_AXIS)
		.recipeType('boom_of_create')
		.appearanceBlock(() => Block.getBlock('gtceu:solid_machine_casing'))
		.pattern(definition => FactoryBlockPattern.start()
			.aisle("######AAA######", "######AAA######", "######AAA######", "######AAA######", "######AAA######", "######AAA######", "######AAA######", "######AAA######", "######AAA######")
			.aisle("#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#")
			.aisle("#AAA##AAA##AAA#", "#AAABBBBBBBAAA#", "#AAABBCCCBBAAA#", "#AAABBCCCBBAAA#", "#AAABBCCCBBAAA#", "#AAABBCCCBBAAA#", "#AAABBCCCBBAAA#", "#AAABBBBBBBAAA#", "#AAA##AAA##AAA#")
			.aisle("#AAA#######AAA#", "#AABBBBBBBBBAA#", "#AABCCCCCCCBAA#", "#AABCC   CCBAA#", "#AABCC   CCBAA#", "#AABCC   CCBAA#", "#AABCCCCCCCBAA#", "#AABBBBBBBBBAA#", "#AAA#######AAA#")
			.aisle("###############", "##BBBBBBBBBBB##", "##BCCCCCCCCCB##", "##BC       CB##", "##BC   D   CB##", "##BC       CB##", "##BCCCCCCCCCB##", "##BBBBBBBBBBB##", "###############")
			.aisle("###############", "##BBBEEEEEBBB##", "##BCCEEEEECCB##", "##BC       CB##", "##BC   D   CB##", "##BC       CB##", "##BCCEEEEECCB##", "##BBBEEEEEBBB##", "###############")
			.aisle("AAA#########AAA", "AABBBEGGGEBBBAA", "AACCCEDDDECCCAA", "AAC         CAA", "AAC    D    CAA", "AAC         CAA", "AACCCEDDDECCCAA", "AABBBEGGGEBBBAA", "AAA#########AAA")
			.aisle("AAA#########AAA", "AABBBEGGGEBBBAA", "AACCCEDFDECCCAA", "AAC    F    CAA", "AAC DDDFDDD CAA", "AAC    F    CAA", "AACCCEDFDECCCAA", "AABBBEGGGEBBBAA", "AAA#########AAA")
			.aisle("AAA#########AAA", "AABBBEGGGEBBBAA", "AACCCEDDDECCCAA", "AAC         CAA", "AAC    D    CAA", "AAC         CAA", "AACCCEDDDECCCAA", "AABBBEGGGEBBBAA", "AAA#########AAA")
			.aisle("###############", "##BBBEEEEEBBB##", "##BCCEEEEECCB##", "##BC       CB##", "##BC   D   CB##", "##BC       CB##", "##BCCEEEEECCB##", "##BBBEEEEEBBB##", "###############")
			.aisle("###############", "##BBBBBBBBBBB##", "##BCCCCCCCCCB##", "##BC       CB##", "##BC   D   CB##", "##BC       CB##", "##BCCCCCCCCCB##", "##BBBBBBBBBBB##", "###############")
			.aisle("#AAA#######AAA#", "#AABBBBBBBBBAA#", "#AABCCCCCCCBAA#", "#AABCC   CCBAA#", "#AABCC   CCBAA#", "#AABCC   CCBAA#", "#AABCCCCCCCBAA#", "#AABBBBBBBBBAA#", "#AAA#######AAA#")
			.aisle("#AAA##AAA##AAA#", "#AAABBBBBBBAAA#", "#AAABBCCCBBAAA#", "#AAABBCCCBBAAA#", "#AAABBCCCBBAAA#", "#AAABBCCCBBAAA#", "#AAABBCCCBBAAA#", "#AAABBBBBBBAAA#", "#AAA##AAA##AAA#")
			.aisle("#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#", "#AAA##AAA##AAA#")
			.aisle("######AAA######", "######A@A######", "######AAA######", "######AAA######", "######AAA######", "######AAA######", "######AAA######", "######AAA######", "######AAA######")
			.where("A", Predicates.blocks("gtceu:solid_machine_casing")
				.or(Predicates.autoAbilities(definition.getRecipeTypes()))
				.or(Predicates.abilities(PartAbility.MAINTENANCE)).setMinGlobalLimited(1))
			.where("#", Predicates.any())
			.where("@", Predicates.controller(Predicates.blocks(definition.get())))
			.where("B", Predicates.blocks("gtceu:clean_machine_casing"))
			.where("C", Predicates.blocks("gtceu:stable_machine_casing"))
			.where("D", Predicates.blocks("gtceu:robust_machine_casing"))
			.where("E", Predicates.blocks("gtceu:laminated_glass"))
			.where("F", Predicates.blocks("gtceu:tungstensteel_gearbox"))
			.where("G", Predicates.abilities(PartAbility.OUTPUT_KINETIC)
				.or(Predicates.blocks("gtceu:robust_machine_casing")))
			.build()
		)
		.workableCasingRenderer('gtceu:block/casings/solid/machine_casing_solid_steel', 'gtceu:block/multiblock/generator/large_steam_turbine', false)
})
