@@ -36,6 +36,7 @@ import net.minecraft.block.state.IBlockState
3636import net.minecraft.init.Blocks
3737import net.minecraft.init.Items
3838import net.minecraft.item.ItemStack
39+ import net.minecraft.nbt.NBTTagCompound
3940import net.minecraft.util.EnumFacing
4041import net.minecraft.util.ResourceLocation
4142import net.minecraft.util.math.BlockPos
@@ -126,27 +127,8 @@ object MMAltar : MachineSpecial {
126127 if (state.block.getMetaFromState(state) == 3 ) ++ sacrifice
127128 }
128129 }
129- var level = altar.getLevel().toByte()
130- var upgrade: Byte = 0
131-
132- ctrl.foundMachine?.let { it1 ->
133- for (replacement in it1.multiBlockModifiers) {
134- if (replacement.matches(ctrl)) {
135- when (replacement.modifierName) {
136- " upgrade1" -> ++ upgrade
137- " upgrade2" -> ++ upgrade
138- " upgrade3" -> {
139- upgrade = (2 .toByte() + upgrade).toByte()
140- ++ level
141- }
142- }
143- }
144- }
145- }
146-
147130 nbt.setShort(" sacrifice" , sacrifice)
148- nbt.setByte(" level" , level)
149- nbt.setByte(" upgrade" , upgrade)
131+ finishCheck(altar, ctrl, nbt)
150132 }
151133 machine.addMachineEventHandler(MachineTickEvent ::class .java) {
152134 val ctrl = it.controller
@@ -156,26 +138,7 @@ object MMAltar : MachineSpecial {
156138 val nbt = ctrl.customDataTag
157139 val altar = ctrl.getAltar()
158140
159- var level = altar.getLevel().toByte()
160- var upgrade: Byte = 0
161-
162- ctrl.foundMachine?.let { it1 ->
163- for (replacement in it1.multiBlockModifiers) {
164- if (replacement.matches(ctrl)) {
165- when (replacement.modifierName) {
166- " upgrade1" -> ++ upgrade
167- " upgrade2" -> ++ upgrade
168- " upgrade3" -> {
169- upgrade = (2 .toByte() + upgrade).toByte()
170- ++ level
171- }
172- }
173- }
174- }
175- }
176-
177- nbt.setByte(" level" , level)
178- nbt.setByte(" upgrade" , upgrade)
141+ finishCheck(altar, ctrl, nbt)
179142 }
180143 machine.multiBlockModifiers.add(
181144 MultiBlockModifierReplacement (
@@ -353,6 +316,33 @@ object MMAltar : MachineSpecial {
353316 if (NovaEngineeringCore .proxy.isClient) clientInit(machine)
354317 }
355318
319+ private fun finishCheck (
320+ altar : TileAltar ? ,
321+ ctrl : TileMultiblockMachineController ,
322+ nbt : NBTTagCompound
323+ ) {
324+ var level = altar.getLevel().toByte()
325+ var upgrade: Byte = 0
326+
327+ ctrl.foundMachine?.let { it1 ->
328+ for (replacement in it1.multiBlockModifiers) {
329+ if (replacement.matches(ctrl)) {
330+ when (replacement.modifierName) {
331+ " upgrade1" -> ++ upgrade
332+ " upgrade2" -> ++ upgrade
333+ " upgrade3" -> {
334+ upgrade = (2 .toByte() + upgrade).toByte()
335+ ++ level
336+ }
337+ }
338+ }
339+ }
340+ }
341+
342+ nbt.setByte(" level" , level)
343+ nbt.setByte(" upgrade" , upgrade)
344+ }
345+
356346 @SideOnly(Side .CLIENT )
357347 private fun clientInit (machine : DynamicMachine ) {
358348 machine.addMachineEventHandler(ControllerGUIRenderEvent ::class .java) {
@@ -365,25 +355,7 @@ object MMAltar : MachineSpecial {
365355 val now = altar.getNowBlood()
366356 val max = altar.getMaxBlood()
367357
368- var check = nbt.hasKey(" pos" )
369- if (check) {
370- val p = nbt.getIntArray(" pos" )
371- val pos = BlockPos .PooledMutableBlockPos .retain(
372- p[0 ], p[1 ], p[2 ]
373- )
374- val t = ctrl.world.getTileEntity(pos)
375- pos.release()
376- if (! (t is IMasterRitualStone && t.currentRitual is RitualWellOfSuffering )) {
377- nbt.removeTag(" pos" )
378- check = ergodicPos(ctrl, ctrl.pos) { x, y, z ->
379- nbt.setIntArray(" pos" , intArrayOf(x, y, z))
380- }
381- }
382- } else {
383- check = ergodicPos(ctrl, ctrl.pos) { x, y, z ->
384- nbt.setIntArray(" pos" , intArrayOf(x, y, z))
385- }
386- }
358+ val check = checkAlter(nbt, ctrl)
387359
388360 val info = asList(
389361 getText(" gui.mm_altar.tooltip.0" , now, max),
@@ -400,6 +372,31 @@ object MMAltar : MachineSpecial {
400372 }
401373 }
402374
375+ fun checkAlter (
376+ nbt : NBTTagCompound ,
377+ ctrl : TileMultiblockMachineController
378+ ): Boolean {
379+ if (nbt.hasKey(" pos" )) {
380+ val p = nbt.getIntArray(" pos" )
381+ val pos = BlockPos .PooledMutableBlockPos .retain(
382+ p[0 ], p[1 ], p[2 ]
383+ )
384+ val t = ctrl.world.getTileEntity(pos)
385+ pos.release()
386+ if (! (t is IMasterRitualStone && t.currentRitual is RitualWellOfSuffering )) {
387+ nbt.removeTag(" pos" )
388+ return ergodicPos(ctrl, ctrl.pos) { x, y, z ->
389+ nbt.setIntArray(" pos" , intArrayOf(x, y, z))
390+ }
391+ }
392+ } else {
393+ return ergodicPos(ctrl, ctrl.pos) { x, y, z ->
394+ nbt.setIntArray(" pos" , intArrayOf(x, y, z))
395+ }
396+ }
397+ return false
398+ }
399+
403400 override fun getRegistryName (): ResourceLocation {
404401 return REGISTRY_NAME
405402 }
@@ -577,7 +574,7 @@ object MMAltar : MachineSpecial {
577574 return min(max(a, min), max)
578575 }
579576
580- inline fun ergodicPos (
577+ private inline fun ergodicPos (
581578 ctrl : TileMultiblockMachineController ,
582579 pos : BlockPos ,
583580 run : (x: Int , y: Int , z: Int ) -> Unit
0 commit comments