Let configuration has it's own Err type
This commit is contained in:
@ -1,18 +1,32 @@
|
||||
package bot
|
||||
|
||||
import (
|
||||
"github.com/Tnze/go-mc/chat"
|
||||
"github.com/Tnze/go-mc/data/packetid"
|
||||
"github.com/Tnze/go-mc/nbt"
|
||||
"github.com/Tnze/go-mc/net"
|
||||
pk "github.com/Tnze/go-mc/net/packet"
|
||||
)
|
||||
|
||||
type ConfigErr struct {
|
||||
Stage string
|
||||
Err error
|
||||
}
|
||||
|
||||
func (l ConfigErr) Error() string {
|
||||
return "bot: configuration error: [" + l.Stage + "] " + l.Err.Error()
|
||||
}
|
||||
|
||||
func (l ConfigErr) Unwrap() error {
|
||||
return l.Err
|
||||
}
|
||||
|
||||
func (c *Client) joinConfiguration(conn *net.Conn) error {
|
||||
receiving := "config custom payload"
|
||||
for {
|
||||
var p pk.Packet
|
||||
if err := conn.ReadPacket(&p); err != nil {
|
||||
return LoginErr{receiving, err}
|
||||
return ConfigErr{receiving, err}
|
||||
}
|
||||
|
||||
switch packetid.ClientboundPacketID(p.ID) {
|
||||
@ -21,17 +35,24 @@ func (c *Client) joinConfiguration(conn *net.Conn) error {
|
||||
var data pk.PluginMessageData
|
||||
err := p.Scan(&channel, &data)
|
||||
if err != nil {
|
||||
return LoginErr{"custom payload", err}
|
||||
return ConfigErr{"custom payload", err}
|
||||
}
|
||||
// TODO: Provide configuration custom data handling interface
|
||||
|
||||
case packetid.ClientboundConfigDisconnect:
|
||||
var reason chat.Message
|
||||
err := p.Scan(&reason)
|
||||
if err != nil {
|
||||
return ConfigErr{"disconnect", err}
|
||||
}
|
||||
return ConfigErr{"disconnect", DisconnectErr(reason)}
|
||||
|
||||
case packetid.ClientboundConfigFinishConfiguration:
|
||||
err := conn.WritePacket(pk.Marshal(
|
||||
packetid.ServerboundConfigFinishConfiguration,
|
||||
))
|
||||
if err != nil {
|
||||
return LoginErr{"finish config", err}
|
||||
return ConfigErr{"finish config", err}
|
||||
}
|
||||
return nil
|
||||
|
||||
@ -39,7 +60,7 @@ func (c *Client) joinConfiguration(conn *net.Conn) error {
|
||||
var keepAliveID pk.Long
|
||||
err := p.Scan(&keepAliveID)
|
||||
if err != nil {
|
||||
return LoginErr{"keep alive", err}
|
||||
return ConfigErr{"keep alive", err}
|
||||
}
|
||||
// send it back
|
||||
err = conn.WritePacket(pk.Marshal(
|
||||
@ -47,7 +68,7 @@ func (c *Client) joinConfiguration(conn *net.Conn) error {
|
||||
keepAliveID,
|
||||
))
|
||||
if err != nil {
|
||||
return LoginErr{"keep alive", err}
|
||||
return ConfigErr{"keep alive", err}
|
||||
}
|
||||
|
||||
case packetid.ClientboundConfigPing:
|
||||
@ -55,7 +76,7 @@ func (c *Client) joinConfiguration(conn *net.Conn) error {
|
||||
var registryCodec nbt.RawMessage
|
||||
err := p.Scan(pk.NBT(®istryCodec))
|
||||
if err != nil {
|
||||
return LoginErr{"registry data", err}
|
||||
return ConfigErr{"registry data", err}
|
||||
}
|
||||
// TODO: Handle registries
|
||||
|
||||
|
Reference in New Issue
Block a user