Development
Welcome to the Paper development guide! This guide includes information and tutorials for developers on how to create and expand on Paper plugins.
Getting started
Section titled “Getting started” How plugins work How plugins work in Paper.
Paper plugins 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.yml A guide to Bukkit's plugin.yml file.
Project setup Step-by-step instructions on how to set up a plugin development environment.
🗃️ Command API (documentation group)
🗃️ Component API (documentation group)
🗃️ Entity API (documentation group)
🗃️ Event API (documentation group)
Custom InventoryHolder How to use a custom InventoryHolder to identify custom inventories.
Data components A guide to the ItemStack data component API.
Lifecycle API A guide to Paper's Lifecycle API.
Persistent data container (PDC) A guide to the PDC API for storing data.
Plugin configuration How to create configuration files for your plugins to customize behavior.
Plugin messaging How to communicate with clients or proxies.
Recipes How to create and manage recipes.
Registries A guide to registries and their modification on Paper.
Roadmap Outlines the future intents and plans of the Paper project.
Scheduling A guide on how to use BukkitScheduler to run code at specific times.
Supporting Paper and Folia How to support both Folia and Paper within your plugin.
Miscellaneous
Section titled “Miscellaneous” Debugging your plugin Debugging is common when writing code. This guide outlines the common ways to debug your plugin.
Minecraft internals A brief overview of how to use internals in your plugin.
Reading stacktraces Stacktraces are produced by the JVM when an exception occurs. This guide will discuss the basics of how to read them.
Using databases Databases are the recommended way to store a large amount of data. This guide outlines a few key details.