Testing
This page describes how SilkMC validates compatibility with the Paper, Bukkit, and Spigot plugin ecosystems. It is intended for contributors and server operators who want to reproduce or extend the suite.
Initial validation targets
- Paper-oriented plugins with scheduler usage.
- Bukkit and Spigot plugins with legacy sync assumptions.
- Vanilla gameplay systems: redstone, chunk loading, combat, inventories, commands, networking, scoreboards, world generation.
Suggested matrix
| Tier | Plugin pack | Goal |
|---|---|---|
| 1 | No plugins | Verify clean SilkMC startup and vanilla gameplay regressions. |
| 2 | Paper-only plugin pack | Verify modern plugins keep their behavior unchanged. |
| 3 | Mixed Paper/Bukkit/Spigot plugin pack | Verify legacy plugin survivability through the compatibility layer. |
| 4 | Scheduler-heavy plugin pack (lots of runTaskTimer) | Verify scheduler bridging stability and overhead. |
| 5 | Teleport-heavy plugin pack (warps, multiverse) | Verify teleport bridging stability. |
Pass criteria
- Clean startup with SilkMC branding in the banner and
/version. - No thread-ownership crashes during smoke tests.
- Expected
/versionand build metadata output. - World save/load integrity preserved.
- Legacy
runTask/runTaskTimercalls execute withoutUnsupportedOperationException. - Legacy synchronous
teleportcalls succeed or downgrade to a clear warning rather than crash. - Compatibility config file (
silkmc-compatibility.yml) is auto-generated on first startup with sane defaults. - Compatibility log entries are actionable: plugin name, phase, and operator-facing reason are present.
Smoke test checklist
The SilkMC team runs this checklist before tagging a release.
- Server starts on JDK 25 with default config.
silkmc-compatibility.ymlis generated on first run.- Login, chat, inventory, and command flow work in survival mode.
- A second player can join while the first explores far chunks (forces region split).
- At least one legacy
runTaskand one legacy syncteleportplugin runs without crashing. - No unhandled
UnsupportedOperationExceptionappears inlogs/latest.log. - Compatibility warnings appear when expected and include plugin name and phase.
- World saves and reloads cleanly across restart.
CI smoke test
Added in v0.1.5-alpha. GitHub Actions builds SilkMC, creates the paperclip jar, boots a real server,
and checks latest.log. The curated plugin pack is pinned by explicit versioned download URLs, and the
workflow fails on unexpected ERROR or SEVERE log lines outside
ci/smoke-test-allowlist.txt. LuckPerms remains the key regression target for the scheduler bridge and
delay/period clamp path.
Reporting compatibility outcomes
Open issues using the "Plugin compatibility" template. Include:
- SilkMC build hash.
- Plugin name and version.
- Whether the plugin was marked
silk-supportedorfolia-supported. - Relevant compatibility log lines.
See also: plugin reports.