Skip to content

Bukkit

The Adventure platform implementation for Bukkit targets Paper, Spigot, and Bukkit for Minecraft 1.7.10 through 1.21.5.

Declaring the dependency:

<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-platform-bukkit</artifactId>
<version>4.4.0</version>
</dependency>

Need development/snapshot builds? Using Snapshot Builds

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 CommandSenders and Players may be converted into Audiences 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;
@NonNull
public 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.

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.