Server Doctor v1.0.0 - ccedf47

A plugin for all major minecraft servers, analyse and help to get better performance
ServerDoctor v1.0.0 — The first house call 🩺

Read-only diagnostics, monitoring and cross-node insight for Minecraft networks — across Paper, Folia, Velocity and BungeeCord, from a single jar.

This is 1.0.0 — the first stable release. ServerDoctor has grown from a single-server TPS reader into a full network diagnostics suite that never writes to your world, never touches gameplay, and tells you the truth about what's actually going on. No fabricated demo data, no silent fallbacks, no guesswork — just honest, actionable findings.




✨ Highlights

  • One jar, four platforms — Paper, Folia, Velocity and BungeeCord all load from the same artifact.
  • 11 read-only scanners — from TPS and memory to disk, JVM runtime and cross-node version drift.
  • Cross-node consistency — compare server, Java and plugin versions across every node sharing a database.
  • Five storage backends — In-Memory, SQLite, PostgreSQL, MariaDB and MongoDB.
  • Built to observe, never to interfere — a Clean-Architecture core with build-time guards that keep every adapter strictly read-only.




🖥️ Platforms

| Platform | Notes |
|----------|-------|
| Paper | Full feature set incl. in-game GUI and PlaceholderAPI hook |
| Folia | Region-aware scheduling supported |
| Velocity | Proxy-side diagnostics |
| BungeeCord | Proxy-side diagnostics |




🔍 The 11 scanners

1. Performance / TPS — tick rate and MSPT health.
2. Memory — heap usage, commitment and GC pressure.
3. Plugin conflicts — overlapping or clashing plugins.
4. Security risks — outdated, unmaintained or suspicious plugins, with an optional advisory feed.
5. Recommendations — concrete update and replacement suggestions.
6. Compatibility metadata — pluggable feed of known-incompatible combinations.
7. Historical regression — detects TPS/MSPT/RAM trending worse over your stored history.
8. Configuration review — best-practice checks for
Code:
server.properties
,
Code:
bukkit.yml
,
Code:
spigot.yml
,
Code:
paper-*.yml
and
Code:
velocity.toml
. Checks only fire when the relevant key is actually present — no false positives on partial configs.
9. Disk — free space and log directory size.
10. Runtime / JVM — Java version, heap sizing vs. system RAM, GC flags.
11. Cross-node consistency — version drift across every node writing to the same shared database.




🗄️ Storage backends

Pick what fits your setup in
Code:
config.yml
:

  • In-Memory — zero-config, ephemeral.
  • SQLite — local file, perfect for a single server.
  • PostgreSQL / MariaDB — shared SQL, dialect-aware upserts.
  • MongoDB — shared document store.

Cross-node tip: the cross-node scanner only sees other nodes through a shared database. On SQLite or In-Memory it stays quietly inactive (single node by design). Point several nodes at the same PostgreSQL/MariaDB/MongoDB instance — each with its own
Code:
network.node-name
— to light it up.




🔌 Integrations & monitoring

  • REST API
    Code:
    /health
    ,
    Code:
    /performance
    ,
    Code:
    /conflicts
    ,
    Code:
    /security
    ,
    Code:
    /recommendations
    ,
    Code:
    /report
    , plus a token-gated
    Code:
    /metrics
    endpoint in Prometheus format.
  • Webhooks — Discord, Slack and Microsoft Teams notifications on status changes.
  • Health Digest — a scheduled summary pushed to your webhook on the interval you choose.
  • PlaceholderAPI — auto-registers on Paper when PlaceholderAPI is installed.
  • Update checker — watches the repo and, on a new release, goes safely inert until you update.




🛠️ Operator tooling

  • Report export — write the latest report to disk as JSON, Markdown or HTML via
    Code:
    /serverdoctor export
    .
  • Baselines — pin a known-good snapshot with
    Code:
    /serverdoctor baseline pin
    , then
    Code:
    /serverdoctor baseline
    to see exactly what drifted since.
  • In-game GUI — browse findings, conflicts, security and recommendations from a chest menu (Paper/Folia).




⌨️ Commands

Code:
/serverdoctor
(aliases
Code:
/sd
,
Code:
/doctor
) —
Code:
scan
,
Code:
report
,
Code:
tps
,
Code:
conflicts
,
Code:
security
,
Code:
recs
,
Code:
history
,
Code:
gui
,
Code:
export
,
Code:
baseline
,
Code:
reload
. All output text lives in
Code:
messages.yml
and is fully customizable.




