DisguiseAnimationController
Per-disguise state machine driving reserved animation names. Priority (highest wins each tick): attack >jump >sneak >walk >idle.
Event-driven triggers (arm swing, sneak toggle) fire on the main thread and set volatile flags that the async tick consumes. All other inputs (location, ground state) are read directly from the player each tick via async-safe Bukkit calls.