MaceSmash

[X] Definitive
MaceKill fall-height fake — a mace-holder warps Y via position-only packets around an attack to inflate the mace's fall-distance smash damage. Visible as a |Δy| > 1.5 spike within ±2 ticks of the attack with no genuine fall lead-in (plan §7.1).
id: maceSmash  ·  class: MaceSmashCheck  ·  group: Combat

What it detects

MaceKill fall-height fake — a mace-holder warps Y via position-only packets around an attack to inflate the mace's fall-distance smash damage. Visible as a |Δy| > 1.5 spike within ±2 ticks of the attack with no genuine fall lead-in (plan §7.1).

Observer signature

On AttackEvent snapshots pendingAttack + attackMaceHeld (mainHand is MaceItem) + attackPos. process defers to attack+2, then over a 6-entry Δy ring flags (level 1.5) when any tick in [attack-2, attack+2] has |Δy| > threshold (1.5) AND not a genuine fall (attack-2 & attack-1 both ≤ -0.5) AND not a bounce (upward spike preceded by a descent). Reads deltaY/prevDeltaY directly; NEVER reads lastTeleportTick (the >8b heuristic must not exempt it — §8.3).

False-positive guards

  • Vehicle/gliding/riptide/swimming exempt
  • 1.8-era skip (ProtocolDetector.is1_8OrLess) — no mace item; held-mace check is the real 1.21+ gate
  • Genuine-fall exemption: attack-2 AND attack-1 both Δy ≤ -0.5 (sustained descent leading in) → real high-fall smash exempt
  • Bounce exemption: an upward spike preceded by a descent (slime/wind-charge landing) is legit
  • Standard lag gate (tick - lastServerLagTick ≤ 8 or lastLagBurstTick ≤ 3) — batched catch-up snaps mimic the signature
  • Deliberately NOT exempt on lastTeleportTick (>8b heuristic) — the Y warp IS the signal
  • Dedup: one flag per attack (lastFlaggedAttack)

Configuration

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

FieldDefault
enabledtrue
setbackVL5.0
decay0.05
threshold1.5
flag level1.5
windowattack ± 2 ticks (deferred eval at attack+2)
Δy ring6 entries
genuine-fall lead-inΔy ≤ -0.5 at attack-2 AND attack-1
lag window8 / 3 ticks

Source

src/main/kotlin/dev/iustitia/checks/combat/MaceSmashCheck.kt  ↗