This project applies and manages knockback presets for Dragonfly-based servers.
You can reuse the logic as a package in another Go/Dragonfly project using these packages:
github.com/josscoder/knockback/config(config structure and validation)github.com/josscoder/knockback/knockback(disk-based preset manager)github.com/josscoder/knockback/handler(handler that applies knockback and cooldown)
knockback.Configure(knockback.Settings{
KnockbackPresetsPath: "presets",
})
if err := knockback.LoadKnockbackConfig(); err != nil {
panic(err)
}for p := range srv.Accept() {
p.Handle(handler.NewKnockBackHandler())
}cfg := &config.KnockbackConfig{
HorizontalForce: 0.35,
VerticalForce: 0.35,
AttackCooldown: 0.12,
HeightLimiter: 1,
}
if err := knockback.CreateOrUpdatePreset("ranked", cfg); err != nil {
panic(err)
}
if err := knockback.SelectPreset("ranked"); err != nil {
panic(err)
}{
"horizontal_force": 0.2,
"vertical_force": 0.2,
"attack_cooldown": 0.3,
"height_limiter": 1
}presets/.active: active preset name.presets/<name>.json: each preset configuration.
If no active preset exists, default is used.
- All values must be
>= 0. attack_cooldownis in seconds (supports decimals, e.g.1.5).height_limiteris an integer (Y layers).- Preset names only allow letters, numbers,
_, and-.
go run .In-game, use /kb to open the preset GUI menu.