Messages & Languages
Editing player-facing text, per language, in MiniMessage.
Every player-facing line comes from a per-language catalog under plugins/uxmEssentials/messages/. No
user-visible text is hardcoded, so any line can be rewritten and the whole plugin translated.
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.
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; the plugin fills them in.
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.
MiniMessage replaces the old &a and §a colour codes. A legacy code written into a catalog shows up
literally instead of colouring the line.
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:
# config.conf
messages {
default-locale = "en"
}
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.
Related: UI Style, Config Overview, config.conf (Globals)
Was this page helpful?