🧱 Under the hood

  • Clean Architecture with ArchUnit build-breakers — the platform SDKs can never leak into the core, and every adapter stays read-only.
  • Multi-module Gradle, JDK 21.
  • A unified exception hierarchy (
    Code:
    ServerDoctorException
    → configuration / API / analysis / storage), so failures surface clearly instead of crashing a scan.
  • Resilient scanning — one failing scanner is logged and skipped; the rest of the diagnostics still run.




🙏 Credits


A 1.0.0 is never the work of one commit — thank you to everyone who tested, filed precise bug reports, and helped sand down the rough edges.




📦 Getting started

1. Drop
Code:
serverdoctor-1.0.0.jar
into
Code:
plugins/
on each Paper/Folia/Velocity/BungeeCord instance.
2. Start the server once to generate
Code:
config.yml
and
Code:
messages.yml
.
3. (Optional) For cross-node, set a shared database and a unique
Code:
network.node-name
per node.
4. Run
Code:
/serverdoctor scan
and read the diagnosis.

Full documentation: see the [URL="https://github.com/Shvquu/server-doctor/wiki"]Wiki[/URL].
Full Changelog: https://github.com/Shvquu/server-doctor/compare/v0.9.2...v1.0.0

ServerDoctor is read-only by design. It observes, measures and advises — it never modifies your server.
# ServerDoctor v0.9.2

Two new analysis scanners — plugin compatibility assessment and historical **performance
regression** detection — both running automatically on Paper/Folia, Velocity and BungeeCord.

## ✨ Added

### Compatibility scanner
- New CompatibilityScanner (core) that assesses each plugin against the running server and
aggregates the signals into a transparent 0–100 risk score.
- Runtime signals (no network): declared api-version vs. the server's Minecraft version
(Paper/Folia), whether Folia support can be confirmed, and enabled state.
- Optional external metadata feed (compatibility.metadata, off by default) adds release
age, a Folia yes/no flag and known incompatibilities — honest by design: this data comes from
a feed you/the community maintain, never fabricated.
  • Score → severity: <15 OK · 15–39 LOW · 40–69 MEDIUM · 70–89 HIGH · ≥90 CRITICAL.
  • Runs on all platforms; on proxies the Minecraft-version/Folia signals are skipped.
  • PluginInfo gained an apiVersion field (populated by the Paper adapter from plugin.yml).

### Historical regression detection
- New RegressionScanner (core) that compares the older half of stored performance snapshots
against the newer half to detect gradual regressions in TPS, MSPT and RAM — catching
slow decline over days/weeks, not just spikes.
- Uses only data already persisted, via an injected PerformanceHistory
(limit -> storage.performance().recent(limit)).
  • Runs on all platforms; on proxies TPS/MSPT (NaN) are skipped while RAM is still compared.
  • Thresholds: TPS drop ≥8 %, MSPT rise ≥25 %, RAM rise ≥30 % (with HIGH/CRITICAL tiers);
needs ≥8 stored samples. Example finding:
Performance regression vs baseline: TPS 19.8 -> 18.4 (-7%); MSPT 14.0ms -> 23.0ms (+64%).

