paper-plugin.yml file is the plugin descriptor for Paper plugins. It must be located in your plugin’s src/main/resources directory and contains metadata about your plugin.
Paper supports both
paper-plugin.yml (modern format) and plugin.yml (legacy Bukkit format). The paper-plugin.yml format is recommended for new plugins.Required Fields
These fields must be present in everypaper-plugin.yml file:
name
The unique identifier for your plugin. Used for dependency resolution and the data folder name.- Only alphanumeric characters, underscores, hyphens, and periods:
[a-zA-Z0-9_\-\.] - Must be unique across all loaded plugins
version
The version of your plugin. No specific format is enforced, but semantic versioning is recommended.main
The fully qualified class name of your main plugin class. Must extendorg.bukkit.plugin.java.JavaPlugin.
Optional Fields
api-version
The Minecraft API version your plugin is built for (e.g.,1.21, 1.20). This helps maintain compatibility.
description
A human-friendly description of what your plugin does.author / authors
The author(s) of the plugin. Useauthor for a single author or authors for multiple.
contributors
People who contributed to the plugin but are not primary authors.website
A website URL for the plugin or author.prefix
Custom prefix for the plugin’s logger. By default, the plugin name is used.Dependency Management
load
Specifies when the plugin should be loaded during server startup.org.bukkit.plugin.PluginLoadOrder):
STARTUP- Load during server startup (before worlds)POSTWORLD- Load after worlds are loaded (default)
dependencies
Plugins that must be loaded before this plugin. The server will fail to load your plugin if these are missing.softdepends
Plugins that should load before this plugin if they’re present, but aren’t required.loadbefore
Plugins that should load after this plugin, without being dependencies.provides
Other plugin names that this plugin provides/implements.Advanced Features
bootstrapper
A class implementingio.papermc.paper.plugin.bootstrap.PluginBootstrap for early initialization.
Bootstrappers are experimental. Only use API methods documented to work during bootstrap.
loader
A class implementingio.papermc.paper.plugin.loader.PluginLoader for configuring the plugin’s classpath.
Permissions
defaultPerm
The default permission level for all permissions defined in this plugin.org.bukkit.permissions.PermissionDefault):
TRUE- Everyone has permission by defaultFALSE- No one has permission by defaultOP- Only operators have permission (default)NOT_OP- Only non-operators have permission
permissions
Define permissions for your plugin.Complete Example
Here’s a complete example from the Paper test plugin:Migration from plugin.yml
If you’re migrating from the legacyplugin.yml format:
- Rename
plugin.ymltopaper-plugin.yml - Update dependency format from flat lists to the new structured format:
- Commands are no longer supported in YAML - use the
JavaPlugin.registerCommand()method instead