32 lines
739 B
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
|
|
}
|