**CelestCombat-Pro 2.0.0: Folia & Canvas Stability Update**
**Fixes**
- Fixed the crash on Folia/Canvas where quitting while in combat threw "IllegalStateException: Dispatching command async" whenever punishment_commands or attacker_reward_commands were set. Commands now run on the global scheduler, in order, once each.
- Fixed kill rewards sometimes being given twice because of a cooldown race.
- Fixed the "last attacker" tracking. It was broken because two copies of the listener each kept their own map.
- Fixed a possible duplicate combat expiry message.
- Fixed a few NPEs: inventory click with empty cursor, UXM claims teleport with no destination, and combat countdown during a state change.
- Fixed riptide rollback trying to compare locations across worlds.
- Fixed cooldown and newbie protection data files being written by two saves at once.
**Folia / Canvas**
- Player stuff now runs on the player's own thread: messages, titles, action bars, sounds, boss bars, inventory, flight, velocity, teleports, kicks.
- Block changes, particles and barrier blocks run in the correct region.
- Async tasks only do file and network work now. They don't touch the game.
- WorldGuard and GriefPrevention barrier code, the newbie protection timer and both countdown displays are region safe.
**Performance**
- One shared timer handles combat and cooldown countdowns instead of separate tasks.
- Removed the countdown task that started every time someone threw a trident.
- Command blocking rules are compiled once, no config reads on every command.
- Death animation settings, combat logout settings and messages are cached.
- GriefPrevention barrier scan doesn't allocate a Location per block anymore.
- Update check runs once an hour instead of on every player join.
**Other**
- All plugin tasks stop on disable. Nothing keeps running after a reload.
- Combat, pearl, trident and barrier state gets cleaned on quit, death, reload and shutdown.
- No config or message changes needed. Drop in and go.
- Paper, Leaf, Folia, Canvas. MC 1.21.11, Java 21 and 25.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }