#Saving Inventory Using Persistent State [SOLVED]

4 messages · Page 1 of 1 (latest)

grand pulsar
#

the class I use for saving data:

import net.minecraft.entity.player.PlayerInventory
import net.minecraft.nbt.NbtCompound
import net.minecraft.nbt.NbtElement
import net.minecraft.nbt.NbtList
import net.minecraft.registry.RegistryWrapper.WrapperLookup
import net.minecraft.server.MinecraftServer
import net.minecraft.world.PersistentState
import net.minecraft.world.World

class SaveData : PersistentState() {
    var inventory : PlayerInventory = PlayerInventory(null)
    override fun writeNbt(nbt: NbtCompound?, registries: WrapperLookup?): NbtCompound {
        nbt!!.put("duel.inventory", inventory.writeNbt(NbtList()))
        return nbt
    }
    companion object {
        fun createFromNbt(tag: NbtCompound, registryLookup: WrapperLookup?): SaveData {
            val state = SaveData()
            val nbtList: NbtList = tag.getList("duel.inventory", NbtElement.COMPOUND_TYPE.toInt())
            state.inventory.readNbt(nbtList)
            return state
        }
        private val type = Type(
            { SaveData() },
            { tag: NbtCompound, registryLookup: WrapperLookup? ->
                createFromNbt(
                    tag,
                    registryLookup
                )
            },
            null
        )
        fun getServerState(server: MinecraftServer): SaveData {
            val persistentStateManager = server.getWorld(World.OVERWORLD)!!.persistentStateManager
            val state = persistentStateManager.getOrCreate(type,"duel")
            state.markDirty()
            return state
        }
    }
}
#

the problem is with the variable inventory
it seems that it can't be Playerinventory(null)

#
    at knot//net.minecraft.entity.player.PlayerInventory.writeNbt(PlayerInventory.java:389)
    at knot//SaveData.writeNbt(SaveData.kt:14)```
#

What should I do?