Supported platforms
| Server software | Supported | Minecraft |
|---|---|---|
| Paper | ✔ | Built against paper-api 26.1.2 |
| Spigot | — | — |
| Bukkit | — | — |
| Folia | — | — |
Paper only, by design
paper-dispatch depends on APIs that only Paper has:
| API used | Why Spigot/Bukkit cannot work |
|---|---|
io.papermc.paper.command.brigadier | Paper's Brigadier Commands API |
CommandSourceStack | Paper-only command source type |
LifecycleEventManager (COMMANDS) | Paper's lifecycle registration |
paper-plugin.yml, PluginBootstrap | Paper's plugin format |
There is no Bukkit CommandExecutor fallback. Running this on Spigot fails at
class-load, not gracefully.
Java
Built with --release 21, so Java 21 or newer is required. CI also runs the
test suite on Java 25, and JitPack builds releases on JDK 25 — but the bytecode
target stays 21, so a Java 21 server can load it.
Paper version
Built against paper-api:26.1.2.build.53-stable.
The build target above is what the library is compiled and tested against. It has not been verified against older Paper releases, and Paper's Brigadier API has moved more than once. If you need an older target, test it rather than assuming.
Folia
Not claimed. The code is written with region-threading in mind — the command
manager checks isPrimaryThread() and hops onto the global region scheduler
before touching server-global command state, and the offline-player cache does
its work asynchronously — but it has not been verified on a real Folia server.
Treated as unsupported until tested, on the principle that a wrong "yes" here generates more bug reports than an honest "not tested".
What is actually tested
The test suite runs against MockBukkit, which covers the command tree, flag parsing, requirements and the manager's bookkeeping. Two areas are structurally untestable there and are only exercised on a real server:
- everything reflective in Paper's internal
PaperCommands— the class does not exist under MockBukkit; Commands.restricted(...), which MockBukkit does not implement.