A dragonfly library to add multiple player and world handler
go get github.com/venitynetwork/vhandler
func acceptPlayer(p *player.Player) {
handler := vhandler.NewPlayer() // create player handler
moveHandler := func(ctx *event.Context, newPos mgl64.Vec3, newYaw, newPitch float64) {
p.SendTip(fmt.Sprintf("X: %.2f Y: %.2f Z: %.2f\nYaw: %.0f Pitch: %.0f", newPos.X(), newPos.Y(), newPos.Z(), newYaw, newPitch))
}
// add move handler
handler.OnMove(priority.Normal, moveHandler)
// add existing handler interface
handler.Attach(priority.Normal, p.Handler())
// remove handler interface
handler.Detach(p.Handler())
// set player handler
handler.Set(p)
// remove move handler
handler.Remove(moveHandler)
}
func main() {
log := logrus.New()
log.Formatter = &logrus.TextFormatter{ForceColors: true}
log.Level = logrus.DebugLevel
cfg := server.DefaultConfig()
srvCfg, err := cfg.Config(log)
if err != nil {
log.Fatal(err)
}
srv := srvCfg.New()
srv.Listen()
for {
srv.Accept(func(p *player.Player) {
setupHandler(p).Set(p)
})
}
}
func setupHandler(p *player.Player) *vhandler.Player {
v := vhandler.NewPlayer()
v.OnMove(priority.Normal, func(ctx *event.Context, newPos mgl64.Vec3, newYaw, newPitch float64) {
p.SendTip(fmt.Sprintf("X: %.2f Y: %.2f Z: %.2f\nYaw: %.0f Pitch: %.0f", newPos.X(), newPos.Y(), newPos.Z(), newYaw, newPitch))
})
return v
}