22
33package github.kasuminova.novaeng.common.registry
44
5+ import github.kasuminova.mmce.common.util.DynamicPattern
56import github.kasuminova.novaeng.common.util.Functions
7+ import github.kasuminova.novaeng.common.util.NEWDynamicMachine
68import github.kasuminova.novaeng.common.util.NEWMachineAssemblyManager
79import github.kasuminova.novaeng.mixin.mmce.AccessorAbstractMachine
810import hellfirepvp.astralsorcery.common.lib.BlocksAS
911import hellfirepvp.astralsorcery.common.lib.MultiBlockArrays
1012import hellfirepvp.astralsorcery.common.structure.array.PatternBlockArray
11- import hellfirepvp.modularmachinery.common.machine.DynamicMachine
13+ import hellfirepvp.modularmachinery.common.machine.TaggedPositionBlockArray
1214import hellfirepvp.modularmachinery.common.util.BlockArray
1315import hellfirepvp.modularmachinery.common.util.IBlockStateDescriptor
16+ import it.unimi.dsi.fastutil.objects.ObjectArrayList
1417import it.unimi.dsi.fastutil.objects.ObjectLists
18+ import mekanism.common.MekanismBlocks
1519import mekanism.generators.common.GeneratorsBlocks
1620import net.minecraft.block.state.IBlockState
1721import net.minecraft.init.Blocks
22+ import net.minecraft.util.EnumFacing
1823import net.minecraft.util.ResourceLocation
1924import net.minecraft.util.math.BlockPos
2025import net.minecraft.util.text.translation.I18n
2126import vazkii.botania.common.block.ModBlocks
27+ import java.util.Arrays
28+ import java.util.stream.Collectors
2229
23- @Suppress(" DEPRECATION" , " KotlinConstantConditions " )
30+ @Suppress(" DEPRECATION" , " USELESS_IS_CHECK " )
2431object RegistryAssembly {
2532
2633 fun packBlock (block : IBlockState ): BlockArray .BlockInformation {
2734 return BlockArray .BlockInformation (ObjectLists .singleton(IBlockStateDescriptor (block)))
2835 }
2936
37+ fun packBlock (vararg blocks : IBlockState ): BlockArray .BlockInformation {
38+ return BlockArray .BlockInformation (
39+ Arrays .stream(blocks)
40+ .map { IBlockStateDescriptor (it) }
41+ .collect(Collectors .toCollection { ObjectArrayList () })
42+ )
43+ }
44+
3045 fun regAll () {
3146 regAS()
3247 regMEK()
@@ -108,7 +123,7 @@ object RegistryAssembly {
108123
109124 @Suppress(" UNCHECKED_CAST" )
110125 private fun regMEK () {
111- val reactorMachine = DynamicMachine (" " )
126+ val reactorMachine = NEWDynamicMachine (" " )
112127 if (reactorMachine is AccessorAbstractMachine ) {
113128 reactorMachine.setRL(ResourceLocation (" mek" , " reactor" ))
114129 }
@@ -157,7 +172,7 @@ object RegistryAssembly {
157172 */
158173 val poss = p as Array <Array <XY >>
159174
160- mekReactor.addBlock(0 , 0 , 0 , packBlock(reactor.blockState))
175+ mekReactor.addBlock(BlockPos . ORIGIN , packBlock(reactor.blockState))
161176
162177 mekReactor.addBlock(poss[0 ][2 ][0 ], framework)
163178 mekReactor.addBlock(poss[1 ][1 ][0 ], framework)
@@ -229,10 +244,89 @@ object RegistryAssembly {
229244 reactor,
230245 reactorMachine.setName(" tile.Reactor.name" )
231246 )
247+
248+ val thermalEvaporationMachine = NEWDynamicMachine (" " )
249+ if (thermalEvaporationMachine is AccessorAbstractMachine ) {
250+ thermalEvaporationMachine.setRL(ResourceLocation (" mek" , " thermalEvaporation" .camelToSnake()))
251+ }
252+ val thermalEvaporationArray = thermalEvaporationMachine.pattern
253+ val thermalEvaporation = NEWMachineAssemblyManager .BlockPair (MekanismBlocks .BasicBlock , 14 )
254+ val thermal = packBlock(MekanismBlocks .BasicBlock2 .defaultState)
255+ val thermalP =
256+ packBlock(MekanismBlocks .BasicBlock2 .defaultState, MekanismBlocks .BasicBlock .getStateFromMeta(15 ))
257+
258+ thermalEvaporationArray.addBlock(- 1 , - 1 , 3 , thermal)
259+ thermalEvaporationArray.addBlock(0 , - 1 , 3 , thermal)
260+ thermalEvaporationArray.addBlock(1 , - 1 , 3 , thermal)
261+ thermalEvaporationArray.addBlock(- 2 , - 1 , 3 , thermal)
262+ thermalEvaporationArray.addBlock(- 1 , - 1 , 2 , thermal)
263+ thermalEvaporationArray.addBlock(0 , - 1 , 2 , thermal)
264+ thermalEvaporationArray.addBlock(1 , - 1 , 2 , thermal)
265+ thermalEvaporationArray.addBlock(- 2 , - 1 , 2 , thermal)
266+ thermalEvaporationArray.addBlock(- 1 , - 1 , 1 , thermal)
267+ thermalEvaporationArray.addBlock(0 , - 1 , 1 , thermal)
268+ thermalEvaporationArray.addBlock(1 , - 1 , 1 , thermal)
269+ thermalEvaporationArray.addBlock(- 2 , - 1 , 1 , thermal)
270+ thermalEvaporationArray.addBlock(- 1 , - 1 , 0 , thermal)
271+ thermalEvaporationArray.addBlock(0 , - 1 , 0 , thermal)
272+ thermalEvaporationArray.addBlock(1 , - 1 , 0 , thermal)
273+ thermalEvaporationArray.addBlock(- 2 , - 1 , 0 , thermal)
274+
275+ thermalEvaporationArray.addBlock(- 1 , 0 , 0 , thermalP)
276+ thermalEvaporationArray.addBlock(BlockPos .ORIGIN , packBlock(thermalEvaporation.blockState))
277+ thermalEvaporationArray.addBlock(1 , 0 , 0 , thermalP)
278+ thermalEvaporationArray.addBlock(- 2 , 0 , 0 , thermalP)
279+ thermalEvaporationArray.addBlock(- 1 , 0 , 3 , thermalP)
280+ thermalEvaporationArray.addBlock(0 , 0 , 3 , thermalP)
281+ thermalEvaporationArray.addBlock(1 , 0 , 3 , thermalP)
282+ thermalEvaporationArray.addBlock(- 2 , 0 , 3 , thermalP)
283+ thermalEvaporationArray.addBlock(1 , 0 , 2 , thermalP)
284+ thermalEvaporationArray.addBlock(1 , 0 , 1 , thermalP)
285+ thermalEvaporationArray.addBlock(- 2 , 0 , 2 , thermalP)
286+ thermalEvaporationArray.addBlock(- 2 , 0 , 1 , thermalP)
287+
288+ val dy = DynamicPattern (" thermal" , TaggedPositionBlockArray (), TaggedPositionBlockArray (), 1 , 16 )
289+ dy.faces.add(EnumFacing .UP )
290+ dy.structureSizeOffset = dy.structureSizeOffset.add(0 , 1 , 0 )
291+
292+ val patter = dy.pattern
293+ patter.addBlock(- 1 , 1 , 0 , thermalP)
294+ patter.addBlock(0 , 1 , 0 , thermalP)
295+ patter.addBlock(1 , 1 , 0 , thermalP)
296+ patter.addBlock(- 2 , 1 , 0 , thermalP)
297+ patter.addBlock(- 1 , 1 , 3 , thermalP)
298+ patter.addBlock(0 , 1 , 3 , thermalP)
299+ patter.addBlock(1 , 1 , 3 , thermalP)
300+ patter.addBlock(- 2 , 1 , 3 , thermalP)
301+ patter.addBlock(1 , 1 , 2 , thermalP)
302+ patter.addBlock(1 , 1 , 1 , thermalP)
303+ patter.addBlock(- 2 , 1 , 2 , thermalP)
304+ patter.addBlock(- 2 , 1 , 1 , thermalP)
305+
306+ val patterEnd = dy.patternEnd
307+ patterEnd.addBlock(- 1 , 0 , 0 , thermalP)
308+ patterEnd.addBlock(BlockPos .ORIGIN , thermalP)
309+ patterEnd.addBlock(1 , 0 , 0 , thermalP)
310+ patterEnd.addBlock(- 2 , 0 , 0 , thermalP)
311+ patterEnd.addBlock(- 1 , 0 , 3 , thermalP)
312+ patterEnd.addBlock(0 , 0 , 3 , thermalP)
313+ patterEnd.addBlock(1 , 0 , 3 , thermalP)
314+ patterEnd.addBlock(- 2 , 0 , 3 , thermalP)
315+ patterEnd.addBlock(1 , 0 , 2 , thermalP)
316+ patterEnd.addBlock(1 , 0 , 1 , thermalP)
317+ patterEnd.addBlock(- 2 , 0 , 2 , thermalP)
318+ patterEnd.addBlock(- 2 , 0 , 1 , thermalP)
319+
320+ thermalEvaporationMachine.addDynamicPattern(" thermal" , dy)
321+
322+ NEWMachineAssemblyManager .setConstructors(
323+ thermalEvaporation,
324+ thermalEvaporationMachine.setName(" tile.ThermalEvaporation.name" )
325+ )
232326 }
233327
234328 private fun regBot () {
235- val terraPlateMachine = DynamicMachine (" " )
329+ val terraPlateMachine = NEWDynamicMachine (" " )
236330 if (terraPlateMachine is AccessorAbstractMachine ) {
237331 terraPlateMachine.setRL(ResourceLocation (" botania" , " terra_plate" ))
238332 }
@@ -241,7 +335,7 @@ object RegistryAssembly {
241335 val lapis = packBlock(Blocks .LAPIS_BLOCK .defaultState)
242336 val terraPlate = NEWMachineAssemblyManager .BlockPair (ModBlocks .terraPlate, 0 )
243337
244- terraplateArray.addBlock(0 , 0 , 0 , packBlock(terraPlate.blockState))
338+ terraplateArray.addBlock(BlockPos . ORIGIN , packBlock(terraPlate.blockState))
245339 terraplateArray.addBlock(0 , - 1 , 0 , stone)
246340 terraplateArray.addBlock(- 1 , - 1 , - 1 , stone)
247341 terraplateArray.addBlock(- 1 , - 1 , 1 , stone)
@@ -256,6 +350,33 @@ object RegistryAssembly {
256350 terraPlate,
257351 terraPlateMachine.setName(" tile.botania:terraPlate.name" )
258352 )
353+
354+ val alfheimportalMachine = NEWDynamicMachine (" " )
355+ if (alfheimportalMachine is AccessorAbstractMachine ) {
356+ alfheimportalMachine.setRL(ResourceLocation (" botania" , " alfheimportal" ))
357+ }
358+ val alfheimportalArray = alfheimportalMachine.pattern
359+ val wood = packBlock(ModBlocks .livingwood.defaultState)
360+ val lightwood = packBlock(ModBlocks .livingwood.getStateFromMeta(5 ))
361+ val alfheimportal = NEWMachineAssemblyManager .BlockPair (ModBlocks .alfPortal, 0 )
362+
363+ alfheimportalArray.addBlock(BlockPos .ORIGIN , packBlock(alfheimportal.blockState))
364+ alfheimportalArray.addBlock(1 , 0 , 0 , wood)
365+ alfheimportalArray.addBlock(- 1 , 0 , 0 , wood)
366+ alfheimportalArray.addBlock(2 , 1 , 0 , wood)
367+ alfheimportalArray.addBlock(- 2 , 1 , 0 , wood)
368+ alfheimportalArray.addBlock(2 , 2 , 0 , lightwood)
369+ alfheimportalArray.addBlock(- 2 , 2 , 0 , lightwood)
370+ alfheimportalArray.addBlock(2 , 3 , 0 , wood)
371+ alfheimportalArray.addBlock(- 2 , 3 , 0 , wood)
372+ alfheimportalArray.addBlock(0 , 4 , 0 , lightwood)
373+ alfheimportalArray.addBlock(1 , 4 , 0 , wood)
374+ alfheimportalArray.addBlock(- 1 , 4 , 0 , wood)
375+
376+ NEWMachineAssemblyManager .setConstructors(
377+ alfheimportal,
378+ alfheimportalMachine.setName(" tile.botania:alfheimPortal.name" )
379+ )
259380 }
260381
261382 private class XY (val x : Int , val z : Int ) {
@@ -264,8 +385,8 @@ object RegistryAssembly {
264385 }
265386 }
266387
267- private fun transformationBlockArrays (array : PatternBlockArray , name : String ): DynamicMachine {
268- val machine = DynamicMachine (" " )
388+ private fun transformationBlockArrays (array : PatternBlockArray , name : String ): NEWDynamicMachine {
389+ val machine = NEWDynamicMachine (" " )
269390 if (machine is AccessorAbstractMachine ) {
270391 machine.setRL(ResourceLocation (" astralsorcery" , name))
271392 }
@@ -277,7 +398,7 @@ object RegistryAssembly {
277398 return machine
278399 }
279400
280- private fun DynamicMachine .setName (name : String ): DynamicMachine {
401+ private fun NEWDynamicMachine .setName (name : String ): NEWDynamicMachine {
281402 this .localizedName = I18n .translateToLocal(name)
282403 return this
283404 }
0 commit comments