Files
go-mc/server/command.go
2022-01-03 15:57:54 +08:00

50 lines
1.0 KiB
Go

package server
import (
"context"
"github.com/Tnze/go-mc/data/packetid"
pk "github.com/Tnze/go-mc/net/packet"
"github.com/Tnze/go-mc/server/command"
"strings"
)
type CommandGraph struct {
*command.Graph
}
func NewCommandGraph() *CommandGraph {
return &CommandGraph{
Graph: command.NewGraph(),
}
}
func (c *CommandGraph) Init(g *Game) {
g.AddHandler(&PacketHandler{
ID: packetid.ServerboundChat,
F: func(player *Player, packet Packet757) error {
var msg pk.String
if err := pk.Packet(packet).Scan(&msg); err != nil {
return err
}
if cmd := string(msg); strings.HasPrefix(cmd, "/") {
cmderr := c.Graph.Run(strings.TrimPrefix(cmd, "/"))
if cmderr != nil {
// TODO: tell player that their command has error
}
}
return nil
},
})
}
func (c *CommandGraph) Run(ctx context.Context) {}
func (c *CommandGraph) AddPlayer(p *Player) {
p.WritePacket(Packet757(pk.Marshal(
packetid.ClientboundCommands,
c.Graph,
)))
}
func (c *CommandGraph) RemovePlayer(p *Player) {}