add license and fix some bugs
This commit is contained in:
@@ -374,10 +374,6 @@ func (a *Int8VarIntArray) 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 {
|
||||
@@ -426,10 +422,6 @@ func (a *StringIdentifierVarIntArray) 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 {
|
||||
|
||||
@@ -12,8 +12,8 @@ type ClientboundPacket interface {
|
||||
|
||||
type packetCreator func() ClientboundPacket
|
||||
|
||||
var packetRegistry = make(map[packetid.ClientboundPacketID]packetCreator)
|
||||
var ClientboundPackets = make(map[packetid.ClientboundPacketID]packetCreator)
|
||||
|
||||
func registerPacket(id packetid.ClientboundPacketID, creator packetCreator) {
|
||||
packetRegistry[id] = creator
|
||||
ClientboundPackets[id] = creator
|
||||
}
|
||||
|
||||
@@ -12,16 +12,8 @@ type ServerboundPacket interface {
|
||||
|
||||
type serverPacketCreator func() ServerboundPacket
|
||||
|
||||
var packetRegistry = make(map[packetid.ServerboundPacketID]serverPacketCreator)
|
||||
var ServerboundPackets = make(map[packetid.ServerboundPacketID]serverPacketCreator)
|
||||
|
||||
func registerPacket(id packetid.ServerboundPacketID, creator serverPacketCreator) {
|
||||
packetRegistry[id] = creator
|
||||
}
|
||||
|
||||
func CreatePacket(id packetid.ServerboundPacketID) (ServerboundPacket, bool) {
|
||||
creator, ok := packetRegistry[id]
|
||||
if !ok {
|
||||
return nil, false
|
||||
}
|
||||
return creator(), true
|
||||
ServerboundPackets[id] = creator
|
||||
}
|
||||
|
||||
@@ -4135,7 +4135,7 @@ func (c *ServerData) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
return n, err
|
||||
}
|
||||
if c.HasIcon {
|
||||
temp, err = (*Int8ByteVarIntArray)(&c.Icon).ReadFrom(r)
|
||||
temp, err = (&c.Icon).ReadFrom(r)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return n, err
|
||||
@@ -4157,7 +4157,7 @@ func (c ServerData) WriteTo(w io.Writer) (n int64, err error) {
|
||||
return n, err
|
||||
}
|
||||
if c.HasIcon {
|
||||
temp, err = (*Int8ByteVarIntArray)(&c.Icon).WriteTo(w)
|
||||
temp, err = (&c.Icon).WriteTo(w)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return n, err
|
||||
@@ -7067,110 +7067,6 @@ func (c Waypoint) WriteTo(w io.Writer) (n int64, err error) {
|
||||
return n, err
|
||||
}
|
||||
|
||||
// StringVarIntArray a utility type for encoding/decoding packet.String -> string[packet.VarInt] slice.
|
||||
type StringVarIntArray []string
|
||||
|
||||
func (a StringVarIntArray) 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.String(a[i]).WriteTo(w)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
return n, nil
|
||||
}
|
||||
|
||||
func (a *StringVarIntArray) 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(StringVarIntArray, int(size))
|
||||
}
|
||||
|
||||
for i := 0; i < int(size); i++ {
|
||||
nn, err = (*packet.String)(&(*a)[i]).ReadFrom(r)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
// Int64VarLongVarIntArray a utility type for encoding/decoding packet.VarLong -> int64[packet.VarInt] slice.
|
||||
type Int64VarLongVarIntArray []int64
|
||||
|
||||
@@ -7202,10 +7098,6 @@ func (a *Int64VarLongVarIntArray) 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 {
|
||||
@@ -7223,6 +7115,54 @@ func (a *Int64VarLongVarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
return n, err
|
||||
}
|
||||
|
||||
// StringStringVarIntArray a utility type for encoding/decoding packet.String -> string[packet.VarInt] slice.
|
||||
type StringStringVarIntArray []string
|
||||
|
||||
func (a StringStringVarIntArray) 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.String(a[i]).WriteTo(w)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
return n, nil
|
||||
}
|
||||
|
||||
func (a *StringStringVarIntArray) 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(StringStringVarIntArray, int(size))
|
||||
}
|
||||
|
||||
for i := 0; i < int(size); i++ {
|
||||
nn, err = (*packet.String)(&(*a)[i]).ReadFrom(r)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
|
||||
return n, err
|
||||
}
|
||||
|
||||
// Int8VarIntArray a utility type for encoding/decoding packet.Byte -> int8[packet.VarInt] slice.
|
||||
type Int8VarIntArray []int8
|
||||
|
||||
@@ -7254,14 +7194,154 @@ func (a *Int8VarIntArray) 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 {
|
||||
*a = make(Int8VarIntArray, int(size))
|
||||
}
|
||||
|
||||
for i := 0; i < int(size); i++ {
|
||||
nn, err = (*packet.Byte)(&(*a)[i]).ReadFrom(r)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
|
||||
return n, err
|
||||
}
|
||||
|
||||
// StringVarIntArray a utility type for encoding/decoding packet.String -> string[packet.VarInt] slice.
|
||||
type StringVarIntArray []string
|
||||
|
||||
func (a StringVarIntArray) 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.String(a[i]).WriteTo(w)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
return n, nil
|
||||
}
|
||||
|
||||
func (a *StringVarIntArray) 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(Int8VarIntArray, int(size))
|
||||
*a = make(StringVarIntArray, int(size))
|
||||
}
|
||||
|
||||
for i := 0; i < int(size); i++ {
|
||||
nn, err = (*packet.String)(&(*a)[i]).ReadFrom(r)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
|
||||
return n, err
|
||||
}
|
||||
|
||||
// StringIdentifierVarIntArray a utility type for encoding/decoding packet.Identifier -> string[packet.VarInt] slice.
|
||||
type StringIdentifierVarIntArray []string
|
||||
|
||||
func (a StringIdentifierVarIntArray) 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.Identifier(a[i]).WriteTo(w)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
return n, nil
|
||||
}
|
||||
|
||||
func (a *StringIdentifierVarIntArray) 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(StringIdentifierVarIntArray, int(size))
|
||||
}
|
||||
|
||||
for i := 0; i < int(size); i++ {
|
||||
nn, err = (*packet.Identifier)(&(*a)[i]).ReadFrom(r)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
|
||||
return n, err
|
||||
}
|
||||
|
||||
// Int8ByteVarIntArray a utility type for encoding/decoding packet.Byte -> int8[packet.VarInt] slice.
|
||||
type Int8ByteVarIntArray []int8
|
||||
|
||||
func (a Int8ByteVarIntArray) 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.Byte(a[i]).WriteTo(w)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
return n, nil
|
||||
}
|
||||
|
||||
func (a *Int8ByteVarIntArray) 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(Int8ByteVarIntArray, int(size))
|
||||
}
|
||||
|
||||
for i := 0; i < int(size); i++ {
|
||||
@@ -7306,10 +7386,6 @@ func (a *Int64VarIntArray) 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 {
|
||||
@@ -7327,58 +7403,6 @@ func (a *Int64VarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
return n, err
|
||||
}
|
||||
|
||||
// StringIdentifierVarIntArray a utility type for encoding/decoding packet.Identifier -> string[packet.VarInt] slice.
|
||||
type StringIdentifierVarIntArray []string
|
||||
|
||||
func (a StringIdentifierVarIntArray) 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.Identifier(a[i]).WriteTo(w)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
return n, nil
|
||||
}
|
||||
|
||||
func (a *StringIdentifierVarIntArray) 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(StringIdentifierVarIntArray, int(size))
|
||||
}
|
||||
|
||||
for i := 0; i < int(size); i++ {
|
||||
nn, err = (*packet.Identifier)(&(*a)[i]).ReadFrom(r)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
|
||||
return n, err
|
||||
}
|
||||
|
||||
// UuidUUIDUUIDVarIntArray a utility type for encoding/decoding packet.UUID -> uuid.UUID[packet.VarInt] slice.
|
||||
type UuidUUIDUUIDVarIntArray []uuid.UUID
|
||||
|
||||
@@ -7410,10 +7434,6 @@ func (a *UuidUUIDUUIDVarIntArray) 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 {
|
||||
@@ -7431,10 +7451,10 @@ func (a *UuidUUIDUUIDVarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
return n, err
|
||||
}
|
||||
|
||||
// Int8ByteVarIntArray a utility type for encoding/decoding packet.Byte -> int8[packet.VarInt] slice.
|
||||
type Int8ByteVarIntArray []int8
|
||||
// Int32VarIntVarIntArray a utility type for encoding/decoding packet.VarInt -> int32[packet.VarInt] slice.
|
||||
type Int32VarIntVarIntArray []int32
|
||||
|
||||
func (a Int8ByteVarIntArray) WriteTo(w io.Writer) (n int64, err error) {
|
||||
func (a Int32VarIntVarIntArray) WriteTo(w io.Writer) (n int64, err error) {
|
||||
size := len(a)
|
||||
nn, err := packet.VarInt(size).WriteTo(w)
|
||||
if err != nil {
|
||||
@@ -7442,7 +7462,7 @@ func (a Int8ByteVarIntArray) WriteTo(w io.Writer) (n int64, err error) {
|
||||
}
|
||||
n += nn
|
||||
for i := 0; i < size; i++ {
|
||||
nn, err := packet.Byte(a[i]).WriteTo(w)
|
||||
nn, err := packet.VarInt(a[i]).WriteTo(w)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
@@ -7451,7 +7471,7 @@ func (a Int8ByteVarIntArray) WriteTo(w io.Writer) (n int64, err error) {
|
||||
return n, nil
|
||||
}
|
||||
|
||||
func (a *Int8ByteVarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
func (a *Int32VarIntVarIntArray) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
var size packet.VarInt
|
||||
nn, err := size.ReadFrom(r)
|
||||
n += nn
|
||||
@@ -7462,70 +7482,14 @@ func (a *Int8ByteVarIntArray) 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 {
|
||||
*a = make(Int8ByteVarIntArray, int(size))
|
||||
*a = make(Int32VarIntVarIntArray, int(size))
|
||||
}
|
||||
|
||||
for i := 0; i < int(size); i++ {
|
||||
nn, err = (*packet.Byte)(&(*a)[i]).ReadFrom(r)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
|
||||
return n, err
|
||||
}
|
||||
|
||||
// StringStringVarIntArray a utility type for encoding/decoding packet.String -> string[packet.VarInt] slice.
|
||||
type StringStringVarIntArray []string
|
||||
|
||||
func (a StringStringVarIntArray) 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.String(a[i]).WriteTo(w)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
}
|
||||
return n, nil
|
||||
}
|
||||
|
||||
func (a *StringStringVarIntArray) 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(StringStringVarIntArray, int(size))
|
||||
}
|
||||
|
||||
for i := 0; i < int(size); i++ {
|
||||
nn, err = (*packet.String)(&(*a)[i]).ReadFrom(r)
|
||||
nn, err = (*packet.VarInt)(&(*a)[i]).ReadFrom(r)
|
||||
n += nn
|
||||
if err != nil {
|
||||
return n, err
|
||||
|
||||
@@ -2,6 +2,7 @@ package client
|
||||
|
||||
import (
|
||||
"git.konjactw.dev/falloutBot/go-mc/chat"
|
||||
pk "git.konjactw.dev/falloutBot/go-mc/net/packet"
|
||||
)
|
||||
|
||||
//codec:gen
|
||||
@@ -9,5 +10,5 @@ type ServerData struct {
|
||||
MOTD chat.Message
|
||||
HasIcon bool
|
||||
//opt:optional:HasIcon
|
||||
Icon []int8 `mc:"Byte"`
|
||||
Icon pk.ByteArray
|
||||
}
|
||||
|
||||
@@ -841,35 +841,6 @@ func (c CustomClickAction) WriteTo(w io.Writer) (n int64, err error) {
|
||||
}
|
||||
return n, err
|
||||
}
|
||||
func (c *CustomPayload) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
var temp int64
|
||||
temp, err = (*packet.Identifier)(&c.Channel).ReadFrom(r)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
temp, err = (*packet.ByteArray)(&c.Data).ReadFrom(r)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
return n, err
|
||||
}
|
||||
|
||||
func (c CustomPayload) WriteTo(w io.Writer) (n int64, err error) {
|
||||
var temp int64
|
||||
temp, err = (*packet.Identifier)(&c.Channel).WriteTo(w)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
temp, err = (*packet.ByteArray)(&c.Data).WriteTo(w)
|
||||
n += temp
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
return n, err
|
||||
}
|
||||
func (c *DebugSampleSubscription) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
var temp int64
|
||||
temp, err = (*packet.VarInt)(&c.SampleType).ReadFrom(r)
|
||||
@@ -2759,10 +2730,6 @@ func (a *Int8ByteVarIntArray) 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 {
|
||||
@@ -2811,10 +2778,6 @@ 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 {
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
package server
|
||||
|
||||
import "git.konjactw.dev/falloutBot/go-mc/data/packetid"
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
|
||||
"git.konjactw.dev/falloutBot/go-mc/data/packetid"
|
||||
pk "git.konjactw.dev/falloutBot/go-mc/net/packet"
|
||||
)
|
||||
|
||||
//codec:gen
|
||||
type CustomPayload struct {
|
||||
Channel string `mc:"Identifier"`
|
||||
Data []byte `mc:"ByteArray"`
|
||||
Channel string
|
||||
Data []byte
|
||||
}
|
||||
|
||||
func (*CustomPayload) PacketID() packetid.ServerboundPacketID {
|
||||
@@ -17,3 +22,28 @@ func init() {
|
||||
return &CustomPayload{}
|
||||
})
|
||||
}
|
||||
|
||||
func (p CustomPayload) WriteTo(w io.Writer) (n int64, err error) {
|
||||
n, err = pk.Identifier(p.Channel).WriteTo(w)
|
||||
if err != nil {
|
||||
return n, err
|
||||
}
|
||||
|
||||
nn, err := bytes.NewBuffer(p.Data).WriteTo(w)
|
||||
return n + nn, err
|
||||
}
|
||||
|
||||
func (p *CustomPayload) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
n, err = (*pk.Identifier)(&p.Channel).ReadFrom(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
data := make([]byte, 32767)
|
||||
nn, err := io.ReadFull(r, data)
|
||||
if err != nil && (err != io.ErrUnexpectedEOF && err != io.EOF) {
|
||||
return n + int64(nn), err
|
||||
}
|
||||
p.Data = data
|
||||
return n + int64(nn), nil
|
||||
}
|
||||
|
||||
@@ -13,16 +13,8 @@ type ServerboundPacket interface {
|
||||
|
||||
type serverPacketCreator func() ServerboundPacket
|
||||
|
||||
var packetRegistry = make(map[packetid.ServerboundPacketID]serverPacketCreator)
|
||||
var ServerboundPackets = make(map[packetid.ServerboundPacketID]serverPacketCreator)
|
||||
|
||||
func registerPacket(id packetid.ServerboundPacketID, creator serverPacketCreator) {
|
||||
packetRegistry[id] = creator
|
||||
}
|
||||
|
||||
func CreatePacket(id packetid.ServerboundPacketID) (ServerboundPacket, bool) {
|
||||
creator, ok := packetRegistry[id]
|
||||
if !ok {
|
||||
return nil, false
|
||||
}
|
||||
return creator(), true
|
||||
ServerboundPackets[id] = creator
|
||||
}
|
||||
|
||||
@@ -12,8 +12,8 @@ type ClientboundPacket interface {
|
||||
|
||||
type packetCreator func() ClientboundPacket
|
||||
|
||||
var packetRegistry = make(map[packetid.ClientboundPacketID]packetCreator)
|
||||
var ClientboundPackets = make(map[packetid.ClientboundPacketID]packetCreator)
|
||||
|
||||
func registerPacket(id packetid.ClientboundPacketID, creator packetCreator) {
|
||||
packetRegistry[id] = creator
|
||||
ClientboundPackets[id] = creator
|
||||
}
|
||||
|
||||
@@ -12,16 +12,8 @@ type ServerboundPacket interface {
|
||||
|
||||
type serverPacketCreator func() ServerboundPacket
|
||||
|
||||
var packetRegistry = make(map[packetid.ServerboundPacketID]serverPacketCreator)
|
||||
var ServerboundPackets = make(map[packetid.ServerboundPacketID]serverPacketCreator)
|
||||
|
||||
func registerPacket(id packetid.ServerboundPacketID, creator serverPacketCreator) {
|
||||
packetRegistry[id] = creator
|
||||
}
|
||||
|
||||
func CreatePacket(id packetid.ServerboundPacketID) (ServerboundPacket, bool) {
|
||||
creator, ok := packetRegistry[id]
|
||||
if !ok {
|
||||
return nil, false
|
||||
}
|
||||
return creator(), true
|
||||
ServerboundPackets[id] = creator
|
||||
}
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
package packet
|
||||
|
||||
import (
|
||||
"git.konjactw.dev/falloutBot/go-mc/data/packetid"
|
||||
pk "git.konjactw.dev/falloutBot/go-mc/net/packet"
|
||||
)
|
||||
import loginclient "git.konjactw.dev/patyhank/minego/pkg/protocol/packet/login/client"
|
||||
import gameclient "git.konjactw.dev/patyhank/minego/pkg/protocol/packet/game/client"
|
||||
import configclient "git.konjactw.dev/patyhank/minego/pkg/protocol/packet/configuration/client"
|
||||
import loginserver "git.konjactw.dev/patyhank/minego/pkg/protocol/packet/login/server"
|
||||
import gameserver "git.konjactw.dev/patyhank/minego/pkg/protocol/packet/game/server"
|
||||
import configserver "git.konjactw.dev/patyhank/minego/pkg/protocol/packet/configuration/server"
|
||||
|
||||
type ServerboundPacket interface {
|
||||
pk.Field
|
||||
PacketID() packetid.ServerboundPacketID
|
||||
}
|
||||
|
||||
type ClientboundPacket interface {
|
||||
pk.Field
|
||||
PacketID() packetid.ClientboundPacketID
|
||||
}
|
||||
|
||||
type State int32
|
||||
|
||||
const (
|
||||
StateLogin State = iota
|
||||
StateConfig
|
||||
StatePlay
|
||||
)
|
||||
|
||||
func GetClientPacket(state State, id int32) ClientboundPacket {
|
||||
switch state {
|
||||
case StateLogin:
|
||||
return loginclient.ClientboundPackets[packetid.ClientboundPacketID(id)]()
|
||||
case StateConfig:
|
||||
return configclient.ClientboundPackets[packetid.ClientboundPacketID(id)]()
|
||||
case StatePlay:
|
||||
return gameclient.ClientboundPackets[packetid.ClientboundPacketID(id)]()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetServerPacket(state State, id int32) ServerboundPacket {
|
||||
switch state {
|
||||
case StateLogin:
|
||||
creator := loginserver.ServerboundPackets[packetid.ServerboundPacketID(id)]
|
||||
if creator == nil {
|
||||
return nil
|
||||
}
|
||||
return creator()
|
||||
case StateConfig:
|
||||
creator := configserver.ServerboundPackets[packetid.ServerboundPacketID(id)]
|
||||
if creator == nil {
|
||||
return nil
|
||||
}
|
||||
return creator()
|
||||
case StatePlay:
|
||||
creator := gameserver.ServerboundPackets[packetid.ServerboundPacketID(id)]
|
||||
if creator == nil {
|
||||
return nil
|
||||
}
|
||||
return creator()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user