Messages & Languages
Every player-facing line in uxmEssentials โ command feedback, GUI titles, cooldown
notices, everything โ comes from a per-language message catalog under
plugins/uxmEssentials/messages/. No user-visible text is hardcoded, so you can rewrite
any line and translate the whole plugin.
How to Edit¶
- Open the catalog for your language, e.g.
plugins/uxmEssentials/messages/messages_en.conf. - Find the key you want to change and edit its value (the text after
=). - Save.
- Run
/uxmess reloadโ catalogs are swapped atomically on reload.
HOCON, not YAML
Catalogs are HOCON. Each line is "key" = "value". Keep the quotes around both the
key and the value, and keep the {placeholder} tokens exactly as they are โ they
are filled in by the plugin.
One key per line¶
Each line maps a message key (kebab-case, dot-separated) to a MiniMessage template.
The keys are fixed โ they come from the plugin's MessageKey catalog and match one-to-one
across every language file. You edit the values, never the keys.
"command.no-permission" = "<etag:'ERROR'> <bad>You don't have permission.</bad>"
"lang.set" = "<tag:'LANG'> <body>Language set to</body> <value>{locale}</value><body>.</body>"
The {locale}, {player}, {amount} and similar tokens are literal placeholders
substituted before MiniMessage parses the line. Keep their names exactly; only the text
and styling around them are yours to change.
MiniMessage formatting¶
Text uses MiniMessage, Adventure's tag format. A quick tour of what you can put in a line:
"warp.list.header" = "<tag:'WARP'> Warps <muted>(<level>{count}</level>)</muted>:"
"help.entry" = "<muted>-</muted> <click:suggest_command:'/{command}'><hover:show_text:'<muted>Click to type /{command}</muted>'><value>/{command}</value></hover></click>"
| Tag | Effect |
|---|---|
<red>โฆ</red>, <#45cdf9>โฆ</#45cdf9> |
Named or hex colours. |
<gradient:#fc7a00:#fcc600>โฆ</gradient> |
A colour gradient across the text. |
<bold>, <italic>, <underlined> |
Text decoration. |
<hover:show_text:'โฆ'>โฆ</hover> |
A tooltip shown on mouse-over. |
<click:run_command:'/spawn'>โฆ</click> |
Click to run or suggest a command. |
<newline> |
A line break (used inside GUI lore). |
uxmEssentials also defines semantic style tags โ <value>, <body>, <money>,
<muted>, <tag:'โฆ'>, <etag:'โฆ'>, and more โ so a line references a role instead of a
raw hex code. The <prefix> tag is injected automatically by the plugin; don't type it
into a line yourself. These tags and the tone behind them are covered on the
UI Style page.
Don't use legacy & codes
MiniMessage replaces the old &a/ยงa colour codes and ChatColor. Writing &a or
a ยง code in a catalog will show up literally, not as a colour. Always use
MiniMessage tags.
Languages that ship¶
Two catalogs are bundled and kept in perfect key-parity:
| File | Language |
|---|---|
messages_en.conf |
English |
messages_tr.conf |
Turkish |
Both carry the same key set โ only the words differ. To add a language, copy an existing
file to messages_<code>.conf (e.g. messages_de.conf), translate the values, and
leave every key in place.
The fallback language is set once, in the globals file:
Which language a player sees¶
uxmEssentials resolves a player's language through a fallback chain, first match wins:
- Their
/langoverride โ a personal choice they set in-game. - Their Minecraft client locale โ if a matching catalog exists.
default-localefromconfig.conf.- The English base, then the key's own name as a last resort.
Players manage their own override with:
/lang # show your current language and the available codes
/lang tr # switch yourself to Turkish
/lang reset # clear the override and follow your client locale again
Under the hood the per-player locale is carried through the whole message pipeline โ
including deferred and asynchronous messages โ so a line always renders in the requester's
language. The Adventure GlobalTranslator handles the translatable-key path so vanilla
translatable components resolve too.
Next Steps¶
- UI Style โ the colour tokens, glyphs and tone the catalogs follow.
- Config Overview โ where the catalogs sit in the file layout.
- config.conf (Globals) โ setting the
default-locale.