Paper Plugin Guide
File mode0

Tools

Plugin Idea Classifier

Describe a plugin idea in plain English and get the events, API pieces, chapters and starter code you need.

BeginnerTool

Have an idea for a plugin but no idea where to start? Describe it in plain English, and this tool shows what Paper needs to make it happen: the events, the actions, the chapters to read, and a small plugin that already compiles.

How it works, in plain English

Every plugin idea is really a sentence of the form "when this happens, do that". The thing that happens is a trigger: a player joins, someone breaks a block, a command is typed, or a timer runs out. What the plugin does about it is an action: give an item, send a message, teleport, play a sound.

How an event reaches your plugin A player breaks a block. Paper creates a BlockBreakEvent and hands it to every listener in priority order. If any listener cancels it, the block stays; otherwise the block breaks. A player breaks a block something happens in the game Paper creates an event BlockBreakEvent Listeners run one at a time, lowest priority first Plugin A EventPriority.LOW checks a rule Plugin B EventPriority.NORMAL does nothing Plugin C EventPriority.HIGH setCancelled(true) Was the event canceled? yes no The block stays nothing changes The block breaks and drops its items Canceling is how a plugin says no
Most ideas follow this path: something happens, Paper creates an event, and your listener runs the actions you wrote.

The classifier reads your sentence in four steps. Everything runs inside your browser, so nothing you type leaves your computer, and it works without the guide server.

  1. It splits your text into words and fixes small mistakes

    "Joins", "joined" and "joining" all become "join". Common typos such as "teleprot" or "brodcast" are repaired. Quoted text like "Welcome!" is set aside, because it is a message, not an instruction.

  2. It looks words up in a lexicon

    The lexicon is a list of about 2,500 phrases, each tied to an event or an API feature and each with a weight. "log in" points to PlayerJoinEvent with a strong weight. A weaker word like "hit" points to a combat event with a smaller weight.

  3. It asks a trained model for a second opinion

    A naive Bayes model learned from more than a thousand labeled example ideas. It notices which words usually appear together, so it can back up a weak phrase or doubt a doubtful one. The two scores are combined into one confidence per item.

  4. It works out who does what

    "When X, do Y" is paired up by position, so "give a sword when a player joins" and "when a player joins, give a sword" mean the same thing. Numbers such as "every 5 minutes" become ticks (6000), "diamond sword" becomes Material.DIAMOND_SWORD, and "do not let players break blocks" becomes a canceled BlockBreakEvent.

Try it

Type below or click an example. The results update as you type. Every item can be switched off with its checkbox if the classifier got it wrong, and low-confidence guesses can be added with one click.

The Idea Classifier is loading. If this message stays, JavaScript is turned off in your browser.

How to read the results

  • What I understood repeats your idea with the matched words highlighted: triggers, actions, supporting ideas, items and mobs, numbers and times, and quoted text each have their own color. Hover a highlight to see what it was read as.
  • Confidence is shown next to each item. "High" means a clear phrase matched. "Low" means the model is only partly sure, so check it. "Guessed" means the idea did not say it, but the plugin needs it, for example a /wand command so players can get a custom item.
  • Matched lists the exact words from your idea that caused the item to appear, so you can see why.
  • Things to know explains every guess the tool made and everything it had to leave out, such as an action that does not fit the trigger.
  • Your reading list puts the chapters in an order that works for this idea, then adds a similar project, practice challenges and the events in the Event Finder.
  • Starter code is a complete little plugin: plugin.yml, a main class, a listener with one handler per event, command classes, and a config.yml when your idea mentioned settings. It uses the modern Paper API and has no comments, so the names explain themselves.

Using the starter code

  1. Open it in the Compile Lab

    Press Open in Compile Lab. The files are sent to the Compile Lab, which compiles them against the real Paper API so you can see that they work.

  2. Or copy the files into your own project

    Use Copy this file for each file, or Download as text for all of them at once. Put the Java files in src/main/java and the YAML files in src/main/resources. If you have not set up a project yet, start with Your first plugin, step by step.

  3. Change the parts that are only examples

    Where your idea did not say enough, the tool filled in a sensible default, for example a sample greeting, and listed it under "Things to know". Replace those with your own text and values. Every message is written in MiniMessage, so you can add colors with tags like <gold>.

Write ideas the classifier understands

  • Say when, then what. "When a player joins, give them a diamond sword" is easier than "diamond sword for new people".
  • Put exact text in quotes. Broadcast "Vote for us!" every 10 minutes puts Vote for us! into the generated code. Use <player> inside the quotes to insert the player's name.
  • Give numbers units. "every 5 minutes", "after 10 seconds", "a 30 second cooldown", "5 diamonds".
  • Name the command. "A /heal command" creates /heal. Without a name, the tool picks one that fits the action.
  • Say what must not happen. "Do not let players drop items" or "disable fall damage" are understood as canceling an event.
  • Mention the supporting parts. Words like "configurable", "only admins", "cooldown", "save", "menu" and "every few minutes" switch on the config file, permissions, a cooldown, saved data, a GUI and the scheduler.

What it cannot do

  • It does not understand every sentence. If an idea needs something unusual, such as a custom world generator or a web link to another service, it will find the closest pieces and the chapters to read, and leave the rest to you.
  • It knows 42 triggers and 54 actions. Anything outside that list shows up as a missing piece rather than a wrong guess.
  • Money is kept in a plain coin counter. Real server economies come from another plugin, usually Vault, which the Working with other plugins chapter introduces.