@@ -23,6 +23,11 @@ import net.minecraft.util.EnumFacing
2323import net.minecraft.util.ResourceLocation
2424import net.minecraft.util.math.BlockPos
2525import net.minecraft.util.text.translation.I18n
26+ import net.minecraftforge.fml.common.Loader
27+ import net.minecraftforge.fml.common.Optional
28+ import thelm.packagedastral.block.BlockAttunementCrafter
29+ import thelm.packagedastral.block.BlockConstellationCrafter
30+ import thelm.packagedastral.block.BlockTraitCrafter
2631import vazkii.botania.common.block.ModBlocks
2732import java.util.Arrays
2833import java.util.stream.Collectors
@@ -43,11 +48,13 @@ object RegistryAssembly {
4348 }
4449
4550 fun regAll () {
46- regAS()
47- regMEK()
48- regBot()
51+ if (Loader .isModLoaded(" astralsorcery" )) regAS()
52+ if (Loader .isModLoaded(" mekanism" )) regMEK()
53+ if (Loader .isModLoaded(" botania" )) regBot()
54+ if (Loader .isModLoaded(" packagedastral" )) regPackagedastral()
4955 }
5056
57+ @Optional.Method (modid = " astralsorcery" )
5158 private fun regAS () {
5259 NEWMachineAssemblyManager .setConstructors(
5360 NEWMachineAssemblyManager .BlockPair (BlocksAS .blockAltar, 1 ),
@@ -121,6 +128,7 @@ object RegistryAssembly {
121128 )
122129 }
123130
131+ @Optional.Method (modid = " mekanism" )
124132 @Suppress(" UNCHECKED_CAST" )
125133 private fun regMEK () {
126134 val reactorMachine = NEWDynamicMachine (" " )
@@ -325,6 +333,7 @@ object RegistryAssembly {
325333 )
326334 }
327335
336+ @Optional.Method (modid = " botania" )
328337 private fun regBot () {
329338 val terraPlateMachine = NEWDynamicMachine (" " )
330339 if (terraPlateMachine is AccessorAbstractMachine ) {
@@ -379,13 +388,53 @@ object RegistryAssembly {
379388 )
380389 }
381390
391+ @Optional.Method (modid = " packagedastral" )
392+ private fun regPackagedastral () {
393+ val attunementCrafter = NEWMachineAssemblyManager .BlockPair (BlockAttunementCrafter .INSTANCE , 0 )
394+ val attunementCrafterMachine = transformationPackagedastralBlockArrays(
395+ MultiBlockArrays .patternAltarAttunement,
396+ " AltarAttunement" .camelToSnake()
397+ ).setName(" tile.packagedastral.attunement_crafter.name" )
398+ attunementCrafterMachine.pattern.addBlock(BlockPos .ORIGIN , packBlock(attunementCrafter.blockState))
399+ NEWMachineAssemblyManager .setConstructors(
400+ attunementCrafter,
401+ attunementCrafterMachine
402+ )
403+
404+ val constellationCrafter = NEWMachineAssemblyManager .BlockPair (BlockConstellationCrafter .INSTANCE , 0 )
405+ val constellationCrafterMachine = transformationPackagedastralBlockArrays(
406+ MultiBlockArrays .patternAltarConstellation,
407+ " AltarConstellation" .camelToSnake()
408+ ).setName(" tile.packagedastral.constellation_crafter.name" )
409+ constellationCrafterMachine.pattern.addBlock(BlockPos .ORIGIN , packBlock(constellationCrafter.blockState))
410+ NEWMachineAssemblyManager .setConstructors(
411+ constellationCrafter,
412+ constellationCrafterMachine
413+ )
414+
415+ val traitCrafter = NEWMachineAssemblyManager .BlockPair (BlockTraitCrafter .INSTANCE , 0 )
416+ val traitCrafterMachine = transformationPackagedastralBlockArrays(
417+ MultiBlockArrays .patternAltarTrait,
418+ " AltarTrait" .camelToSnake()
419+ ).setName(" tile.packagedastral.trait_crafter.name" )
420+ traitCrafterMachine.pattern.addBlock(BlockPos .ORIGIN , packBlock(traitCrafter.blockState))
421+ NEWMachineAssemblyManager .setConstructors(
422+ traitCrafter,
423+ traitCrafterMachine
424+ )
425+ }
426+
382427 private class XY (val x : Int , val z : Int ) {
383428 operator fun get (y : Int ): BlockPos {
384429 return BlockPos (x, y, z)
385430 }
386431 }
387432
388- private fun transformationBlockArrays (array : PatternBlockArray , name : String ): NEWDynamicMachine {
433+ @Optional.Method (modid = " astralsorcery" )
434+ private fun transformationBlockArrays (
435+ array : PatternBlockArray ,
436+ name : String
437+ ): NEWDynamicMachine {
389438 val machine = NEWDynamicMachine (" " )
390439 if (machine is AccessorAbstractMachine ) {
391440 machine.setRL(ResourceLocation (" astralsorcery" , name))
@@ -398,6 +447,23 @@ object RegistryAssembly {
398447 return machine
399448 }
400449
450+ @Optional.Method (modid = " packagedastral" )
451+ private fun transformationPackagedastralBlockArrays (
452+ array : PatternBlockArray ,
453+ name : String
454+ ): NEWDynamicMachine {
455+ val machine = NEWDynamicMachine (" " )
456+ if (machine is AccessorAbstractMachine ) {
457+ machine.setRL(ResourceLocation (" packagedastral" , name))
458+ }
459+ val newBlcokArray = machine.pattern
460+ for (entry in array.pattern) {
461+ val info = BlockArray .BlockInformation (ObjectLists .singleton(IBlockStateDescriptor (entry.value.state)))
462+ newBlcokArray.addBlock(entry.key, info)
463+ }
464+ return machine
465+ }
466+
401467 private fun NEWDynamicMachine.setName (name : String ): NEWDynamicMachine {
402468 this .localizedName = I18n .translateToLocal(name)
403469 return this
0 commit comments