From 9b6f6408430ebe5a8563cb48168672b6fff9f5fe Mon Sep 17 00:00:00 2001 From: Tnze Date: Thu, 25 Feb 2021 12:43:39 +0800 Subject: [PATCH] update to 1.16 and removes usage of "io/ioutil" --- bot/login.go | 4 ++-- cmd/mcadump/mcadump.go | 3 +-- go.mod | 2 +- nbt/nbt_test.go | 4 ++-- nbt/read.go | 3 +-- net/packet/packet.go | 16 ++++++++++------ net/packet/types.go | 11 +++++++++++ net/ptypes/misc.go | 4 ++-- realms/mco.go | 4 ++-- yggdrasil/validate.go | 4 ++-- 10 files changed, 34 insertions(+), 21 deletions(-) diff --git a/bot/login.go b/bot/login.go index 3e8c6b1..a2564f8 100644 --- a/bot/login.go +++ b/bot/login.go @@ -10,7 +10,7 @@ import ( "crypto/x509" "encoding/json" "fmt" - "io/ioutil" + "io" "net/http" "strings" @@ -176,7 +176,7 @@ func loginAuth(AsTk, name, UUID string, shareSecret []byte, er encryptionRequest } defer resp.Body.Close() - body, _ := ioutil.ReadAll(resp.Body) + body, _ := io.ReadAll(resp.Body) if resp.Status != "204 No Content" { return fmt.Errorf("auth fail: %s", string(body)) } diff --git a/cmd/mcadump/mcadump.go b/cmd/mcadump/mcadump.go index ee96be1..6132ad8 100644 --- a/cmd/mcadump/mcadump.go +++ b/cmd/mcadump/mcadump.go @@ -7,7 +7,6 @@ import ( "flag" "fmt" "io" - "io/ioutil" "os" "path/filepath" @@ -117,7 +116,7 @@ func pack(f, o string) { checkerr(err) defer r.Close() - mcc, err := ioutil.ReadFile(f) + mcc, err := os.ReadFile(f) checkerr(err) rx, rz := region.In(x, z) diff --git a/go.mod b/go.mod index 4b133f5..dac3ddc 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/Tnze/go-mc -go 1.13 +go 1.16 require ( github.com/beefsack/go-astar v0.0.0-20200827232313-4ecf9e304482 diff --git a/nbt/nbt_test.go b/nbt/nbt_test.go index bbc2e34..687a2aa 100644 --- a/nbt/nbt_test.go +++ b/nbt/nbt_test.go @@ -3,7 +3,7 @@ package nbt import ( "bytes" "compress/gzip" - "io/ioutil" + "io" "reflect" "testing" ) @@ -225,7 +225,7 @@ func TestMarshal_bigTest(t *testing.T) { } rd, _ := gzip.NewReader(bytes.NewReader(bigTestData[:])) - want, err := ioutil.ReadAll(rd) + want, err := io.ReadAll(rd) if err != nil { t.Error(err) } diff --git a/nbt/read.go b/nbt/read.go index 53ed54a..4e33ecd 100644 --- a/nbt/read.go +++ b/nbt/read.go @@ -5,7 +5,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "math" "reflect" ) @@ -382,7 +381,7 @@ func (d *Decoder) rawRead(tagType byte) error { return err } - if _, err = io.CopyN(ioutil.Discard, d.r, int64(aryLen)); err != nil { + if _, err = io.CopyN(io.Discard, d.r, int64(aryLen)); err != nil { return err } case TagIntArray: diff --git a/net/packet/packet.go b/net/packet/packet.go index 1de8632..bedfaac 100644 --- a/net/packet/packet.go +++ b/net/packet/packet.go @@ -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() } diff --git a/net/packet/types.go b/net/packet/types.go index 6ec8a8d..6c3a61d 100644 --- a/net/packet/types.go +++ b/net/packet/types.go @@ -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) diff --git a/net/ptypes/misc.go b/net/ptypes/misc.go index 4e6b88f..91a7a20 100644 --- a/net/ptypes/misc.go +++ b/net/ptypes/misc.go @@ -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 } diff --git a/realms/mco.go b/realms/mco.go index 7c8a478..adf071d 100644 --- a/realms/mco.go +++ b/realms/mco.go @@ -1,6 +1,6 @@ package realms -import "io/ioutil" +import "io" // Available returns whether the user can access the Minecraft Realms service func (r *Realms) Available() (ok bool, err error) { @@ -19,7 +19,7 @@ func (r *Realms) Compatible() (string, error) { } defer resp.Body.Close() - rp, err := ioutil.ReadAll(resp.Body) + rp, err := io.ReadAll(resp.Body) return string(rp), err } diff --git a/yggdrasil/validate.go b/yggdrasil/validate.go index b01baa9..1bac2fd 100644 --- a/yggdrasil/validate.go +++ b/yggdrasil/validate.go @@ -2,7 +2,7 @@ package yggdrasil import ( "fmt" - "io/ioutil" + "io" ) // Validate checks if an accessToken is usable for authentication with a Minecraft server. @@ -28,7 +28,7 @@ func (a *Access) Invalidate() error { defer resp.Body.Close() if resp.StatusCode != 204 { - content, _ := ioutil.ReadAll(resp.Body) + content, _ := io.ReadAll(resp.Body) return fmt.Errorf("invalidate error: %v: %s", resp.Status, content) }