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

@ -13,8 +13,8 @@ type Client struct {
Name string Name string
UUID uuid.UUID UUID uuid.UUID
Events Events Events Events
//TODO: LoginEvents Events LoginPlugin map[string]func(data []byte) ([]byte, error)
} }
func (c *Client) Close() error { func (c *Client) Close() error {

View File

@ -142,7 +142,28 @@ func (c *Client) join(d *net.Dialer, addr string) error {
c.Conn.SetThreshold(int(threshold)) c.Conn.SetThreshold(int(threshold))
case packetid.LoginPluginRequest: //Login Plugin Request 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
} }
} }
} }