add support of the byte array with varint len.

This commit is contained in:
Tnze
2019-06-03 13:01:15 +08:00
parent 6feed6f193
commit 4a0dc34854
3 changed files with 23 additions and 18 deletions

View File

@ -76,6 +76,9 @@ type (
NBT struct {
V interface{}
}
//ByteArray is []byte with perfix VarInt as length
ByteArray []byte
)
//ReadNBytes read N bytes from bytes.Reader
@ -354,3 +357,19 @@ func (d *Double) Decode(r DecodeReader) error {
func (n NBT) Decode(r DecodeReader) error {
return nbt.NewDecoder(r).Decode(n.V)
}
// Encode a ByteArray
func (b *ByteArray) Encode() []byte {
return append(VarInt(len(*b)).Encode(), *b...)
}
// Decode a ByteArray
func (b *ByteArray) Decode(r DecodeReader) error {
var Len VarInt
if err := Len.Decode(r); err != nil {
return err
}
*b = make([]byte, Len)
_, err := r.Read(*b)
return err
}