Disconnect method, SendPacket and ReceivePacket.
This commit is contained in:
10
bot/event.go
10
bot/event.go
@ -3,6 +3,8 @@ package bot
|
||||
import (
|
||||
"github.com/Tnze/go-mc/bot/world/entity"
|
||||
"github.com/Tnze/go-mc/chat"
|
||||
|
||||
pk "github.com/Tnze/go-mc/net/packet"
|
||||
)
|
||||
|
||||
type eventBroker struct {
|
||||
@ -15,6 +17,10 @@ type eventBroker struct {
|
||||
PluginMessage func(channel string, data []byte) error
|
||||
HeldItemChange func(slot int) error
|
||||
|
||||
WindowsItem func(id byte, slots []entity.Slot) error
|
||||
WindowsItemChange func(id byte, slotID int, slot entity.Slot)error
|
||||
WindowsItem func(id byte, slots []entity.Slot) error
|
||||
WindowsItemChange func(id byte, slotID int, slot entity.Slot) error
|
||||
|
||||
// ReceivePacket will be called when new packet arrive.
|
||||
// Default handler will run only if pass == false.
|
||||
ReceivePacket func(p pk.Packet) (pass bool, err error)
|
||||
}
|
||||
|
@ -51,6 +51,16 @@ func (c *Client) HandleGame() error {
|
||||
}
|
||||
|
||||
func (c *Client) handlePacket(p pk.Packet) (disconnect bool, err error) {
|
||||
if c.Events.ReceivePacket != nil {
|
||||
pass, err := c.Events.ReceivePacket(p)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
if pass {
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
|
||||
switch p.ID {
|
||||
case data.JoinGame:
|
||||
err = handleJoinGamePacket(c, p)
|
||||
|
@ -2,6 +2,7 @@ package bot
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/Tnze/go-mc/chat"
|
||||
"strconv"
|
||||
|
||||
"github.com/Tnze/go-mc/data"
|
||||
@ -178,3 +179,17 @@ func (c *Client) UseItemEnd() error {
|
||||
func (c *Client) SwapItem() error {
|
||||
return c.playerAction(6, 0, 0, 0, 0)
|
||||
}
|
||||
|
||||
// Disconnect send disconnect packet to server.
|
||||
// Server will close the connection after receive this packet.
|
||||
func (c *Client) Disconnect(reason chat.Message) error {
|
||||
return c.conn.WritePacket(pk.Marshal(
|
||||
data.DisconnectPlay,
|
||||
reason,
|
||||
))
|
||||
}
|
||||
|
||||
// SendPacket send the packet to server.
|
||||
func (c *Client) SendPacket(packet pk.Packet) error {
|
||||
return c.conn.WritePacket(packet)
|
||||
}
|
||||
|
Reference in New Issue
Block a user