What a plugin API provides
An API is a published set of hooks the server offers to outside code: events to listen for, commands to register, and services to call. Plugins compile against it, and the server loads them at startup.
This is what makes plugins fundamentally different from mods. A plugin never touches the client, so players install nothing and compatibility problems stay on the server side.
How plugins are loaded
Plugin jars live in the plugins folder. At startup the server reads each jar’s metadata, checks it against the API version it targets, and enables it — printing a line in the console when it does.
That startup step is where most problems surface: a missing dependency, an incompatible version, or two plugins claiming the same command all announce themselves during load.
Plugins versus mods, precisely
Plugins run server-side on Paper, Spigot, or Purpur and change how the server behaves. Mods run on the client and the server together — with Forge or Fabric — and can add blocks, items, and mechanics that vanilla clients cannot render.
The dividing line is content: if it needs new assets, it is a mod; if it only needs new rules, it is a plugin.
Why compatibility usually just works
Because Spigot and Paper kept the original API intact while extending it, old plugins continue to function. The API is versioned, so a plugin declares what it targets and the server refuses jars written for a future version.
In practice that means the ecosystem is stable but conservative: a plugin that has not been updated across several Minecraft releases may still load, and still be a poor choice.
FAQ
Common questions
Do I need Paper to run Bukkit plugins?
You need a server that implements the Bukkit API — Paper, Spigot, or Purpur. Vanilla cannot load plugins at all, because it has no plugin API and no plugins folder to read.
Are plugins safe to install?
Only from sources you trust. A plugin runs with the server’s full authority, so a malicious jar can read files, change the world, and take over the console. Stick to Hangar, Modrinth, and SpigotMC, and check that the project is maintained.