Rename beforeDroppingItems to dropItems, and change logic

This commit is contained in:
DBotThePony 2025-03-22 19:57:42 +07:00
parent 0a9e90bec6
commit 22ebdbb1eb
Signed by: DBot
GPG Key ID: DCC23B5715498507
3 changed files with 18 additions and 9 deletions

View File

@ -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)
}
}

View File

@ -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<BlockCapability<*, *>, Any>()
private val sidedCaps = Array(RelativeSide.entries.size) {
Reference2ObjectOpenHashMap<BlockCapability<*, *>, 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() {

View File

@ -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) {