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
import (
"fmt"
"io"
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)
if err != nil {
return n1 + n2, err
return n1 + n2, fmt.Errorf("read sender name error: %w", err)
}
n3, err := hasTargetName.ReadFrom(r)
if err != nil {
return n1 + n2 + n3, err
return n1 + n2 + n3, fmt.Errorf("read has target name error: %w", err)
}
if hasTargetName {
t.TargetName = new(Message)
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
}

View File

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