v0.5.0
ServerDoctor v0.5.0
The first public release of ServerDoctor — the read-only analysis, diagnostics, and monitoring platform for Minecraft servers.
Read-only by design: ServerDoctor analyzes, evaluates, recommends, and warns — but never changes anything on your server. This invariant is enforced architecturally (no adapter exposes a writing method) and is locked in by automated architecture tests.
This release lays the stable foundation: engine, public API, persistence, and a fully working Paper plugin.
✨ Features
- Plugin Scanner — detects installed plugins, versions, authors, and dependencies.
- Dependency Scanner — flags missing hard dependencies.
- Conflict Scanner — matches installed plugins against an extensible conflict database (e.g. two permission or anti-cheat systems running in parallel).
- Performance Scanner — evaluates TPS, MSPT, and memory usage against thresholds.
- Security Scanner — flags plugins with incomplete metadata (an anchor point for future advisory sources).
- Recommendation Engine — turns findings into concrete, actionable recommendations.
- Public Developer API —
ServerDoctorApiwith access to performance, conflicts, risks, and recommendations; register your own scanners viaregisterModule(...). - Event System — thread-safe EventBus with events such as
AnalysisFinishedEvent,PluginConflictDetectedEvent,SecurityRiskDetectedEvent. - Persistence — SQLite backend (default) plus an in-memory fallback; every scan is stored automatically.
- In-game commands —
/serverdoctor scan | report | tps | conflicts | security | recs | history(alias/sd). - Periodic background scan every 5 minutes (asynchronous, Folia-safe via abstraction).
🧩 Modules
| Module | Contents |
|---|---|
| serverdoctor-common | Domain models, utilities |
| serverdoctor-api | Public contract, events, scanner SPI |
| serverdoctor-core | Engine, scanners, recommendations, conflict database |
| serverdoctor-storage | StorageProvider, repositories, SQLite + in-memory |
| serverdoctor-paper | Paper adapters, plugin, commands |
| serverdoctor-testing | Fixtures, JUnit 5 suite, ArchUnit rules |
📦 Requirements
- Paper 1.21.x
- Java 21
🚀 Installation
- Download
ServerDoctor-0.5.0.jar. - Drop it into your Paper server's
plugins/folder. - Start the server — the database is created automatically at
plugins/ServerDoctor/serverdoctor.db. - Run
/serverdoctor scanto trigger the first analysis.
👩💻 For Developers
Other plugins can consume the API (the installed ServerDoctor plugin provides the implementation at runtime — hence compileOnly):
repositories { maven("https://jitpack.io") }
dependencies {
compileOnly("com.github.shvquu.server-doctor:serverdoctor-api:v0.5.0")
}
if (ServerDoctorProvider.isAvailable()) {
ServerDoctorApi api = ServerDoctorProvider.get();
double tps = api.getPerformanceSnapshot().tps1m();
api.events().subscribe(PluginConflictDetectedEvent.class,
e -> getLogger().warning("Conflict: " + e.conflict().description()));
}
Set depend: [ServerDoctor] in your plugin's plugin.yml.
✅ Quality
- Full JUnit 5 test suite for core and storage.
- ArchUnit architecture tests enforce, as build breakers: no platform SDKs in the core, the clean-architecture dependency rule, and the read-only invariant.
⚠️ Not Yet Included (Planned)
- Platform adapters for Folia, Velocity, BungeeCord
- REST API and webhooks (Discord/Slack/Teams)
- PostgreSQL and MariaDB backends (SQLite + in-memory are ready)
- Update checker (Modrinth/Hangar/SpigotMC/GitHub), PlaceholderAPI bridge
- A real security advisory source (currently a metadata heuristic only)
Note: The API may still change before 1.0.0.
Full Changelog: https://github.com/Shvquu/server-doctor/commits/v0.5.0