diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt index 0fa3772af..a6843199c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt @@ -1,5 +1,8 @@ package ru.dbotthepony.mc.otm.block +import com.google.common.collect.ImmutableMap +import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap +import it.unimi.dsi.fastutil.objects.Object2ObjectFunction import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.core.particles.DustParticleOptions @@ -15,17 +18,44 @@ import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.EntityBlock import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.block.state.properties.Property import net.minecraft.world.level.material.Material import net.minecraft.world.level.material.MaterialColor import net.minecraft.world.phys.BlockHitResult +import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.entity.IRedstoneControlProvider import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState +import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom import ru.dbotthepony.mc.otm.core.math.component1 import ru.dbotthepony.mc.otm.core.math.component2 import ru.dbotthepony.mc.otm.core.math.component3 +fun Block.getShapeForEachState(properties: List>, fn: (BlockState) -> VoxelShape): Map { + val builder = ImmutableMap.Builder() + + if (properties.isEmpty()) { + val shape = fn(stateDefinition.possibleStates.first()) + + for (state in stateDefinition.possibleStates) { + builder.put(state, shape) + } + } else { + val cache = Object2ObjectArrayMap, VoxelShape>() + + for (state in stateDefinition.possibleStates) { + builder.put(state, cache.computeIfAbsent(properties.map { state[it] }, Object2ObjectFunction { fn(state) })) + } + } + + return builder.build() +} + +fun Block.getShapeForEachState(property: Property<*>, fn: (BlockState) -> VoxelShape): Map { + return getShapeForEachState(listOf(property), fn) +} + abstract class MatteryBlock @JvmOverloads constructor( properties: Properties = DEFAULT_PROPERTIES ) : Block(properties) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterBottlerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterBottlerBlock.kt index 9ff19bded..c4c189ff7 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterBottlerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterBottlerBlock.kt @@ -18,6 +18,7 @@ import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.WorkerState import ru.dbotthepony.mc.otm.block.entity.matter.MatterBottlerBlockEntity +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne import ru.dbotthepony.mc.otm.registry.MBlockEntities @@ -52,7 +53,7 @@ class MatterBottlerBlock : RotatableMatteryBlock(), EntityBlock { .setValue(SLOT_PROPERTIES[2], false) } - private val shapes = getShapeForEachState { BlockShapes.MATTER_BOTTLER.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.MATTER_BOTTLER.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterCapacitorBankBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterCapacitorBankBlock.kt index 5744a0a02..62439912a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterCapacitorBankBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterCapacitorBankBlock.kt @@ -14,6 +14,7 @@ import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.tech.BatteryBankBlock import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.matter.MatterCapacitorBankBlockEntity +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.shapes.BlockShapes @@ -36,7 +37,7 @@ class MatterCapacitorBankBlock : RotatableMatteryBlock(), EntityBlock { super.createBlockStateDefinition(builder) } - private val shapes = getShapeForEachState { BlockShapes.MATTER_CAPACITOR_BANK.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.MATTER_CAPACITOR_BANK.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterDecomposerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterDecomposerBlock.kt index 6cc72cd37..02194b695 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterDecomposerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterDecomposerBlock.kt @@ -18,6 +18,7 @@ import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.WorkerState +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne import ru.dbotthepony.mc.otm.registry.MBlockEntities @@ -46,7 +47,7 @@ class MatterDecomposerBlock : RotatableMatteryBlock(), EntityBlock { builder.add(WorkerState.WORKER_STATE) } - private val shapes = getShapeForEachState { BlockShapes.MATTER_DECOMPOSER.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.MATTER_DECOMPOSER.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterRecyclerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterRecyclerBlock.kt index ff528be42..b74db3c47 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterRecyclerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterRecyclerBlock.kt @@ -16,6 +16,7 @@ import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.matter.MatterRecyclerBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne import ru.dbotthepony.mc.otm.registry.MBlockEntities @@ -42,7 +43,7 @@ class MatterRecyclerBlock : RotatableMatteryBlock(), EntityBlock { return BlockEntityTicker { _, _, _, tile -> if (tile is MatterRecyclerBlockEntity) tile.tick() } } - private val shapes = getShapeForEachState { BlockShapes.MATTER_RECYCLER.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.MATTER_RECYCLER.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReplicatorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReplicatorBlock.kt index cdbc0338f..2bdd286e8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReplicatorBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReplicatorBlock.kt @@ -16,6 +16,7 @@ import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.matter.MatterReplicatorBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne import ru.dbotthepony.mc.otm.registry.MBlockEntities @@ -42,7 +43,7 @@ class MatterReplicatorBlock : RotatableMatteryBlock(), EntityBlock { builder.add(WorkerState.WORKER_STATE) } - private val shapes = getShapeForEachState { BlockShapes.MATTER_REPLICATOR.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.MATTER_REPLICATOR.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterScannerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterScannerBlock.kt index 8122e0499..b810622e6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterScannerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterScannerBlock.kt @@ -16,6 +16,7 @@ import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.matter.MatterScannerBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne import ru.dbotthepony.mc.otm.registry.MBlockEntities @@ -42,7 +43,7 @@ class MatterScannerBlock : RotatableMatteryBlock(), EntityBlock { builder.add(WorkerState.WORKER_STATE) } - private val shapes = getShapeForEachState { BlockShapes.MATTER_SCANNER.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.MATTER_SCANNER.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/PatternStorageBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/PatternStorageBlock.kt index 838e134b2..7764393b5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/PatternStorageBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/PatternStorageBlock.kt @@ -16,6 +16,7 @@ import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.matter.PatternStorageBlockEntity +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne import ru.dbotthepony.mc.otm.shapes.BlockShapes @@ -58,7 +59,7 @@ class PatternStorageBlock : RotatableMatteryBlock(), EntityBlock { super.onRemove(oldBlockState, level, blockPos, newBlockState, movedByPiston) } - private val shapes = getShapeForEachState { BlockShapes.PATTERN_STORAGE.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.PATTERN_STORAGE.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveRackBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveRackBlock.kt index 8025cc3e0..6d7897ee7 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveRackBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveRackBlock.kt @@ -17,6 +17,7 @@ import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.storage.DriveRackBlockEntity +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne @@ -50,7 +51,7 @@ class DriveRackBlock : RotatableMatteryBlock(), EntityBlock { MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) } - private val shapes = getShapeForEachState { BlockShapes.DRIVE_RACK.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.DRIVE_RACK.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt index e42de611d..a0294517c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt @@ -22,6 +22,7 @@ import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.storage.DriveViewerBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne @@ -65,7 +66,7 @@ class DriveViewerBlock : RotatableMatteryBlock(), EntityBlock { return super.getStateForPlacement(context)!!.setValue(DRIVE_PRESENT, false) } - private val shapes = getShapeForEachState { BlockShapes.DRIVE_VIEWER.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.DRIVE_VIEWER.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/ItemMonitorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/ItemMonitorBlock.kt index a89ed8983..9821eae26 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/ItemMonitorBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/ItemMonitorBlock.kt @@ -17,6 +17,7 @@ import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.storage.ItemMonitorBlockEntity +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne @@ -50,7 +51,7 @@ class ItemMonitorBlock : RotatableMatteryBlock(), EntityBlock { MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) } - private val shapes = getShapeForEachState { BlockShapes.ITEM_MONITOR.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.ITEM_MONITOR.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt index d3b4810d8..ff739647c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt @@ -17,6 +17,7 @@ import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.storage.StoragePowerSupplierBlockEntity +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne @@ -50,7 +51,7 @@ class StoragePowerSupplierBlock : RotatableMatteryBlock(), EntityBlock { MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) } - private val shapes = getShapeForEachState { BlockShapes.STORAGE_POWER_SUPPLIER.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.STORAGE_POWER_SUPPLIER.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/BatteryBankBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/BatteryBankBlock.kt index b0d6f9df3..5c6fb49e6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/BatteryBankBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/BatteryBankBlock.kt @@ -19,6 +19,7 @@ import net.minecraft.world.level.block.Block import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.oncePre import ru.dbotthepony.mc.otm.registry.MBlockEntities @@ -56,7 +57,7 @@ class BatteryBankBlock : RotatableMatteryBlock(), EntityBlock { return BatteryBankBlockEntity(blockPos, blockState) } - private val shapes = getShapeForEachState { BlockShapes.BATTERY_BANK.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.BATTERY_BANK.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt index 53c02ebcc..bdd1f6137 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt @@ -23,6 +23,7 @@ import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.tech.ChemicalGeneratorBlockEntity import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.capability.energy.GeneratorEnergyStorage import ru.dbotthepony.mc.otm.capability.energy.ItemEnergyStorageImpl import ru.dbotthepony.mc.otm.container.MatteryContainer @@ -96,7 +97,7 @@ class ChemicalGeneratorBlock : RotatableMatteryBlock(), EntityBlock { } } - private val shapes = getShapeForEachState { BlockShapes.CHEMICAL_GENERATOR.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.CHEMICAL_GENERATOR.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt index 4287fb226..a525a00ba 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt @@ -15,6 +15,7 @@ import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.tech.EnergyServoBlockEntity +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne import ru.dbotthepony.mc.otm.registry.MBlockEntities @@ -37,7 +38,7 @@ class EnergyServoBlock : RotatableMatteryBlock(Properties.of(Material.METAL, Mat return null } - private val shapes = getShapeForEachState { BlockShapes.ENERGY_SERVO.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.ENERGY_SERVO.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PhantomAttractorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PhantomAttractorBlock.kt index 37ea605c0..d0081b8ab 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PhantomAttractorBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PhantomAttractorBlock.kt @@ -26,6 +26,7 @@ import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import net.minecraftforge.common.ForgeHooks import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne import ru.dbotthepony.mc.otm.core.math.minus @@ -87,7 +88,7 @@ class PhantomAttractorBlock : RotatableMatteryBlock(Properties.of(Material.METAL } } - private val shapes = getShapeForEachState { + private val shapes = getShapeForEachState(rotationProperty) { val shape = when (it[BlockStateProperties.DOUBLE_BLOCK_HALF]!!) { DoubleBlockHalf.UPPER -> BlockShapes.PHANTOM_ATTRACTOR_TOP.moveY(-1.0) DoubleBlockHalf.LOWER -> BlockShapes.PHANTOM_ATTRACTOR_BOTTOM diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PlatePressBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PlatePressBlock.kt index ab7427e98..f752d0df0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PlatePressBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PlatePressBlock.kt @@ -20,6 +20,7 @@ import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.tech.PlatePressBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.facingOne import ru.dbotthepony.mc.otm.registry.MBlockEntities @@ -56,7 +57,7 @@ class PlatePressBlock(properties: Properties = DEFAULT_PROPERTIES) : RotatableMa MatteryWorkerBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) } - private val shapes = getShapeForEachState { BlockShapes.PLATE_PRESS_IDLE.rotateFromSouth(it[rotationProperty]).computeShape() } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.PLATE_PRESS_IDLE.rotateFromSouth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") override fun getShape(