Fly

[X] Definitive
Flight envelope — seven airborne sub-signals while groundedProxy is false: physics breach, hover/AirWalk, ascend-without-jump, and the four step-8 sub-signals (FlyB air-friction band, Blink midair freeze, AntiKick dip cadence, StrafeHop impulse), all sharing this VL pool. Ported from AvA checkFlight + Nemesis FlyB.
id: flyEnvelope  ·  class: FlyEnvelopeCheck  ·  group: Movement

What it detects

Flight envelope — seven airborne sub-signals while groundedProxy is false: physics breach, hover/AirWalk, ascend-without-jump, and the four step-8 sub-signals (FlyB air-friction band, Blink midair freeze, AntiKick dip cadence, StrafeHop impulse), all sharing this VL pool. Ported from AvA checkFlight + Nemesis FlyB.

Observer signature

Physics breach: dy exceeds gravity-predicted (prevDeltaY-0.08)*0.98 by > threshold (0.1) with recentDescend < 0.5, sustained >=2 ticks. Hover: |dy| < 0.01 with horizontal > 0.1 for >=3 ticks. Ascend: dy > 0.2 with no observed jump impulse within 2 ticks (jump impulse = prevDeltaY < 0.15 && dy > 0.3 && dy < 1.0, debounced >6 ticks). Four more share the pool: Fly(FlyB) applies the Nemesis vertical air-friction kernel (prevDeltaY-0.08)*0.98 at a 0.05 tolerance, owning the 0.05-0.1 band the 0.1 breach misses, sustained >= 4 ticks; Fly(Blink) is a pure midair full freeze (|delta|^2 < 0.0001) held for blinkFreezeTicks (default 30, clamped 5..200); Fly(AntiKick) holds dy within +-0.05 of a hover point for >= 40 ticks with periodic ~20-tick downward dips <= 0.04; Fly(StrafeHop) counts repeated first-tick-jump dy inside a tight band around 0.40123128, >= 5 times.

False-positive guards

  • Vehicle/gliding/riptide/swimming exempt
  • Velocity window (tick - velocityTick < 30)
  • Teleport exempt (tick - lastTeleportTick < 10, clears the descend window + hoverTicks)
  • Hurt exempt (tick - hurtTick < 6): the ~6-tick KB peak plus the residual upward drift after it is exactly what the 30-tick velocity window misses on servers that do not broadcast other-player velocity
  • Climbable at the feet clears all four streak counters: a climb up or down is not flight, and no partial streak survives the tick the player steps off
  • Server-lag exempt (shared lag + burst windows), and the sample is skipped rather than pushed, so a hitch cannot poison the >=2-of-5 breach gate
  • Solid block within 2 above head suppresses ascend (chunk unloaded -> treated as blocked)
  • Sustained-levitation guard infers Levitation (LEV_GUARD_TICKS=20) and stops accumulating

Configuration

Defaults (editable in-game via the YACL config screen or /ius config):

FieldDefault
enabledtrue
setbackVL5.0
decay0.5
threshold0.1
breach sustain>=2 ticks
hover|dy|<0.01, horiz>0.1, 3 ticks
LEV_RISE0.2
LEV_GUARD_TICKS20
Fly(FlyB) band0.05-0.1, >= 4 ticks
Fly(Blink)|d|^2 < 0.0001 for blinkFreezeTicks (30, clamped 5..200)
Fly(AntiKick)+-0.05 of a hover point for >= 40 ticks, ~20-tick dips <= 0.04
Fly(StrafeHop)0.40123128 band, >= 5 times

Source

src/main/kotlin/dev/iustitia/checks/movement/FlyEnvelopeCheck.kt  ↗