Skip to content

NBTBlockEntity

abstract class NBTBlockEntity(
    type: BlockEntityType<*>, 
    pos: BlockPos, 
    blockState: BlockState
) : BlockEntity, NBTHolder

A BlockEntity base class that automatically persists fields declared with NBTHolder delegates to and from the block entity's CompoundTag.

Subclass this and declare fields using the NBTHolder delegation API:

class MyBlockEntity(pos: BlockPos, state: BlockState)
    : NBTBlockEntity(MY_TYPE, pos, state) {

    var energy by nbt.intField()
    var label  by nbt.stringField { "default" }
    val items  by nbt.itemField(9)
}

Saving and loading are handled automatically via saveAdditional and loadAdditional. Call sendUpdate to push the block entity state to tracking clients.

Constructors

NBTBlockEntity

constructor(
    type: BlockEntityType<*>, 
    pos: BlockPos, 
    blockState: BlockState
)

Properties

blockPos

open val blockPos: BlockPos?

blockState

open var blockState: BlockState?

isRemoved

open val isRemoved: Boolean

level

@get:



Nullable



open var level: Level?

type

open val type: BlockEntityType<*>?

updatePacket

open override val updatePacket: Packet<ClientGamePacketListener>?

Functions

applyComponents

fun applyComponents(components: DataComponentMap?, patch: DataComponentPatch?)

applyComponentsFromItemStack

fun applyComponentsFromItemStack(stack: ItemStack?)

booleanField

open override fun booleanField(default: () -> Boolean): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Boolean>>

byteField

open override fun byteField(default: () -> Byte): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Byte>>

clearRemoved

open fun clearRemoved()

collectComponents

fun collectComponents(): DataComponentMap?

components

open fun components(): DataComponentMap?

doubleField

open override fun doubleField(default: () -> Double): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Double>>

field

open override fun <T> field(serializer: KSerializer<T>, default: () -> T): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, T>>

field

inline fun <T> NBTHolder.field(noinline default: () -> T): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, T>>

fillCrashReportCategory

open fun fillCrashReportCategory(reportCategory: CrashReportCategory?)

floatField

open override fun floatField(default: () -> Float): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Float>>

getSyncTag

open override fun getSyncTag(): CompoundTag

getUpdatePacket

open override fun getUpdatePacket(): Packet<ClientGamePacketListener>?

getUpdateTag

open override fun getUpdateTag(provider: HolderLookup.Provider): CompoundTag

hasLevel

open fun hasLevel(): Boolean

intField

open override fun intField(default: () -> Int): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Int>>

isValidBlockState

open fun isValidBlockState(blockState: BlockState?): Boolean

itemField

loadCustomOnly

fun loadCustomOnly(tag: CompoundTag?, registries: HolderLookup.Provider?)

loadFromTag

open override fun loadFromTag(compoundTag: CompoundTag)

loadWithComponents

fun loadWithComponents(tag: CompoundTag?, registries: HolderLookup.Provider?)

longField

open override fun longField(default: () -> Long): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Long>>

onlyOpCanSetNbt

open fun onlyOpCanSetNbt(): Boolean

removeComponentsFromTag

open fun removeComponentsFromTag(tag: CompoundTag?)

saveCustomAndMetadata

fun saveCustomAndMetadata(registries: HolderLookup.Provider?): CompoundTag?

saveCustomOnly

fun saveCustomOnly(registries: HolderLookup.Provider?): CompoundTag?

saveToItem

open fun saveToItem(stack: ItemStack?, registries: HolderLookup.Provider?)

saveToTag

open override fun saveToTag(compoundTag: CompoundTag)

saveWithFullMetadata

fun saveWithFullMetadata(registries: HolderLookup.Provider?): CompoundTag?

saveWithId

fun saveWithId(registries: HolderLookup.Provider?): CompoundTag?

saveWithoutMetadata

fun saveWithoutMetadata(registries: HolderLookup.Provider?): CompoundTag?

setChanged

open fun setChanged()

setComponents

open fun setComponents(components: DataComponentMap?)

setRemoved

open fun setRemoved()

shortField

open override fun shortField(default: () -> Short): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Short>>

stringField

open override fun stringField(default: () -> String): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, String>>

triggerEvent

open fun triggerEvent(id: Int, type: Int): Boolean

ubyteField

open override fun ubyteField(default: () -> UByte): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, UByte>>

uintField

open override fun uintField(default: () -> UInt): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, UInt>>

ulongField

open override fun ulongField(default: () -> ULong): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, ULong>>

ushortField

open override fun ushortField(default: () -> UShort): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, UShort>>