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