bedrocktool/utils/nbtconv/item.go

32 lines
739 B
Go

package nbtconv
import (
"github.com/df-mc/dragonfly/server/item/inventory"
)
// InvFromNBT decodes the data of an NBT slice into the inventory passed.
func InvFromNBT(inv *inventory.Inventory, items []any) {
for _, itemData := range items {
data, _ := itemData.(map[string]any)
it := Item(data, nil)
if it.Empty() {
continue
}
_ = inv.SetItem(int(Uint8(data, "Slot")), it)
}
}
// InvToNBT encodes an inventory to a data slice which may be encoded as NBT.
func InvToNBT(inv *inventory.Inventory) []map[string]any {
var items []map[string]any
for index, i := range inv.Slots() {
if i.Empty() {
continue
}
data := WriteItem(i, true)
data["Slot"] = byte(index)
items = append(items, data)
}
return items
}