Both scanners surface in /serverdoctor report, the GUI, the REST /report endpoint and
webhooks (which fire on state change, so a persisting issue isn't spammed).

## 🔧 Changed
- ServerDoctorCore.bootstrap now accepts a single ScannerSources object bundling the optional
advisory, compatibility and performance-history sources. The previous overloads
(bootstrap(platform), …, AdvisorySource, …, AdvisorySource, CompatibilityMetadataSource)
are kept and delegate to it — no caller is forced to change.
- PluginInfo gained a 7th component apiVersion; the prior 6-argument constructor is retained
(delegates with an empty api-version), so existing adapters, tests and the REST serializer
compile unchanged.

## 📦 Setup (new optional config)
YAML:
compatibility:
  metadata:
    enabled: false
    feed-url: ""        # HTTPS feed (see compatibility.sample.txt)
    refresh-minutes: 1440
Regression detection needs no config — it works once PerformanceHistory is wired into
bootstrap (one line per platform; storage must be opened before bootstrap). Both scanners are
registered automatically; unwired optional sources simply stay quiet.

Full Changelog: https://github.com/Shvquu/server-doctor/compare/v0.9.0...v0.9.2
## 0.9.0 - 2026-06-18

### Added
- BungeeCord support: new serverdoctor-bungeecord proxy adapter (HAS_PLUGINS + IS_PROXY).
The same universal jar now runs on Paper/Folia, Velocity and BungeeCord (plugin.yml +
velocity-plugin.json + bungee.yml side by side), with full storage-backend selection.
- In-game GUI (/serverdoctor gui) for Paper/Folia: status overview plus Performance,
Conflicts, Security, Recommendations and History screens, with a Refresh button.
Folia-safe; read-only.
- Configurable automated scan (Paper/Folia) via tasks.scan
(enabled, interval-seconds, initial-delay-seconds, warn-on-high).
- Security advisory source (all platforms, off by default): AdvisorySource +
RemoteAdvisorySource checking installed plugins against a real, external feed
(security.advisory). Never invents advisories.
- gui and security.advisory config sections.

### Changed
- REST API and webhooks are now available on BungeeCord too (previously Paper/Velocity only);
all three platform mains wire storage, advisory, REST and webhooks consistently.
  • The hard-coded 5-minute background scan (Paper) is now config-driven.
  • ServerDoctorCore.bootstrap gained an AdvisorySource overload; bootstrap(platform) is
unchanged.

### Fixed
- BungeeCord now writes its default config.yml and messages.yml on first start
(class-relative resource loading).
- Configurable scan interval clamped to a sane minimum (10 s).


Full Changelog: https://github.com/Shvquu/server-doctor/compare/v0.8.0...v0.9.0
# ServerDoctor v0.8.1 - 0c07127

An in-game GUI and configurable automation for Paper/Folia.

## ✨ Added
- In-game GUI — open with /serverdoctor gui (alias /sd gui). A read-only menu with a
status overview plus screens for Performance, Conflicts, Security,
Recommendations and History, and a Refresh button that re-runs the analysis.
- Folia-safe by design — screens open and rebuild on the player's entity scheduler, and
Refresh runs the analysis on the async scheduler. Clicks are routed via an InventoryHolder
and always cancelled (nothing in the server is ever modified).
- Configurable automated scan in config.yml under tasks.scan
(enabled, interval-seconds, initial-delay-seconds, warn-on-high) — e.g. run a full
analysis every 120 seconds.
- gui config section (enabled, title).

## 🔧 Changed
- The previously hard-coded 5-minute background scan is now driven by config.yml. Defaults
preserve the old behaviour; set your own interval (minimum 10 seconds).

## 🐛 Fixed
  • The scan interval is clamped to a sane minimum so a misconfiguration can't hammer the server.
  • Various stability and performance improvements.

## 📦 Setup
YAML:
gui:
  enabled: true
  title: "ServerDoctor"

tasks:
  scan:
    enabled: true
    interval-seconds: 120
    initial-delay-seconds: 30
    warn-on-high: true
Open it in-game with /serverdoctor gui (permission serverdoctor.admin). The GUI is
Paper/Folia only.

Full Changelog: https://github.com/Shvquu/server-doctor/compare/v0.8.0...0c07127
EULA: Free EULA
101 Views
2 Downloads
Jun 18, 2026 Published
Jun 26, 2026 Updated
Not yet rated
16.9 MB File size
Open source
  1. Yes
DRM-free
  1. Yes
Unobfuscated
  1. No
Type
  1. Staff
  1. Technology
  1. Optimization
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Bungee
  1. Folia
  1. Velocity
  1. Purpur
Supported versions
  1. 26.1
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
Supported languages
  1. English
  1. German
Creator
Owner
Recommended for you
Not yet rated
0 purchases
#1 BuiltByBit Plugin ~ Protects your server from crash packet exploits ~ Folia Support
5.00 star(s) 141 ratings
4,207 purchases
Create items, blocks, mobs, emojis, and more with automatic resourcepack generation!
5.00 star(s) 53 ratings
3,169 purchases
Protect your server from crash/dupe/packet exploits with the ultimate security fix plugin.
5.00 star(s) 44 ratings
3,097 purchases
High Performance | Customizable | Cross-Version | GeyserMC | Folia Support
4.50 star(s) 71 ratings
2,812 purchases
101 Views
2 Downloads
Jun 18, 2026 Published
Jun 26, 2026 Updated
Not yet rated
16.9 MB File size
Open source
  1. Yes
DRM-free
  1. Yes
Unobfuscated
  1. No
Type
  1. Staff
  1. Technology
  1. Optimization
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Bungee
  1. Folia
  1. Velocity
  1. Purpur
Supported versions
  1. 26.1
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
Supported languages
  1. English
  1. German
Creator
Owner
Recommended for you
Not yet rated
0 purchases
#1 BuiltByBit Plugin ~ Protects your server from crash packet exploits ~ Folia Support
5.00 star(s) 141 ratings
4,207 purchases
Create items, blocks, mobs, emojis, and more with automatic resourcepack generation!
5.00 star(s) 53 ratings
3,169 purchases
Protect your server from crash/dupe/packet exploits with the ultimate security fix plugin.
5.00 star(s) 44 ratings
3,097 purchases
High Performance | Customizable | Cross-Version | GeyserMC | Folia Support
4.50 star(s) 71 ratings
2,812 purchases
Top