ClassAbilityGestureState
Pure state machine for the Java F-key ability layer.
F opens a short selection window. A second plain F inside that window selects mobility. Hotbar keys 1, 2 and 3 select mobility, signature and utility. Keys 7, 8 and 9 mirror those bindings so a player can still activate the ability assigned to their already-selected slot, which a vanilla client does not report as a slot change. Left click selects signature; right click selects utility inside the window. Bedrock clients have no F key, so for them starting to sneak opens a longer window, and a jump or a hotbar selection is mobility, since a second sneak is already a double-tap for sneak enchantments. The router reports jumps from Bedrock clients only. The state contains no Bukkit objects, which keeps timing and precedence testable without a server.