summaryrefslogtreecommitdiff
path: root/nbt
diff options
context:
space:
mode:
Diffstat (limited to 'nbt')
-rw-r--r--nbt/compressed.go4
-rw-r--r--nbt/nbt.go20
2 files changed, 24 insertions, 0 deletions
diff --git a/nbt/compressed.go b/nbt/compressed.go
index 3ca31f5..a16308f 100644
--- a/nbt/compressed.go
+++ b/nbt/compressed.go
@@ -8,6 +8,7 @@ import (
// Some helpers for reading / writing compressed NBT data, since NBT data is often compressed.
+// ReadGzipdNamedTag reads a gzip compressed named tag. See ReadNamedTags for more info.
func ReadGzipdNamedTag(r io.Reader) (Tag, string, error) {
decomp, err := gzip.NewReader(r)
if err != nil {
@@ -17,11 +18,13 @@ func ReadGzipdNamedTag(r io.Reader) (Tag, string, error) {
return ReadNamedTag(decomp)
}
+// WriteGzipdNamedTag writes a gzip compressed named tag. See WriteNamedTag for more info.
func WriteGzipdNamedTag(w io.Writer, name string, tag Tag) error {
comp := gzip.NewWriter(w)
return WriteNamedTag(comp, name, tag)
}
+// ReadZlibdNamedTag reads a zlib compressed named tag. See ReadNamedTags for more info.
func ReadZlibdNamedTag(r io.Reader) (Tag, string, error) {
decomp, err := zlib.NewReader(r)
if err != nil {
@@ -31,6 +34,7 @@ func ReadZlibdNamedTag(r io.Reader) (Tag, string, error) {
return ReadNamedTag(decomp)
}
+// WriteZlibdNamedTag writes a zlib compressed named tag. See WriteNamedTag for more info.
func WriteZlibdNamedTag(w io.Writer, name string, tag Tag) error {
comp := zlib.NewWriter(w)
return WriteNamedTag(comp, name, tag)
diff --git a/nbt/nbt.go b/nbt/nbt.go
index 12afb5d..fe9f7a4 100644
--- a/nbt/nbt.go
+++ b/nbt/nbt.go
@@ -1,3 +1,4 @@
+// Package nbt provides functions for reading and writing NBT encoded data.
package nbt
import (
@@ -10,11 +11,27 @@ import (
"strconv"
)
+// Tag holds the data of an NBT tag. Type is a TAG_* value.
+//
+// The type of Payload depends on Type:
+//
+// TAG_Byte -- byte
+// TAG_Short -- int16
+// TAG_Int -- int32
+// TAG_Long -- int64
+// TAG_Float -- float32
+// TAG_Double -- float64
+// TAG_Byte_Array -- []byte
+// TAG_String -- string
+// TAG_List -- TagList
+// TAG_Compound -- TagCompound
+// TAG_Int_Array -- []int32
type Tag struct {
Type TagType
Payload interface{}
}
+// TagList is the payload of a TAG_List Tag. The type of the Elems depends on Type (see docu of Tag).
type TagList struct {
Type TagType
Elems []interface{}
@@ -65,6 +82,7 @@ func (t Tag) String() string {
return s
}
+// TagCompund is the payload of a TAG_Compound.
type TagCompound map[string]Tag
func readTagData(r io.Reader, tt TagType) (interface{}, error) {
@@ -176,6 +194,7 @@ func readTagData(r io.Reader, tt TagType) (interface{}, error) {
return nil, errors.New("Unknown tag type")
}
+// ReadNamedTag reads a named Tag from an io.Reader. It returns the Tag, the tags Name and an error.
func ReadNamedTag(r io.Reader) (Tag, string, error) {
_tt, err := kagus.ReadByte(r)
if err != nil {
@@ -273,6 +292,7 @@ func writeTagData(w io.Writer, tt TagType, data interface{}) error {
return errors.New("Unknown tage type")
}
+// WriteNamedTag writes a named Tag to an io.Writer.
func WriteNamedTag(w io.Writer, name string, tag Tag) error {
if err := writeByte(w, byte(tag.Type)); err != nil {
return err