diff --git a/cmd/substitute_server/substitute.go b/cmd/substitute_server/substitute.go index d669aad..4ee0366 100644 --- a/cmd/substitute_server/substitute.go +++ b/cmd/substitute_server/substitute.go @@ -377,8 +377,8 @@ func (c *Client) encryptionResponse() ([]byte, []byte, error) { } var ( - SharedSecret ByteArray - VerifyToken ByteArray + SharedSecret pk.ByteArray + VerifyToken pk.ByteArray ) if err := p.Scan(&SharedSecret, &VerifyToken); err != nil { return nil, nil, err @@ -386,20 +386,6 @@ func (c *Client) encryptionResponse() ([]byte, []byte, error) { return SharedSecret, VerifyToken, nil } -//ByteArray is []byte with perfix VarInt as length -type ByteArray []byte - -// Decode a ByteArray -func (b *ByteArray) Decode(r pk.DecodeReader) error { - var Len pk.VarInt - if err := Len.Decode(r); err != nil { - return err - } - *b = make([]byte, Len) - _, err := r.Read(*b) - return err -} - type authResp struct { ID, Name string Properties [1]struct { diff --git a/net/packet/packet_test.go b/net/packet/packet_test.go index 63a0ab0..e3fd953 100644 --- a/net/packet/packet_test.go +++ b/net/packet/packet_test.go @@ -19,7 +19,7 @@ var PackedVarInts = [][]byte{ []byte{0x80, 0x80, 0x80, 0x80, 0x08}, } -func TestPackInt(t *testing.T) { +func TestPackVarInt(t *testing.T) { for i, v := range VarInts { p := v.Encode() if !bytes.Equal(p, PackedVarInts[i]) { @@ -27,7 +27,7 @@ func TestPackInt(t *testing.T) { } } } -func TestUnpackInt(t *testing.T) { +func TestUnpackVarInt(t *testing.T) { for i, v := range PackedVarInts { var vi VarInt if err := vi.Decode(bytes.NewReader(v)); err != nil { diff --git a/net/packet/types.go b/net/packet/types.go index d3e583f..3dcdeed 100644 --- a/net/packet/types.go +++ b/net/packet/types.go @@ -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 +}