New

We just launched the new Notification Generator

Check it out
EternalCode LogoEternalCode
  • Home
  • Team
  • Documentation
  • Contribute
  • RepositoryNew window
  • StatusNew window

Documentation

Browse all topics

Hosting & DeployPowered by Netlify↗
multification11
Introduction
Installation
Basic Usage
Configuration
Advanced Features
Format (For Users)
Platform Comparison
API Reference
FAQ & Troubleshooting
Examples
Migration Guide

© 2026 EternalCodeTeam

Documentation

Browse all topics

Hosting & DeployPowered by Netlify↗
multification11
Introduction
Installation
Basic Usage
Configuration
Advanced Features
Format (For Users)
Platform Comparison
API Reference
FAQ & Troubleshooting
Examples
Migration Guide

© 2026 EternalCodeTeam

multification
2 min read
GitHubEdit on GitHub

Platform Comparison

Differences between Paper and Bukkit modules


Previous
Format (For Users)
Next
API Reference
EternalCode LogoEternalCode

Building high-quality, open-source Minecraft solutions. Empowering communities with reliable software since 2021.

GitHubDiscordYouTubeTikTok

Product

  • Build Explorer
  • Documentation
  • Repository
  • Status

Projects

  • EternalCore
  • EternalCombat

Community

  • Discord
  • GitHub
  • YouTube
  • TikTok

Resource

  • SpigotMC
  • Modrinth
  • bStats

Company

  • About
  • Team
  • Contribute
  • Privacy Policy

© 2026 EternalCodeTeam. All rights reserved.

Powered by NetlifyDesigned with ❤ by the EternalCodeTeam.

Quick Comparison

FeaturePaperBukkit
Java218+
Minecraft1.19.4+1.13+
AdventureNativeAdapter required
DependenciesNoneadventure-platform-bukkit
PerformanceDirect castAdapter overhead

Architecture

// CommandSender IS Audience - direct cast, zero overhead
public class PaperAudienceConverter implements AudienceConverter<CommandSender> {
    @Override
    public Audience convert(CommandSender viewer) {
        return viewer; // Direct!
    }
}

// Locale from player.locale()
public class PaperLocaleProvider implements LocaleProvider<CommandSender> {
    @Override
    public Locale provide(CommandSender viewer) {
        return viewer instanceof Player p ? p.locale() : Locale.ROOT;
    }
}

When to Use

Use Paper WhenUse Bukkit When
Running Paper 1.19.4+Running Bukkit/Spigot
Can use Java 21Need Java 8 compatibility
Want zero dependenciesSupporting older versions
Want best performanceCan't upgrade to Paper

Common Issues

Paper: ClassNotFoundException

Using Bukkit module on Paper? Switch to multification-paper.

Bukkit: NoSuchMethodError

Adventure version conflict? Relocate net.kyori in shadow jar.

Bukkit: Messages not showing

Forgot to close AudienceProvider? Call audienceProvider.close() in onDisable().