Skip to Content
PluginsAquaLangDeveloper API

Developer API

plugin.yml
depend: [AquaLang]
if (!AquaLangProvider.isRegistered()) return; AquaLangAPI lang = AquaLangProvider.get();

Sending

lang.send(player, "join.welcome"); lang.send(player, "shop.bought", "%item%", "Diamond Sword", "%price%", "500");

Placeholders are passed in pairs: key, value, key, value.

Namespaces

A namespace keeps your plugin’s keys separate from everyone else’s.

lang.sendIn(player, "myplugin", "join.welcome"); lang.broadcast("myplugin", "event.started");

broadcast sends to every online player in their own language and returns how many received it.

Reading a string

String msg = AquaLang.message(player, "join.welcome"); String other = AquaLang.message(uuid, "myplugin", "join.welcome"); String fixed = AquaLang.messageInLang("spanish", "join.welcome"); String safe = AquaLang.messageOrDefault(uuid, "myplugin", "join.welcome", "Welcome!");

Player language

String current = AquaLang.getPlayerLanguage(player); lang.setPlayerLanguage(player, "spanish"); lang.setPlayerLanguageAsync(uuid, "spanish");

The async form returns a future and never touches the database on the main thread.

Checks

lang.has("spanish", "join.welcome"); lang.has("spanish", "myplugin", "join.welcome"); lang.isLanguageRegistered("spanish"); lang.supports("es_ES"); lang.canUseLanguage(player, "spanish"); lang.getApiVersion();

canUseLanguage respects per-language-permissions.

Colors

String colored = AquaLang.colorize("&aHello &#FF55AA world"); String plain = AquaLang.stripColor(colored);

Event

@EventHandler public void onChange(PlayerLanguageChangeEvent event) { event.getUniqueId(); event.getPreviousLanguage(); event.getNewLanguage(); event.setNewLanguage("english"); // redirect the choice event.setCancelled(true); // or block it }

Cancellable, and setNewLanguage lets you override what the player picked.

AquaLangAddon in the same repository is a working plugin built entirely on this API. It is the fastest way to see the calls in context.

Last updated: September 2, 2026 bySenkexin10e4ef4