Fix player chat message decoding error

This commit is contained in:
Tnze
2024-04-27 22:28:40 +08:00
parent 9b9f8a8642
commit d55614cdb7
2 changed files with 6 additions and 15 deletions

View File

@ -1,6 +1,7 @@
package chat package chat
import ( import (
"fmt"
"io" "io"
pk "github.com/Tnze/go-mc/net/packet" pk "github.com/Tnze/go-mc/net/packet"
@ -64,16 +65,16 @@ func (t *Type) ReadFrom(r io.Reader) (n int64, err error) {
} }
n2, err := t.SenderName.ReadFrom(r) n2, err := t.SenderName.ReadFrom(r)
if err != nil { if err != nil {
return n1 + n2, err return n1 + n2, fmt.Errorf("read sender name error: %w", err)
} }
n3, err := hasTargetName.ReadFrom(r) n3, err := hasTargetName.ReadFrom(r)
if err != nil { if err != nil {
return n1 + n2 + n3, err return n1 + n2 + n3, fmt.Errorf("read has target name error: %w", err)
} }
if hasTargetName { if hasTargetName {
t.TargetName = new(Message) t.TargetName = new(Message)
n4, err := t.TargetName.ReadFrom(r) n4, err := t.TargetName.ReadFrom(r)
return n1 + n2 + n3 + n4, err return n1 + n2 + n3 + n4, fmt.Errorf("read target name error: %w", err)
} }
return n1 + n2 + n3, nil return n1 + n2 + n3, nil
} }

View File

@ -11,22 +11,12 @@ import (
// ReadFrom decode Message in a Text component // ReadFrom decode Message in a Text component
func (m *Message) ReadFrom(r io.Reader) (int64, error) { func (m *Message) ReadFrom(r io.Reader) (int64, error) {
var code pk.String return pk.NBT(m).ReadFrom(r)
n, err := code.ReadFrom(r)
if err != nil {
return n, err
}
err = nbt.Unmarshal([]byte(code), (*Message)(m))
return n, err
} }
// WriteTo encode Message into a Text component // WriteTo encode Message into a Text component
func (m Message) WriteTo(w io.Writer) (int64, error) { func (m Message) WriteTo(w io.Writer) (int64, error) {
code, err := nbt.Marshal(Message(m)) return pk.NBT(&m).WriteTo(w)
if err != nil {
panic(err)
}
return pk.String(code).WriteTo(w)
} }
func (m Message) MarshalNBT() ([]byte, error) { func (m Message) MarshalNBT() ([]byte, error) {