Spigot-API 1.16.4-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. 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 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.
Packages 
Package Description
org.bukkit
The root package of the Bukkit API, contains generalized API classes.
org.bukkit.advancement
Classes relevant to advancements.
org.bukkit.attribute
Classes relevant to attributes.
org.bukkit.block
Classes used to manipulate the voxels in a world, including special states.
org.bukkit.block.banner
Classes relevant to banner blocks.
org.bukkit.block.data
Generalized BlockData classes.
org.bukkit.block.data.type
Specific BlockData classes relevant to only a given block or set of blocks.
org.bukkit.block.structure
Classes relevant to structure blocks.
org.bukkit.boss
Classes concerning the creation of boss bars that appear at the top of the player's screen.
org.bukkit.command
Classes relating to handling specialized non-chat player input.
org.bukkit.command.defaults
Commands for emulating the Minecraft commands and other necessary ones for use by a Bukkit implementation.
org.bukkit.configuration
Classes dedicated to handling a plugin's runtime configuration.
org.bukkit.configuration.file
Classes dedicated to facilitating configurations to be read and stored on the filesystem.
org.bukkit.configuration.serialization
Classes dedicated to being able to perform serialization specialized for the Bukkit configuration implementation.
org.bukkit.conversations
Classes dedicated to facilitate direct player-to-plugin communication.
org.bukkit.enchantments
Classes relating to the specialized enhancements to item stacks, as part of the meta data.
org.bukkit.entity
Interfaces for non-voxel objects that can exist in a world, including all players, monsters, projectiles, etc.
org.bukkit.entity.memory
Classes concerning an entity's persistent memory.
org.bukkit.entity.minecart
Interfaces for various Minecart types.
org.bukkit.event
Classes dedicated to handling triggered code executions.
org.bukkit.event.block
Events relating to when a block is changed or interacts with the world.
org.bukkit.event.enchantment
Events triggered from an enchantment table.
org.bukkit.event.entity
Events relating to entities, excluding some directly referencing some more specific entity types.
org.bukkit.event.hanging
org.bukkit.event.inventory
Events relating to inventory manipulation.
org.bukkit.event.player
Events relating to players.
org.bukkit.event.raid
Events related to raids.
org.bukkit.event.server
Events relating to programmatic state changes on the server.
org.bukkit.event.vehicle
org.bukkit.event.weather
Events relating to weather.
org.bukkit.event.world
Events triggered by various world states or changes.
org.bukkit.generator
Classes to facilitate world generation implementation.
org.bukkit.help
Classes used to manipulate the default command and topic assistance system.
org.bukkit.inventory
Classes involved in manipulating player inventories and item interactions.
org.bukkit.inventory.meta
The interfaces used when manipulating extra data can can be stored inside item stacks.
org.bukkit.inventory.meta.tags
Classes that allow attaching custom data to items.
org.bukkit.loot
Classes relevant to loot table manipulation and generation.
org.bukkit.map
Classes to facilitate plugin handling of map displays.
org.bukkit.material
Classes that represents various voxel types and states.
org.bukkit.material.types
Classes relevant to specific material types.
org.bukkit.metadata
Classes dedicated to providing a layer of plugin specified data on various Minecraft concepts.
org.bukkit.permissions
Classes dedicated to providing binary state properties to players.
org.bukkit.persistence
Classes that allow attaching persistent data to various objects.
org.bukkit.plugin
Classes specifically relating to loading software modules at runtime.
org.bukkit.plugin.java
Classes for handling plugins written in java.
org.bukkit.plugin.messaging
Classes dedicated to specialized plugin to client protocols.
org.bukkit.potion
Classes to represent various potion properties and manipulation.
org.bukkit.projectiles
Classes to represent the source of a projectile
org.bukkit.scheduler
Classes dedicated to letting plugins run code at specific time intervals, including thread safety.
org.bukkit.scoreboard
Interfaces used to manage the client side score display system.
org.bukkit.util
Multi and single purpose classes to facilitate various programmatic concepts.
org.bukkit.util.io
Classes used to facilitate stream processing for specific Bukkit concepts.
org.bukkit.util.noise
Classes dedicated to facilitating deterministic noise.
org.bukkit.util.permissions
Static methods for miscellaneous permission functionality.
org.spigotmc
Spigot-specific classes.
org.spigotmc.event.entity
Spigot-specific entity events.
org.spigotmc.event.player
Spigot-specific player events.