Skip to content

VenityNetwork/vhandler

Repository files navigation

vhandler

A dragonfly library to add multiple player and world handler

Install

go get github.com/venitynetwork/vhandler

Usage

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)
}

Examples

movement_debug.go:

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
}

About

A dragonfly library to add multiple player handler

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages