Spigot edition
How the Paper and Spigot jars differ, and how to build the Spigot edition.
One plugin, two jars
The Spigot edition (1.21.11 and 26.2) has the same AI, commands, config and features as the Paper edition. It's built from the same source, with a few files swapped for Spigot versions.
It's a separate jar so the Paper build loses nothing: Paper keeps its own faster calls, and neither jar carries code for the other server.
What differs inside
| Part | Paper | Spigot |
|---|---|---|
| Chat | Adventure components | Classic colour codes, rendered to look the same |
| Events | AsyncChatEvent, Paper's knockback event | AsyncPlayerChatEvent, Bukkit's knockback event |
| Platform | Paper methods (current tick, replaceable blocks, nearby players…) | The equivalent vanilla or Bukkit calls |
| Server access | Direct CraftBukkit casts | CraftBukkit found at startup (Spigot puts the revision in the package name) |
| Bot skins | Paper's profile API | Swaps the profile directly |
| Finished loading | Fields looked up by name | The "player loaded" packet a real client sends |
For anyone using the plugin nothing changes: the commands and config.yml are identical.
Building the Spigot edition
You need Spigot's BuildTools, run with
--remapped for each version:
java -jar BuildTools.jar --rev 1.21.11 --remapped
java -jar BuildTools.jar --rev 26.2 --remapped
- Copy the
spigot-<version>.jarfiles BuildTools produces into.spigot/at the repo root. - Run
pvpbot-spigot/build.sh 1.21.11 26.2. - The jars end up in
pvpbot-spigot/dist-<version>/PvpBot-<version>.jar.
If BuildTools rejects --remapped for a version, build that version without it: the script then compiles
against the server jar directly.
| Variable | Default | Meaning |
|---|---|---|
SPIGOT_JARS | .spigot/ | Where the Spigot jars are. |
M2 | ~/.m2/repository | The local Maven repository (where --remapped installs the mappings). |
JDK | java on the PATH | At least 21 for 1.21.11, at least 25 for 26.2. |
The script works on Linux, macOS and Git Bash on Windows.
Status
Every change to the Spigot edition is checked against the Bukkit API, and the check fails if it uses anything only Paper has. It hasn't been run on a live Spigot server yet: if you hit a problem, please report it.