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” Paper plugins A development guide for how to write Paper-specific plugins.
Project setup Step-by-step instructions on how to set up a plugin development environment.
How plugins work How plugins work in Paper.
plugin.yml A guide to Bukkit's plugin.yml file.
paperweight-userdev A guide on how to use the paperweight-userdev Gradle plugin to access internal code.
🗃️ Command API (documentation group)
🗃️ Component API (documentation group)
🗃️ Event API (documentation group)
🗃️ Entity API (documentation group)
Data components A guide to the ItemStack data component API.
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.
Scheduling A guide on how to use BukkitScheduler to run code at specific times.
Plugin messaging How to communicate with clients or proxies.
Plugin configuration 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.
Recipes 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
Section titled “Miscellaneous” Using databases Databases are the recommended way to store a large amount of data. This guide outlines a few key details.
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.