Skip to content

NBTHolder

interface NBTHolder

An interface for managing NBT-backed fields on block entities, item stacks, or fluid stacks.

NBTHolder provides a property-delegation API that serializes field values to/from a CompoundTag using kotlinx.serialization. Each delegated field is keyed by its Kotlin property name.

Usage on a block entity

class MyBlockEntity(pos, state) : NBTBlockEntity(pos, state) {
    var count by nbt.intField()
    var label by nbt.stringField { "default" }
    val items by nbt.itemField(9)   // 9-slot inventory
}

Obtain instances via NBTHolder.create, NBTHolder.item, or NBTHolder.fluid.

Inheritors

Types

Companion

object Companion

Functions

booleanField

open fun booleanField(default: () -> Boolean = { false }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Boolean>>

byteField

open fun byteField(default: () -> Byte = { 0 }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Byte>>

doubleField

open fun doubleField(default: () -> Double = { 0.0 }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Double>>

field

abstract 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>>

floatField

open fun floatField(default: () -> Float = { 0.0f }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Float>>

getSyncTag

abstract fun getSyncTag(): CompoundTag

intField

open fun intField(default: () -> Int = { 0 }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Int>>

itemField

loadFromTag

abstract fun loadFromTag(compoundTag: CompoundTag)

longField

open fun longField(default: () -> Long = { 0 }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Long>>

saveToTag

abstract fun saveToTag(compoundTag: CompoundTag)

shortField

open fun shortField(default: () -> Short = { 0 }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, Short>>

stringField

open fun stringField(default: () -> String = { "" }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, String>>

ubyteField

open fun ubyteField(default: () -> UByte = { 0u }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, UByte>>

uintField

open fun uintField(default: () -> UInt = { 0u }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, UInt>>

ulongField

open fun ulongField(default: () -> ULong = { 0u }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, ULong>>

ushortField

open fun ushortField(default: () -> UShort = { 0u }): PropertyDelegateProvider<Any?, ReadWriteProperty<Any?, UShort>>