## Refactor — no functional changes
This release is a pure code refactor. Gameplay behaviour is **identical** to the previous version.
---
### Package structure
Packages have been renamed to follow Java conventions (lowercase):
| Before | After |
|---|---|
| `...Utils` | `...util` |
| `...Combat` | `...combat` |
| `...Config` | `...config` |
| `...Listener` | `...listener` |
---
### What changed
**`CombatManager` (new: `combat` package)**
- Now fully owns `combatTimers`, `activeTimers` and `bossBars` maps
- Listeners no longer touch state directly — all changes go through the public API
**`PluginConfig` (new: `config` package)**
- Centralises every `config.getString / getBoolean / getInt` call
- Single instance passed to all listeners on startup
**Listener split**
- `CombatTagListener` — damage, projectile, explosion and enderpearl tagging
- `CombatRestrictionListener` — elytra, teleport, command block, mending, riptide
- `CombatZoneListener` — proximity tagging on join
- `CombatLogoutListener` — disconnect handling
- `AntiKillAbuse` — kill-farming detection
- `WorldGuardListener` — region entry guard (registered only when WorldGuard is present)
**`CombatLog` (main class)**
- Reduced to wiring only: config → manager → listeners
- `registerListeners()` is the single place to see which listeners are active
---
### Migration
No config changes. No permission changes. No command changes.
Simply replace the old jar with the new one and restart.
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" }