Move command component

This commit is contained in:
Tnze
2022-01-04 12:23:48 +08:00
parent be3a834696
commit badf77d219
5 changed files with 124 additions and 125 deletions

View File

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