fix: possible packet issues

This commit is contained in:
2026-02-16 13:42:03 +08:00
parent d2bec53bb8
commit a885a7eec4
11 changed files with 542 additions and 433 deletions
+14 -2
View File
@@ -154,9 +154,21 @@ func (c LoginLoginDisconnect) WriteTo(w io.Writer) (n int64, err error) {
return n, err
}
func (c *LoginLoginFinished) ReadFrom(r io.Reader) (n int64, err error) {
return 0, nil
var temp int64
temp, err = (&c.GameProfile).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c LoginLoginFinished) WriteTo(w io.Writer) (n int64, err error) {
return 0, nil
var temp int64
temp, err = (&c.GameProfile).WriteTo(w)
n += temp
if err != nil {
return n, err
}
return n, err
}
@@ -7,7 +7,7 @@ import (
//codec:gen
type LoginLoginFinished struct {
protocol.GameProfile
GameProfile protocol.GameProfile
}
func (*LoginLoginFinished) PacketID() packetid.ClientboundPacketID {
+2 -2
View File
@@ -64,7 +64,7 @@ func (c *LoginCustomQueryAnswer) ReadFrom(r io.Reader) (n int64, err error) {
return n, err
}
if c.HasData {
temp, err = (*packet.ByteArray)(&c.Data).ReadFrom(r)
temp, err = (*packet.PluginMessageData)(&c.Data).ReadFrom(r)
n += temp
if err != nil {
return n, err
@@ -86,7 +86,7 @@ func (c LoginCustomQueryAnswer) WriteTo(w io.Writer) (n int64, err error) {
return n, err
}
if c.HasData {
temp, err = (*packet.ByteArray)(&c.Data).WriteTo(w)
temp, err = (*packet.PluginMessageData)(&c.Data).WriteTo(w)
n += temp
if err != nil {
return n, err
@@ -7,7 +7,7 @@ type LoginCustomQueryAnswer struct {
MessageID int32 `mc:"VarInt"`
HasData bool
//opt:optional:HasData
Data []byte `mc:"ByteArray"`
Data []byte `mc:"PluginMessageData"`
}
func (*LoginCustomQueryAnswer) PacketID() packetid.ServerboundPacketID {
@@ -17,3 +17,11 @@ var packetRegistry = 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
}