From 22ebdbb1eb9ec9c2cbdd6db7f2f3c6be53b4a212 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sat, 22 Mar 2025 19:57:42 +0700 Subject: [PATCH] Rename beforeDroppingItems to dropItems, and change logic --- .../kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt | 9 +++------ .../mc/otm/block/entity/MatteryBlockEntity.kt | 9 +++++++-- .../otm/block/entity/decorative/CargoCrateBlockEntity.kt | 9 ++++++++- 3 files changed, 18 insertions(+), 9 deletions(-) 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 7a702d9f2..cc5bd8684 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt @@ -14,6 +14,7 @@ import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.NbtOps import net.minecraft.network.chat.Component import net.minecraft.network.chat.ComponentSerialization +import net.minecraft.server.level.ServerLevel import net.minecraft.util.RandomSource import net.minecraft.world.Containers import net.minecraft.world.InteractionResult @@ -259,15 +260,11 @@ open class MatteryBlock(properties: Properties = DEFAULT_PROPERTIES) : Block(pro newBlockState: BlockState, movedByPiston: Boolean ) { - if (!oldBlockState.`is`(newBlockState.block) && !level.isClientSide) { + if (!oldBlockState.`is`(newBlockState.block) && level is ServerLevel) { val blockentity = level.getBlockEntity(blockPos) if (blockentity is MatteryBlockEntity) { - blockentity.beforeDroppingItems(oldBlockState, level, blockPos, newBlockState, movedByPiston) - - for (container in blockentity.droppableContainers) - Containers.dropContents(level, blockPos, container) - + blockentity.dropItems(oldBlockState, level, blockPos, newBlockState, movedByPiston) level.updateNeighbourForOutputSignal(blockPos, this) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt index 49fb486f3..4a4d90f37 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt @@ -17,6 +17,7 @@ import net.minecraft.nbt.CompoundTag import net.minecraft.server.level.ServerLevel import net.minecraft.server.level.ServerPlayer import net.minecraft.world.Container +import net.minecraft.world.Containers import net.minecraft.world.entity.player.Player import net.minecraft.world.level.ChunkPos import net.minecraft.world.level.Level @@ -70,7 +71,7 @@ import kotlin.collections.ArrayList /** * Absolute barebone (lol) block entity class in Overdrive that Matters, providing bare minimum (lulmao, minecraft engine) functionality */ -abstract class MatteryBlockEntity(p_155228_: BlockEntityType<*>, p_155229_: BlockPos, p_155230_: BlockState) : BlockEntity(p_155228_, p_155229_, p_155230_), INeighbourChangeListener { +abstract class MatteryBlockEntity(type: BlockEntityType<*>, pos: BlockPos, state: BlockState) : BlockEntity(type, pos, state), INeighbourChangeListener { private val sidelessCaps = Reference2ObjectOpenHashMap, Any>() private val sidedCaps = Array(RelativeSide.entries.size) { Reference2ObjectOpenHashMap, ControllableCapability<*>>() @@ -121,7 +122,11 @@ abstract class MatteryBlockEntity(p_155228_: BlockEntityType<*>, p_155229_: Bloc _neighbourChangeListeners.add(listener) } - open fun beforeDroppingItems(oldBlockState: BlockState, level: Level, blockPos: BlockPos, newBlockState: BlockState, movedByPiston: Boolean) {} + open fun dropItems(oldBlockState: BlockState, level: ServerLevel, blockPos: BlockPos, newBlockState: BlockState, movedByPiston: Boolean) { + for (container in droppableContainers) + Containers.dropContents(level, blockPos, container) + } + open fun beforeDestroyedByPlayer(level: Level, blockPos: BlockPos, blockState: BlockState, player: Player) {} open fun tick() { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/CargoCrateBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/CargoCrateBlockEntity.kt index e960ffe5c..47e7d4ca6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/CargoCrateBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/CargoCrateBlockEntity.kt @@ -55,8 +55,15 @@ class CargoCrateBlockEntity( } }) - override fun beforeDroppingItems(oldBlockState: BlockState, level: Level, blockPos: BlockPos, newBlockState: BlockState, movedByPiston: Boolean) { + override fun dropItems( + oldBlockState: BlockState, + level: ServerLevel, + blockPos: BlockPos, + newBlockState: BlockState, + movedByPiston: Boolean + ) { unpackLootTable() + super.dropItems(oldBlockState, level, blockPos, newBlockState, movedByPiston) } override fun beforeDestroyedByPlayer(level: Level, blockPos: BlockPos, blockState: BlockState, player: Player) {