[1] Big one: blocked commands actually stay blocked now. `/fly`, `/pvp`, `/home` and the rest aren't slipping through anymore, and yes, that includes the sneaky `/minecraft:fly`, `/cmi:fly`, `/f` style variants people were using
[2] OPs no longer bypass combat command restrictions just for being OP. If you want staff to be exempt, you need to give them `justcombat.bypass.commands` directly. Sorry, this was a footgun
[3] You can't toggle `/pvp` while in combat anymore, even if some other plugin tries to handle it before us
[4] Those `DataSource is not initialized or has been closed` walls of red on shutdown? Gone. Stats now finish saving before the pool gets closed
[5] If your console was getting absolutely hammered with debug lines on every mob hit, that's because `performance.debug` defaulted to `true`. New installs default to `false` now. Set it to `false` in your existing config if you haven't already
[6] Boss bar timer was only ticking once a second and looked stuck. It refreshes 4x per second now, much smoother
[7] `streak_ended` and a few other broadcasts were silently disappearing when the prefix string was missing. Fixed
[8] Broadcasts (like killstreak announcements) ignored language files and always pulled from `messages.yml`. They respect the active language now
[9] `your_streak` was defined in messages.yml but never actually sent to the killer. It is now
[10] Damage debug stopped firing on every arrow that hits a skeleton. Only player-vs-player combat triggers it now
### IMPROVEMENTS
[11] `/pvp` and `/justcombat` get force-registered via Bukkit's CommandMap so Essentials (and similar) can't steal them anymore
[12] Added `/combat` as an alias for `/justcombat`
### NEW FEATURES
[13] Flight gets cut the second you enter combat. Creative and Spectator are skipped. Switch off with `combat.disable_fly_on_combat: false` or grant `justcombat.bypass.fly` to whoever should keep their wings
[14] Riptide tridents finally have a cooldown. The old trident cooldown only fired on actual throws, so anyone in water or rain could spam riptide and dodge it. New section: `advanced_pvp.trident.riptide.cooldown`
[15] Same idea for melee trident hits. Some people were just bonking with the spear instead of throwing it to bypass the cooldown. New section: `advanced_pvp.trident.lunge.cooldown`
### CONFIG
[16] Added `combat.disable_fly_on_combat` (default `true`)
[17] Added `advanced_pvp.trident.riptide.cooldown` (10s by default)
[18] Added `advanced_pvp.trident.lunge.cooldown` (2s by default)
[19] Added `visual.boss_bar.update_interval_ticks` (default `5`)
[20] `performance.debug` now defaults to `false` for new installs. Your existing config isn't touched
[21] Configs migrate automatically on first start. Anything you've customised stays the way you set it
### PERMISSIONS
[22] Added `justcombat.bypass.fly` (default `false`)
[23] `justcombat.bypass.trident.cooldown` covers throw, riptide, and lunge now (one perm, all three)
### COMPATIBILITY
[24] Tested on Paper 1.21.11, Paper 26.1.2, Folia, and Spigot.
### FOR SERVER ADMINS
If your staff used to bypass combat restrictions just by being OP, you need to hand them `justcombat.bypass.commands` from your perms plugin now. That's the main thing that might bite you on upgrade.
Console too noisy after upgrading? `performance.debug: false` in your existing config.
Don't like that flight gets killed on combat? `combat.disable_fly_on_combat: false`, or just give the relevant rank `justcombat.bypass.fly`.