update to 1.16 and removes usage of "io/ioutil"

This commit is contained in:
Tnze
2021-02-25 12:43:39 +08:00
parent 178c34eacb
commit 9b6f640843
10 changed files with 34 additions and 21 deletions

View File

@ -101,21 +101,21 @@ func UnCompress(data []byte) (*Packet, error) {
return nil, err
}
uncompressData := make([]byte, sizeUncompressed)
uncompressedData := make([]byte, sizeUncompressed)
if sizeUncompressed != 0 { // != 0 means compressed, let's decompress
r, err := zlib.NewReader(reader)
if err != nil {
return nil, fmt.Errorf("decompress fail: %v", err)
}
defer r.Close()
_, err = io.ReadFull(r, uncompressData)
_, err = io.ReadFull(r, uncompressedData)
if err != nil {
return nil, fmt.Errorf("decompress fail: %v", err)
}
} else {
uncompressData = data[1:]
uncompressedData = data[1:]
}
buf := bytes.NewBuffer(uncompressData)
buf := bytes.NewBuffer(uncompressedData)
var packetID VarInt
if err := packetID.Decode(buf); err != nil {
return nil, fmt.Errorf("read packet id fail: %v", err)
@ -130,7 +130,11 @@ func UnCompress(data []byte) (*Packet, error) {
func Compress(data []byte) []byte {
var b bytes.Buffer
w := zlib.NewWriter(&b)
w.Write(data)
w.Close()
if _, err := w.Write(data); err != nil {
panic(err)
}
if err := w.Close(); err != nil {
panic(err)
}
return b.Bytes()
}

View File

@ -1,6 +1,7 @@
package packet
import (
"bytes"
"errors"
"io"
"math"
@ -76,6 +77,7 @@ type (
UUID uuid.UUID
//NBT encode a value as Named Binary Tag
//Tips: define your own struct and implement pk.Field for better performance
NBT struct {
V interface{}
}
@ -407,6 +409,15 @@ func (d *Double) Decode(r DecodeReader) error {
return nil
}
// Encode a NBT
func (n NBT) Encode() []byte {
var buf bytes.Buffer
if err := nbt.NewEncoder(&buf).Encode(n.V); err != nil {
panic(err)
}
return buf.Bytes()
}
// Decode a NBT
func (n NBT) Decode(r DecodeReader) error {
return nbt.NewDecoder(r).Decode(n.V)

View File

@ -1,7 +1,7 @@
package ptypes
import (
"io/ioutil"
"io"
"github.com/Tnze/go-mc/chat"
"github.com/Tnze/go-mc/data/packetid"
@ -64,7 +64,7 @@ func (p PluginData) Encode() []byte {
}
func (p *PluginData) Decode(r pk.DecodeReader) error {
d, err := ioutil.ReadAll(r)
d, err := io.ReadAll(r)
if err != nil {
return err
}