Describe the plugin and Codella writes it against the Spigot API — listeners, command executors, plugin.yml, config and all — then compiles it in the cloud for the Minecraft version your server actually runs, from 1.8 through 1.21 and later.
@EventHandlerpublic void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); if (!player.hasPlayedBefore()) { economy.depositPlayer(player, config.getDouble("welcome-bonus")); Bukkit.broadcastMessage(prefix + player.getName()); }}Command executors registered properly through plugin.yml rather than bolted onto onCommand, with aliases, per-rank permission nodes and defaults, argument validation, usage messages, and tab completers that actually complete.
Listeners registered against the right events at the right priority, with cancellation handled before state changes rather than after — the mistake that causes duplicated items and ghost blocks in hand-written plugins.
Chest menus, pagination, confirmation dialogs and click routing, with the inventory-safety cases covered: clicks cancelled, shift-click and number-key swaps blocked, and holders checked so a menu can’t be confused with a chest.
A config.yml generated with defaults and comments, saveDefaultConfig wired in, reload handling that does not leak listeners, and either flat-file or database persistence depending on what the plugin has to remember.
Repeating tasks on the Bukkit scheduler, long work moved off the main thread, and results handed back on the main thread before touching the world — because touching a world object asynchronously is how a server deadlocks.
Vault economy and permissions, PlaceholderAPI expansions, WorldGuard region checks and similar hooks, declared as soft dependencies so your plugin still loads when the optional one is missing.
NoSuchFieldError on the first block place.The chosen version is written into api-version so the server stops applying legacy compatibility conversion to a modern plugin — a silent source of odd behaviour in plugins that omit it.
Running Paper? Generate against the Paper API instead.
A Spigot 1.20 plugin with a /warp GUI, warps stored in config.yml, per-warp permission nodes, a 5-second teleport warmup that cancels on movement, and a Vault charge of 250 per teleport.
Everything from the 1.8 API that legacy PvP servers still run through to the current 1.21 releases. The Minecraft version you pick drives the api-version in plugin.yml and the API surface the code is written against, which matters because material names, entity types and several event signatures changed between those releases.
Yes. Paper and Purpur are forks of Spigot and load Spigot plugins unchanged, so a plugin generated against the Spigot API runs on all three. If you specifically want Paper-only APIs — async chat, the component API, better scheduler access — pick Paper as the target instead and the generator will use them.
Yes. Tell it which plugins the result has to work alongside and it wires up the soft dependencies, the plugin.yml depend or softdepend entries, and the service lookups — Vault for economy and permissions, PlaceholderAPI for placeholders, WorldGuard for region checks, and so on.
It avoids them by default, and that is deliberate: NMS breaks on every Minecraft update and reflection hides the breakage until runtime. Where a feature genuinely has no API equivalent it will use the safest available approach and tell you what it did, so you know which part of the plugin will need attention after a server upgrade.
A complete plugin project: the main class, listeners, command executors and tab completers, plugin.yml, a generated config.yml with sensible defaults, message files where the plugin sends chat output, and the compiled .jar. You can download the whole source tree or just take the .jar.
There are free credits that refresh daily, which is enough to build and iterate on a plugin without paying. Larger projects and heavier refinement use more credits; the pricing page lists what each plan includes.
The generator overview covers every platform Codella targets; the guide explains what a plugin is made of if you would rather learn the API yourself.