move SystemChat event from bot/basic to bot/msg

This commit is contained in:
Tnze
2023-01-01 22:12:03 +08:00
parent 88356fd576
commit e12b2f368d
6 changed files with 42 additions and 30 deletions

View File

@ -15,7 +15,6 @@
// Handles some basic event you probably need. // Handles some basic event you probably need.
// - GameStart // - GameStart
// - ChatMsg // - ChatMsg
// - SystemMsg
// - Disconnect // - Disconnect
// - HealthChange // - HealthChange
// - Death // - Death

View File

@ -9,7 +9,6 @@ import (
type EventsListener struct { type EventsListener struct {
GameStart func() error GameStart func() error
SystemMsg func(c chat.Message, overlay bool) error
Disconnect func(reason chat.Message) error Disconnect func(reason chat.Message) error
HealthChange func(health float32) error HealthChange func(health float32) error
Death func() error Death func() error
@ -21,9 +20,6 @@ func (e EventsListener) attach(p *Player) {
if e.GameStart != nil { if e.GameStart != nil {
attachJoinGameHandler(p.c, e.GameStart) attachJoinGameHandler(p.c, e.GameStart)
} }
if e.SystemMsg != nil {
attachSystemMsg(p.c, e.SystemMsg)
}
if e.Disconnect != nil { if e.Disconnect != nil {
attachDisconnect(p.c, e.Disconnect) attachDisconnect(p.c, e.Disconnect)
} }
@ -41,20 +37,6 @@ func attachJoinGameHandler(c *bot.Client, handler func() error) {
}) })
} }
func attachSystemMsg(c *bot.Client, handler func(c chat.Message, overlay bool) error) {
c.Events.AddListener(bot.PacketHandler{
Priority: 64, ID: packetid.ClientboundSystemChat,
F: func(p pk.Packet) error {
var msg chat.Message
var pos pk.Boolean
if err := p.Scan(&msg, &pos); err != nil {
return Error{err}
}
return handler(msg, bool(pos))
},
})
}
func attachDisconnect(c *bot.Client, handler func(reason chat.Message) error) { func attachDisconnect(c *bot.Client, handler func(reason chat.Message) error) {
c.Events.AddListener(bot.PacketHandler{ c.Events.AddListener(bot.PacketHandler{
Priority: 64, ID: packetid.ClientboundDisconnect, Priority: 64, ID: packetid.ClientboundDisconnect,

View File

@ -34,6 +34,12 @@ func New(c *bot.Client, p *basic.Player, pl *playerlist.PlayerList, events Event
events: events, events: events,
SignatureCache: sign.NewSignatureCache(), SignatureCache: sign.NewSignatureCache(),
} }
if events.SystemChat != nil {
c.Events.AddListener(bot.PacketHandler{
Priority: 64, ID: packetid.ClientboundSystemChat,
F: m.handleSystemMessage,
})
}
if events.PlayerChatMessage != nil { if events.PlayerChatMessage != nil {
c.Events.AddListener(bot.PacketHandler{ c.Events.AddListener(bot.PacketHandler{
Priority: 64, ID: packetid.ClientboundPlayerChat, Priority: 64, ID: packetid.ClientboundPlayerChat,
@ -49,6 +55,15 @@ func New(c *bot.Client, p *basic.Player, pl *playerlist.PlayerList, events Event
return m return m
} }
func (m *Manager) handleSystemMessage(p pk.Packet) error {
var msg chat.Message
var overlay pk.Boolean
if err := p.Scan(&msg, &overlay); err != nil {
return err
}
return m.events.SystemChat(msg, bool(overlay))
}
func (m *Manager) handlePlayerChat(packet pk.Packet) error { func (m *Manager) handlePlayerChat(packet pk.Packet) error {
var ( var (
sender pk.UUID sender pk.UUID

View File

@ -3,6 +3,7 @@ package msg
import "github.com/Tnze/go-mc/chat" import "github.com/Tnze/go-mc/chat"
type EventsHandler struct { type EventsHandler struct {
SystemChat func(msg chat.Message, overlay bool) error
PlayerChatMessage func(msg chat.Message, validated bool) error PlayerChatMessage func(msg chat.Message, validated bool) error
DisguisedChat func(msg chat.Message) error DisguisedChat func(msg chat.Message) error
} }

View File

@ -8,6 +8,8 @@ import (
"github.com/Tnze/go-mc/bot" "github.com/Tnze/go-mc/bot"
"github.com/Tnze/go-mc/bot/basic" "github.com/Tnze/go-mc/bot/basic"
"github.com/Tnze/go-mc/bot/msg"
"github.com/Tnze/go-mc/bot/playerlist"
"github.com/Tnze/go-mc/chat" "github.com/Tnze/go-mc/chat"
_ "github.com/Tnze/go-mc/data/lang/en-us" _ "github.com/Tnze/go-mc/data/lang/en-us"
"github.com/Tnze/go-mc/data/packetid" "github.com/Tnze/go-mc/data/packetid"
@ -20,6 +22,9 @@ var (
c *bot.Client c *bot.Client
p *basic.Player p *basic.Player
playerList *playerlist.PlayerList
chatHandler *msg.Manager
watch chan time.Time watch chan time.Time
) )
@ -28,10 +33,15 @@ func main() {
c = bot.NewClient() c = bot.NewClient()
p = basic.NewPlayer(c, basic.DefaultSettings, basic.EventsListener{ p = basic.NewPlayer(c, basic.DefaultSettings, basic.EventsListener{
GameStart: onGameStart, GameStart: onGameStart,
SystemMsg: onSystemMsg,
Disconnect: onDisconnect, Disconnect: onDisconnect,
Death: onDeath, Death: onDeath,
}) })
playerList = playerlist.New(c)
chatHandler = msg.New(c, p, playerList, msg.EventsHandler{
SystemChat: onSystemChat,
PlayerChatMessage: onPlayerChat,
DisguisedChat: onDisguisedChat,
})
// Register event handlers // Register event handlers
@ -106,13 +116,18 @@ func onSound(id int, category int, x, y, z float64, volume, pitch float32) error
return nil return nil
} }
func onChatMsg(c chat.Message) error { func onSystemChat(c chat.Message, overlay bool) error {
log.Println("Chat:", c) log.Printf("System Chat: %v, Overlay: %v", c, overlay)
return nil return nil
} }
func onSystemMsg(c chat.Message, overlay bool) error { func onPlayerChat(c chat.Message, _ bool) error {
log.Printf("System: %v, Overlay: %v", c, overlay) log.Println("Player Chat:", c)
return nil
}
func onDisguisedChat(c chat.Message) error {
log.Println("Disguised Chat:", c)
return nil return nil
} }

View File

@ -49,13 +49,13 @@ func main() {
} }
player = basic.NewPlayer(client, basic.DefaultSettings, basic.EventsListener{ player = basic.NewPlayer(client, basic.DefaultSettings, basic.EventsListener{
GameStart: onGameStart, GameStart: onGameStart,
SystemMsg: onSystemMsg,
Disconnect: onDisconnect, Disconnect: onDisconnect,
HealthChange: onHealthChange, HealthChange: onHealthChange,
Death: onDeath, Death: onDeath,
}) })
playerList = playerlist.New(client) playerList = playerlist.New(client)
chatHandler = msg.New(client, player, playerList, msg.EventsHandler{ chatHandler = msg.New(client, player, playerList, msg.EventsHandler{
SystemChat: onSystemMsg,
PlayerChatMessage: onPlayerMsg, PlayerChatMessage: onPlayerMsg,
DisguisedChat: onDisguisedMsg, DisguisedChat: onDisguisedMsg,
}) })
@ -117,6 +117,11 @@ func onGameStart() error {
return nil // if err isn't nil, HandleGame() will return it. return nil // if err isn't nil, HandleGame() will return it.
} }
func onSystemMsg(c chat.Message, overlay bool) error {
log.Printf("System: %v, Overlay: %v", c, overlay)
return nil
}
func onPlayerMsg(msg chat.Message, validated bool) error { func onPlayerMsg(msg chat.Message, validated bool) error {
var prefix string var prefix string
if !validated { if !validated {
@ -131,11 +136,6 @@ func onDisguisedMsg(msg chat.Message) error {
return nil return nil
} }
func onSystemMsg(c chat.Message, overlay bool) error {
log.Printf("System: %v, Overlay: %v", c, overlay)
return nil
}
func onChunkLoad(pos level.ChunkPos) error { func onChunkLoad(pos level.ChunkPos) error {
log.Println("Load chunk:", pos) log.Println("Load chunk:", pos)
return nil return nil