### Fixed
- **Forge**: Fixed `WritingException: Unsupported value type: HashMap` crash when using `/protectcord whitelist add`, `/protectcord warn`, audit log, or any purge command
- **Forge**: Fixed the same HashMap crash recurring when existing audit/warning entries were read back and re-saved
- **Forge**: Fixed `removeWarning` and all `purge` commands also crashing with the HashMap serialization error
- **Forge**: Fixed command aliases (`/pc`, `/protect`) silently overwriting the main `/protectcord` command tree
- **Forge**: Fixed `player.connection.disconnect()` being called from an async thread — now scheduled on main server thread
- **Forge**: Fixed missing `ServerStoppingEvent` handler — mod resources now properly shut down when server stops
- **Forge**: Fixed `isValidIP()` performing DNS resolution (accepting hostnames as valid IPs)
- **Forge**: Fixed mods.toml version range allowing mod to load on incompatible Forge versions (MC 26.x)
- **Forge**: Fixed startup banner showing wrong MC version range
- **Forge**: Fixed double IP lookup counter in bStats, unsafe cast in audit logs, nil UUID in purge, mutable internal lists
### Changed
- **All platforms**: Dashboard tracking now logs HTTP errors to console instead of silently failing
- **All platforms**: Added `User-Agent` header to dashboard tracking requests
- **Dashboard API**: API key validation now auto-syncs keys from main ProtectCord API — fixes players not appearing in Game Management
- **Main API**: Added `/plugin/validate-key` endpoint for dashboard key synchronization
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" }