24 lines
630 B
Go
24 lines
630 B
Go
|
|
package session
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/df-mc/dragonfly/server/world"
|
||
|
|
"github.com/sandertv/gophertunnel/minecraft/protocol/packet"
|
||
|
|
)
|
||
|
|
|
||
|
|
// RequestAbilityHandler handles the RequestAbility packet.
|
||
|
|
type RequestAbilityHandler struct{}
|
||
|
|
|
||
|
|
// Handle ...
|
||
|
|
func (a RequestAbilityHandler) Handle(p packet.Packet, s *Session, _ *world.Tx, c Controllable) error {
|
||
|
|
pk := p.(*packet.RequestAbility)
|
||
|
|
if pk.Ability == packet.AbilityFlying {
|
||
|
|
if !c.GameMode().AllowsFlying() {
|
||
|
|
s.conf.Log.Debug("process packet: RequestAbility: flying flag enabled while unable to fly")
|
||
|
|
s.SendAbilities(c)
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
c.StartFlying()
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|