Bukkit Plugin YML
The plugin.yml file is the main configuration file for your plugin. It contains information about your plugin, such as its name, version, and description. It also contains information about the plugin's dependencies, permissions, and commands.
The plugin.yml file is located in the
resources directory of your project.
Here is an example of a plugin.yml file:
description: An example plugin
The fields in this section are not in any particular order. If they have an asterisk (*) next to them, that means they are required.
The name of your plugin. This is what will be displayed in the plugin list and log messages. This will be overridden in the logs if the prefix is set.
The current version of the plugin. This is shown in plugin info messages and server logs.
The main class of your plugin. This is the class that extends
JavaPlugin and is the entry point to your plugin.
This is the package path and class name of your main class.
A short description of your plugin and what it does. This will be shown in the plugin info commands.
description: An example plugin
author / authors
The author(s) of the plugin. This can be a single author or a list of authors.
authors: [PaperMC, SpigotMC, Bukkit]These will be shown in the plugin info commands.
The contributors to the plugin that aren't the managing author(s).
contributors: [PaperMC, SpigotMC, Bukkit]These will be shown in the plugin info commands.
The website of the plugin. This is useful for linking to a GitHub repository or a plugin page.
website: https://papermc.ioThis will be shown in the plugin info commands.
The version of the Paper API that your plugin is using. This doesn't include the minor version. Servers with a version lower than the version specified here will refuse to load the plugin. The valid versions are 1.13 - 1.20.
If this is not specified, the plugin will be loaded as a legacy plugin and a warning will be printed to the console.
This tells the server when to load the plugin. This can be
POSTWORLD. Will default to
POSTWORLD if not specified.
The prefix of the plugin. This is what will be displayed in the log instead of the plugin name.
The use of this feature is currently against maven central's TOS. However, this feature is very likely to stay.
This is a list of libraries that your plugin depends on. These libraries will be downloaded from the Maven central repository and added to the classpath. This removes the need to shade and relocate the libraries.
This is a list of permissions that your plugin uses. This is useful for plugins that use permissions to restrict access to certain features.
description: "This is a permission node"
description: "This is another permission node"
default: not op
The description is the description of the permission node. This is what will be displayed in the permissions list.
The default is the default value of the permission node. This can be
not op, or
false. This defaults to the value of
default-permission if not specified. (Which defaults to
op if not specified)
Each permission node can have children. When set to
true it will inherit the parent permission.
The default value that permissions that don't have a
default specified will have. This can be
not op, or
This is a list of commands that your plugin uses. This is useful for plugins that use commands to provide features.
description: "This is a command"
usage: "/command <arg>"
aliases: [cmd, command]
permission-message: "You do not have permission to use this command"
- The description is the description of the command. This gives a brief description of what the command does.
- The usage is the usage of the command. This is what will be displayed when the player uses
- The aliases are a list of aliases that the command can be used with. This is useful for shortening the command.
- permission is the permission node that the player needs to use the command. Note: Players will only see commands they have permission to use.
- permission-message is the message that will be displayed when the player does not have permission to use the command.
If a plugin is specified as a dependency, it will be loaded before your plugin. Be careful as these can cause plugin load issues if cyclical dependencies appear. A Cyclical dependency can be illustrated as follows:
PluginA -> PluginB -> PluginA -> PluginB... etc.
Where PluginA and PluginB are plugins that depend on each other.
A list of plugins that your plugin depends on to load. They are specified by their plugin name.
If the plugin is not found, your plugin will not load.
depend: [Vault, WorldEdit]
A list of plugins that your plugin depends on to have full functionality. They are specified by their plugin name.
softdepend: [Vault, WorldEdit]
A list of plugins that your plugin should be loaded before. They are specified by their plugin name. This is useful if you want to load your plugin before another plugin for the other plugin to use your plugin's API.
loadbefore: [Vault, FactionsUUID]
This can be used to tell the server that this plugin will provide the functionality of some library or other plugin (like an alias system).
Plugins that (soft)depend on the other plugin will treat your plugin as if the other plugin exists when resolving dependencies or using