Skip to main content

API Overview

Paper provides a comprehensive API for plugin development, combining the mature Bukkit API with extensive Paper-specific enhancements.

API Documentation

The complete Paper API javadocs are available at: papermc.io/javadocs This includes both the Bukkit API and all Paper-specific additions.

API Structure

Paper’s API consists of two main components:

Bukkit API

The core Minecraft server API that Paper inherits and maintains

Paper API

Paper-specific enhancements, optimizations, and new features

Key API Components

Core APIs

Events

Event system for listening to and modifying game events

Entities

Entity management, customization, and AI control

World

World manipulation, chunk management, and environment control

Registry

Data-driven content and registry access

Additional APIs

  • Adventure - Modern text components and chat API
  • Commands - Command registration and execution
  • Configuration - Plugin configuration management
  • Permissions - Permission system integration
  • Scheduler - Task scheduling and async operations

Maven Dependency

Add Paper API to your project:
<repository>
    <id>papermc</id>
    <url>https://repo.papermc.io/repository/maven-public/</url>
</repository>

<dependency>
    <groupId>io.papermc.paper</groupId>
    <artifactId>paper-api</artifactId>
    <version>1.21.11-R0.1-SNAPSHOT</version>
    <scope>provided</scope>
</dependency>

API Stability

The Paper API follows semantic versioning. The API version is specified in your paper-plugin.yml file.

Breaking Changes

Paper maintains API stability within major Minecraft versions. Breaking changes are:
  • Clearly documented in release notes
  • Deprecated before removal when possible
  • Only introduced in major version updates

Experimental APIs

Some Paper APIs are marked as experimental:
@ApiStatus.Experimental
public interface SomeNewFeature {
    // ...
}
Experimental APIs may change or be removed in future versions.

Package Structure

Bukkit Packages

  • org.bukkit.* - Core Bukkit API
  • org.bukkit.entity.* - Entity types and management
  • org.bukkit.event.* - Event system
  • org.bukkit.plugin.* - Plugin management
  • org.bukkit.command.* - Command system

Paper Packages

  • io.papermc.paper.event.* - Paper-specific events
  • io.papermc.paper.entity.* - Entity enhancements
  • io.papermc.paper.configuration.* - Configuration system
  • io.papermc.paper.registry.* - Registry access
  • io.papermc.paper.datapack.* - Datapack management
  • com.destroystokyo.paper.* - Legacy Paper APIs

Adventure Packages

  • net.kyori.adventure.text.* - Text components
  • net.kyori.adventure.audience.* - Message recipients
  • net.kyori.adventure.sound.* - Sound playback

Getting Started

  1. Add the dependency to your build configuration
  2. Create a plugin class extending JavaPlugin
  3. Create a paper-plugin.yml with plugin metadata
  4. Implement your features using the API
  5. Test with the test-plugin module or on a server
Check out the Plugin Development Guide for a complete tutorial.

API Resources

Javadocs

Complete API reference documentation

Paper Forums

Community support and discussions

Discord

Real-time help and community

GitHub

Source code and issue tracking

Next Steps

Bukkit API

Learn about the core Bukkit API

Paper API

Explore Paper-specific features

Events

Work with the event system

Build docs developers (and LLMs) love