Rename beforeDroppingItems to dropItems, and change logic
This commit is contained in:
parent
0a9e90bec6
commit
22ebdbb1eb
@ -14,6 +14,7 @@ import net.minecraft.nbt.CompoundTag
|
|||||||
import net.minecraft.nbt.NbtOps
|
import net.minecraft.nbt.NbtOps
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
import net.minecraft.network.chat.ComponentSerialization
|
import net.minecraft.network.chat.ComponentSerialization
|
||||||
|
import net.minecraft.server.level.ServerLevel
|
||||||
import net.minecraft.util.RandomSource
|
import net.minecraft.util.RandomSource
|
||||||
import net.minecraft.world.Containers
|
import net.minecraft.world.Containers
|
||||||
import net.minecraft.world.InteractionResult
|
import net.minecraft.world.InteractionResult
|
||||||
@ -259,15 +260,11 @@ open class MatteryBlock(properties: Properties = DEFAULT_PROPERTIES) : Block(pro
|
|||||||
newBlockState: BlockState,
|
newBlockState: BlockState,
|
||||||
movedByPiston: Boolean
|
movedByPiston: Boolean
|
||||||
) {
|
) {
|
||||||
if (!oldBlockState.`is`(newBlockState.block) && !level.isClientSide) {
|
if (!oldBlockState.`is`(newBlockState.block) && level is ServerLevel) {
|
||||||
val blockentity = level.getBlockEntity(blockPos)
|
val blockentity = level.getBlockEntity(blockPos)
|
||||||
|
|
||||||
if (blockentity is MatteryBlockEntity) {
|
if (blockentity is MatteryBlockEntity) {
|
||||||
blockentity.beforeDroppingItems(oldBlockState, level, blockPos, newBlockState, movedByPiston)
|
blockentity.dropItems(oldBlockState, level, blockPos, newBlockState, movedByPiston)
|
||||||
|
|
||||||
for (container in blockentity.droppableContainers)
|
|
||||||
Containers.dropContents(level, blockPos, container)
|
|
||||||
|
|
||||||
level.updateNeighbourForOutputSignal(blockPos, this)
|
level.updateNeighbourForOutputSignal(blockPos, this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import net.minecraft.nbt.CompoundTag
|
|||||||
import net.minecraft.server.level.ServerLevel
|
import net.minecraft.server.level.ServerLevel
|
||||||
import net.minecraft.server.level.ServerPlayer
|
import net.minecraft.server.level.ServerPlayer
|
||||||
import net.minecraft.world.Container
|
import net.minecraft.world.Container
|
||||||
|
import net.minecraft.world.Containers
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.level.ChunkPos
|
import net.minecraft.world.level.ChunkPos
|
||||||
import net.minecraft.world.level.Level
|
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
|
* 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 sidelessCaps = Reference2ObjectOpenHashMap<BlockCapability<*, *>, Any>()
|
||||||
private val sidedCaps = Array(RelativeSide.entries.size) {
|
private val sidedCaps = Array(RelativeSide.entries.size) {
|
||||||
Reference2ObjectOpenHashMap<BlockCapability<*, *>, ControllableCapability<*>>()
|
Reference2ObjectOpenHashMap<BlockCapability<*, *>, ControllableCapability<*>>()
|
||||||
@ -121,7 +122,11 @@ abstract class MatteryBlockEntity(p_155228_: BlockEntityType<*>, p_155229_: Bloc
|
|||||||
_neighbourChangeListeners.add(listener)
|
_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 beforeDestroyedByPlayer(level: Level, blockPos: BlockPos, blockState: BlockState, player: Player) {}
|
||||||
|
|
||||||
open fun tick() {
|
open fun tick() {
|
||||||
|
@ -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()
|
unpackLootTable()
|
||||||
|
super.dropItems(oldBlockState, level, blockPos, newBlockState, movedByPiston)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun beforeDestroyedByPlayer(level: Level, blockPos: BlockPos, blockState: BlockState, player: Player) {
|
override fun beforeDestroyedByPlayer(level: Level, blockPos: BlockPos, blockState: BlockState, player: Player) {
|
||||||
|
Loading…
Reference in New Issue
Block a user