50 lines
1.0 KiB
Go
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) {}
|