UI Style
uxmEssentials ships with one consistent look across chat, command feedback, GUIs and the HUD. When you edit messages or build custom menus, following the same conventions keeps your server looking like one plugin instead of a patchwork. This page is the practical summary for operators.
HOCON, not YAML
Message catalogs and menu files are HOCON โ quoted "key" = "value" lines and
{ โฆ } blocks. The styling below is written in MiniMessage tags inside those values.
Style tokens, not raw colours¶
The plugin defines a fixed palette once, in code, and exposes it as semantic tags. Instead of writing a hex code, you name the role the text plays. This is why editing one message never clashes with the rest of the UI โ every line pulls from the same palette.
| Token | Use it for | Colour |
|---|---|---|
<value> / <accent> |
Names, {placeholder} values, coordinates |
cyan |
<body> |
The sentence itself, field labels โ the default reading colour | cream |
<cta> |
"Click toโฆ", /command hints โ the next action |
orange |
<money> / <good> |
Money amounts and success words | green |
<bad> |
Error / denial wording | red |
<level> |
Counts, page numbers, quantities | yellow |
<muted> |
Dates, breadcrumbs, list bullets, parentheticals | gray |
<tag:'X'> |
The chat prefix for a normal message (X = module label) |
gold gradient |
<etag:'X'> |
The chat prefix for an error/denial | red gradient |
<h:'X'> |
A gold-gradient bold header โ GUI titles and lore titles | gold gradient |
The solid-colour tokens wrap their content (<value>Steve</value>). The composite tokens
(<tag:'HOME'>, <etag:'ERROR'>, <h:'Your Homes'>) take one quoted argument and are
self-closing.
Never inline hex or legacy codes
Don't write <#7cc7ff>, <gradient:#โฆ>, &a, or ยงa in a restyled line. Reference
a token instead. A raw hex in a catalog is treated as a regression and flagged by the
build's drift checks.
Also never put a {placeholder} inside a tag argument (e.g. <h:'Home {home}'>) โ
a value containing a quote or angle bracket would break the tag. Put dynamic values
outside the argument: <h:'Home'> <value>{home}</value>.
The line shapes¶
Chat / feedback. Lead with a prefix, colour the parts by role, end with a status glyph where it reads well:
"pay.sent" = "<tag:'ECONOMY'> You paid <money>{amount}</money> to <value>{player}</value>. ๐ฐ"
"command.no-permission" = "<etag:'ERROR'> <bad>You don't have permission.</bad> โ"
Use <tag:'MODULE'> for normal messages and <etag:'MODULE'> for errors and denials,
where MODULE is the feature label (HOME, WARP, ECONOMY, โฆ).
GUI item lore. Descriptive lore follows a fixed beat, written as one <newline>-joined
string: a crest + title, a muted breadcrumb, a section header, body lines, then the action.
" โจ <h:'Home Panel'><newline> <muted>Your saved homes</muted><newline><newline> โ <accent>Description</accent><newline> <body>Teleport to a saved location instantly.</body><newline><newline> โถ <cta>Click to teleport</cta>"
A labelled fact inside lore is one info row โ a muted | bullet, a <body> label, the
value, and a matching glyph:
Glyph legend¶
These are plain Unicode characters (no resource pack). Use each for its meaning:
| Glyph | Meaning |
|---|---|
โถ |
Action / "click toโฆ" |
โ |
Section header inside lore |
โจ |
Panel / module crest (lore title line) |
โน |
Neutral information |
๐งญ |
Location, world, teleport |
๐ฐ |
Money, balance, payment |
๐ |
Ranking, leaderboard |
๐ |
Ownership |
๐
|
A date or time |
๐ฅ |
People / members |
โ / โ |
Success / denial |
Styling menus¶
Custom menus in plugins/uxmEssentials/menus/*.conf are styled with the same
MiniMessage tags. Titles, item names, and lore in a menu file are written verbatim โ
they are not routed through the message catalogs โ so you can style them however you like,
though matching the palette above keeps them consistent with the built-in GUIs.
# menus/example.conf
title = "<h:'Example Menu'>"
rows = 3
items {
spawn {
slot = 11
material = COMPASS
name = "<cta>Go to spawn</cta>"
lore = [" โถ <cta>Click to teleport</cta>"]
click { left = ["command:spawn", "close"] }
}
}
The built-in module GUIs (the modules/<m>/gui/*.conf panels) already follow these
conventions โ treat them as worked examples if you are building your own.
A few rules of thumb¶
- Do reference colours by token, use
<h:'โฆ'>for headers, and end chat lines with the matching status glyph. - Do use normal capitalization โ Title Case for headers, sentence case for body text.
- Don't inline hex or legacy
&/ยงcodes, invent new tokens, or rename{placeholders}. - Styling is language-independent: when you restyle a key in one language, apply the same token edit to the matching key in every other language file.
Next Steps¶
- Messages & Languages โ editing the text these tokens style.
- Custom Menu Engine โ building your own GUIs.
- Built-in Menu Guide โ the panels that already follow this style.