Spigot and Paper plugins
How to get the best Bukkit, Spigot or Paper plugin from Codexe, in Java or Kotlin. What to put in the request, versions, plugin.yml, dependencies, the build and common issues.
Updated
On this page
The Bukkit/Spigot/Paper types produce a server plugin that runs on Paper, Spigot and their forks. Choose Java (Maven project) or Kotlin (Gradle project with build.gradle.kts).
#What to put in the request
- Server software and version: "Paper 1.21.4" or "Spigot 1.20.1". Paper has a larger API than Spigot. Code written for Spigot runs on Paper, not the other way around, so ask for Spigot if you need both.
- Commands with arguments, who can use them and tab completion.
- Permissions with their defaults (
true,op,false). - config.yml keys you want to be editable.
- Storage: YAML, SQLite, MySQL, or in memory.
- Integrations: Vault, PlaceholderAPI, LuckPerms, WorldGuard…, named explicitly so they're added as dependencies.
A Paper 1.21.4 plugin (Java) called Bounties.
- /bounty set <player> <amount>: takes money via Vault, adds it to the player's bounty.
- Killing a player with a bounty pays it to the killer.
- /bounty top shows the 10 highest bounties.
- Bounties stored in SQLite. Minimum bounty 100 (config.yml).
- Permission bounties.set (default true).A Paper 1.21.4 plugin in Kotlin called Bounties, same features as above.
Use Kotlin idioms (data classes, extension functions) but keep the Bukkit API usage standard.#What Codexe generates
- A Maven project (Java) or Gradle project (Kotlin) with the right API dependency.
- The main class extending
JavaPlugin, plus command, listener and storage classes. plugin.ymlwith the main class,api-version, commands and permissions, andconfig.ymlwhen there are settings.
name: Bounties
version: 1.0.0
main: eu.codexe.bounties.Bounties
api-version: '1.21'
depend: [Vault]
commands:
bounty:
description: Manage bounties
permissions:
bounties.set:
default: true#Versions and Java
Codexe reads the Minecraft version from the build file and builds with Java 17 (before 1.20.5), Java 21 (1.20.5 and newer) or Java 25 (26.x). If you don't say a version, the Paper/Spigot API 1.20.6 is used.
#Build and verification
Codexe compiles the plugin before calling it Ready and checks that the JAR contains the classes and a plugin.yml (or paper-plugin.yml). Plugin builds usually take well under a minute. See Compile.
#Install
Download the JAR, put it in plugins/, restart the server (don't use /reload), and check the console for errors on startup.
#Common issues
| Symptom | Likely cause |
|---|---|
| Plugin doesn't load, "main class not found" | main: in plugin.yml doesn't match the class. Ask the chat to fix it, or check after manual renames. |
| "Unsupported API version" on an older server | The plugin targets a newer API than your server. Say your exact server version in the request. |
| A command does nothing | The command is missing from plugin.yml, or the player lacks the permission. |
NoClassDefFoundError for Vault or similar | The dependency plugin isn't installed on the server. |
| Builds, but a feature misbehaves | Describe the exact in-game behaviour in the chat. Verification checks the build, not gameplay. |