Skip to content

v0.5.0

Choose a tag to compare

@Shvquu Shvquu released this 13 Jun 10:15
· 96 commits to main since this release
6408c78

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 APIServerDoctorApi with access to performance, conflicts, risks, and recommendations; register your own scanners via registerModule(...).
  • 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

  1. Download ServerDoctor-0.5.0.jar.
  2. Drop it into your Paper server's plugins/ folder.
  3. Start the server — the database is created automatically at plugins/ServerDoctor/serverdoctor.db.
  4. Run /serverdoctor scan to 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