Skip to content
Platforms

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
  1. What to put in the request
  2. What Codexe generates
  3. Versions and Java
  4. Build and verification
  5. Install
  6. Common issues

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.
Text
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).
Text
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.yml with the main class, api-version, commands and permissions, and config.yml when there are settings.
YAML
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

SymptomLikely 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 serverThe plugin targets a newer API than your server. Say your exact server version in the request.
A command does nothingThe command is missing from plugin.yml, or the player lacks the permission.
NoClassDefFoundError for Vault or similarThe dependency plugin isn't installed on the server.
Builds, but a feature misbehavesDescribe the exact in-game behaviour in the chat. Verification checks the build, not gameplay.
Spigot and Paper plugins | Codexe Docs