paper-api 1.21.3-R0.1-SNAPSHOT API
Bukkit, the plugin development framework.
The documentation is for developing plugins and is split into the respective packages for each subject matter. This documentation does not cover running a server, contributing code back to the project, or setting up a workspace. Working knowledge of the Java language is a prerequisite for developing plugins.
For basic plugin development, see the plugin
package
. It covers the basic requirements of a plugin jar.
For handling events and triggered code, see the event package
.
Note: While the Bukkit API makes every effort to ensure stability, this is not guaranteed, especially across major versions. In particular the following is a (incomplete) list of things that are not API.
- Implementing interfaces or extending classes. The Bukkit API is designed to only be
implemented by server software. Unless a class/interface is obviously
designed for extension (eg
BukkitRunnable
), or explicitly marked as such, it should not be implemented or extended by plugins. Although this can sometimes work, it is not guaranteed to do so and resulting bugs will be disregarded. - Constructing inbuilt events. Although backwards compatibility is attempted where possible, it is sometimes not possible to add new fields to events without breaking existing constructors. To ensure that the API continues to evolve, event constructors are therefore not plugin API.
- Implementation classes. Concrete implementation classes packaged with Bukkit (eg those beginning with Simple) are not API. You should access them via their interfaces instead.
- The "enumness" of enums which implement
Keyed
. Such enums are liable to conversion to regular classes and therefore usages deriving from their status as an enum (including, but not limited to, use in switch statements and classes such asEnumSet
) should be avoided.
RegistryEvent
.world
,
including special states.configurations
to be read and
stored on the filesystem.configuration
implementation.item stacks
, as part of the meta data
.world
, including all players, monsters, projectiles, etc.Boat
types.Minecart
types.Events
triggered from an enchantment table
.Events
relating to entities that hang
.Events
related to raids.Events
relating to programmatic state
changes on the server.Events
relating to vehicular entities
.Events
relating to weather.world
generation
implementation.Structure
generation.item stacks
.InventoryView
child interfaces that
house further usability for InventoryView
.map
displays.plugins
written in
java.potion
properties and manipulation.plugins
run
code at specific time intervals, including thread safety.structures
without creating Structure
blocks
in the world.Tag
-related API.permission
functionality.