Paper Development
Create plugins with the Paper API in order to extend Minecraft with custom and modified behavior.
Getting Started
Paper Project Setup
Step-by-step instructions on how to set up a plugin development environment.
Bukkit Plugin YML
A guide to Bukkit's plugin.yml file.
How Plugins Work
How plugins work in Paper.
Paper Plugins (Experimental)
A development guide for how to write Paper-specific plugins.
Paperweight Userdev
A guide on how to use the paperweight-userdev Gradle plugin to access internal code.
Plugin API
Event API
Respond to and modify in-game actions
Entity API
Manipulate mobs and other entities
Component API (Adventure)
Work with Minecraft's chat components
Persistent Data Container (PDC)
A guide to the PDC API for storing data.
Custom InventoryHolder
How to use a custom InventoryHolder to identify custom inventories.
Using the Scheduler
A guide on how to use BukkitScheduler to run code at specific times.
Plugin Messaging
How to communicate with clients or proxies.
Plugin Configurations
How to create configuration files for your plugins to customize behavior.
Lifecycle API
A guide to Paper's Lifecycle API
Registries
A guide to registries and their modification on Paper.
Recipe API
How to create and manage recipes.
Supporting Paper and Folia
How to support both Folia and Paper within your plugin.
Roadmap
Outlines the future intents and plans of the Paper project.
Miscellaneous
Reading Stacktraces
Stacktraces are produced by the JVM when an exception occurs. This guide will discuss the basics of how to read them.
Debugging Your Plugin
Debugging is common when writing code. This guide outlines the common ways to debug your plugin.
Using Databases
Databases are the recommended way to store a large amount of data. This guide outlines a few key details.
Minecraft Internals
A brief overview of how to use internals in your plugin.