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¶
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¶
intField¶
open override fun intField(default: () -> Int): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Int>>
isValidBlockState¶
open fun isValidBlockState(blockState: BlockState?): Boolean
itemField¶
open override fun itemField(size: Int): PropertyDelegateProvider<Any?, ReadOnlyProperty<Any?, ArchieItemStorage>>
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>>