player info updated and fixes codecs

This commit is contained in:
2025-08-28 16:25:35 +08:00
parent 3bd5a47e80
commit d694e147fc
7 changed files with 490 additions and 410 deletions

View File

@ -3633,6 +3633,10 @@ func (a *Int32VarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
return n, errors.New("array length less than zero")
}
if size > 32767 {
return n, errors.New("array length greater than 32767")
}
if cap(*a) >= int(size) {
*a = (*a)[:int(size)]
} else {
@ -3681,6 +3685,10 @@ func (a *Int32PrefixedArrayVarIntArray) ReadFrom(r io.Reader) (n int64, err erro
return n, errors.New("array length less than zero")
}
if size > 32767 {
return n, errors.New("array length greater than 32767")
}
if cap(*a) >= int(size) {
*a = (*a)[:int(size)]
} else {
@ -3698,6 +3706,58 @@ func (a *Int32PrefixedArrayVarIntArray) ReadFrom(r io.Reader) (n int64, err erro
return n, err
}
// Int32VarIntVarIntArray a utility type for encoding/decoding packet.VarInt -> int32[packet.VarInt] slice.
type Int32VarIntVarIntArray []int32
func (a Int32VarIntVarIntArray) WriteTo(w io.Writer) (n int64, err error) {
size := len(a)
nn, err := packet.VarInt(size).WriteTo(w)
if err != nil {
return n, err
}
n += nn
for i := 0; i < size; i++ {
nn, err := packet.VarInt(a[i]).WriteTo(w)
n += nn
if err != nil {
return n, err
}
}
return n, nil
}
func (a *Int32VarIntVarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
var size packet.VarInt
nn, err := size.ReadFrom(r)
n += nn
if err != nil {
return n, err
}
if size < 0 {
return n, errors.New("array length less than zero")
}
if size > 32767 {
return n, errors.New("array length greater than 32767")
}
if cap(*a) >= int(size) {
*a = (*a)[:int(size)]
} else {
*a = make(Int32VarIntVarIntArray, int(size))
}
for i := 0; i < int(size); i++ {
nn, err = (*packet.VarInt)(&(*a)[i]).ReadFrom(r)
n += nn
if err != nil {
return n, err
}
}
return n, err
}
// Float32VarIntArray a utility type for encoding/decoding packet.Float -> float32[packet.VarInt] slice.
type Float32VarIntArray []float32
@ -3729,6 +3789,10 @@ func (a *Float32VarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
return n, errors.New("array length less than zero")
}
if size > 32767 {
return n, errors.New("array length greater than 32767")
}
if cap(*a) >= int(size) {
*a = (*a)[:int(size)]
} else {
@ -3777,6 +3841,10 @@ func (a *BoolVarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
return n, errors.New("array length less than zero")
}
if size > 32767 {
return n, errors.New("array length greater than 32767")
}
if cap(*a) >= int(size) {
*a = (*a)[:int(size)]
} else {
@ -3825,6 +3893,10 @@ func (a *StringVarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
return n, errors.New("array length less than zero")
}
if size > 32767 {
return n, errors.New("array length greater than 32767")
}
if cap(*a) >= int(size) {
*a = (*a)[:int(size)]
} else {
@ -3841,51 +3913,3 @@ func (a *StringVarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
return n, err
}
// Int32VarIntVarIntArray a utility type for encoding/decoding packet.VarInt -> int32[packet.VarInt] slice.
type Int32VarIntVarIntArray []int32
func (a Int32VarIntVarIntArray) WriteTo(w io.Writer) (n int64, err error) {
size := len(a)
nn, err := packet.VarInt(size).WriteTo(w)
if err != nil {
return n, err
}
n += nn
for i := 0; i < size; i++ {
nn, err := packet.VarInt(a[i]).WriteTo(w)
n += nn
if err != nil {
return n, err
}
}
return n, nil
}
func (a *Int32VarIntVarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
var size packet.VarInt
nn, err := size.ReadFrom(r)
n += nn
if err != nil {
return n, err
}
if size < 0 {
return n, errors.New("array length less than zero")
}
if cap(*a) >= int(size) {
*a = (*a)[:int(size)]
} else {
*a = make(Int32VarIntVarIntArray, int(size))
}
for i := 0; i < int(size); i++ {
nn, err = (*packet.VarInt)(&(*a)[i]).ReadFrom(r)
n += nn
if err != nil {
return n, err
}
}
return n, err
}