handle login plugins requeset

This commit is contained in:
MscBaiMeow
2021-06-14 21:06:21 +08:00
parent 8923793e2d
commit a4e9ed9143
2 changed files with 24 additions and 3 deletions

View File

@ -142,7 +142,28 @@ func (c *Client) join(d *net.Dialer, addr string) error {
c.Conn.SetThreshold(int(threshold))
case packetid.LoginPluginRequest: //Login Plugin Request
// TODO: Handle login plugin request
var (
msgid pk.VarInt
channel pk.Identifier
data pk.ByteArray
)
if err := p.Scan(&msgid, &channel, &data); err != nil {
return LoginErr{"Login Plugin", err}
}
if handler, ok := c.LoginPlugin[string(channel)]; ok {
respdata, err := handler([]byte(data))
if err != nil {
return LoginErr{"Login Plugin", err}
}
if err := c.Conn.WritePacket(pk.Marshal(packetid.LoginPluginResponse, msgid, pk.Boolean(true), pk.ByteArray(respdata))); err != nil {
return LoginErr{"login Plugin", err}
}
} else {
if err := c.Conn.WritePacket(pk.Marshal(packetid.LoginPluginResponse, msgid, pk.Boolean(false))); err != nil {
return LoginErr{"login Plugin", err}
}
}
return nil
}
}
}