1.6 KiB
1.6 KiB
NBT 
This package implement the Named Binary Tag format of Minecraft.
The API is very similar to the standard library encoding/json
. If you (high probability) have used that, it is easy to
use this.
Basic Usage
For the following NBT tag:
TAG_Compound("hello world") {
TAG_String("name"): "Bananrama"
}
To read and write would look like:
package main
import "github.com/Tnze/go-mc/nbt"
type Compound struct {
Name string `nbt:"name"` // The field must be started with the capital letter
}
func main() {
banana := Compound{Name: "Bananrama"}
data, _ := nbt.Marshal(banana)
var rama Compound
_ = nbt.Unmarshal(data, &rama)
}
Struct field tags
There are two tags supported:
- nbt
- nbt_type
The nbt
tag is used to change the name of the NBT Tag field, whereas the nbt_type
tag is used to enforce a certain NBT Tag type when it is ambiguous.
For example:
type Compound struct {
LongArray []int64
LongList []int64 `nbt_type:"list"` // forces a long list instead of a long array
}
Stringified NBT
You can transform SNBT string into binary NBT by using go-mc, which could be useful when parsing command, but the reverse conversion is not supported at the moment.
package main
import (
"bytes"
"github.com/Tnze/go-mc/nbt"
)
func main() {
var buf bytes.Buffer
e := nbt.NewEncoder(&buf)
err := e.WriteSNBT(`{Tnze: 1, 'sp ace': [I;1,2,3]}`)
if err != nil {
panic(err)
}
}