Bukkit¶
The Adventure platform implementation for Bukkit targets Paper, Spigot, and Bukkit for Minecraft 1.7.10 through 1.20.6.
Warning
This page documents only the legacy platform adapter for Bukkit. Most users should use Paper’s native implementation instead.
This native implementation provides more functionality, better integration with the server, and does not require the BukkitAudiences
adapter.
Declaring the dependency:
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-platform-bukkit</artifactId>
<version>4.3.4</version>
</dependency>
repositories {
mavenCentral()
}
dependencies {
implementation "net.kyori:adventure-platform-bukkit:4.3.4"
}
repositories {
mavenCentral()
}
dependencies {
implementation("net.kyori:adventure-platform-bukkit:4.3.4")
}
Need development/snapshot builds? Using Snapshot Builds
Usage¶
You should first obtain a BukkitAudiences
object by using BukkitAudiences.create(plugin)
. This object is thread-safe
and can be reused from different threads if needed. From here, Bukkit CommandSender
s and Player
s may be converted into
Audience
s using the appropriate methods on BukkitAudiences
.
The audiences object should also be closed when a plugin is disabled in order to clean up resources and increase the likelihood of a successful /reload
.
public class MyPlugin extends JavaPlugin {
private BukkitAudiences adventure;
public @NonNull BukkitAudiences adventure() {
if(this.adventure == null) {
throw new IllegalStateException("Tried to access Adventure when the plugin was disabled!");
}
return this.adventure;
}
@Override
public void onEnable() {
// Initialize an audiences instance for the plugin
this.adventure = BukkitAudiences.create(this);
// then do any other initialization
}
@Override
public void onDisable() {
if(this.adventure != null) {
this.adventure.close();
this.adventure = null;
}
}
}
This audience provider should be used over the serializers directly, since it will handle compatibility measures for sending messages across versions.
Component serializers¶
For areas that aren’t covered by the Audience
interface, the Bukkit platform provides the MinecraftComponentSerializer
(available on CraftBukkit-based servers), and the BungeeComponentSerializer
(available on Spigot and Paper servers) to convert directly between Adventure Components and other component types. For uses that don’t integrate directly with native types, JSON and legacy format serializers for the running server version are exposed in BukkitComponentSerializer
.