Overview
uxmEssentials keeps its settings in HOCON files (.conf), not YAML. If you have
configured other plugins with config.yml, the ideas are the same โ keys, values,
lists โ but the syntax is a little friendlier and the layout is split by module
rather than piled into one giant file.
This page explains how the config system is organised, where each file lives, and how to edit and reload it safely.
Why HOCON, not YAML¶
Everything player-facing and every tunable resolves through typed configuration loaded with Configurate. That gives us a few practical wins over YAML:
- Indentation doesn't matter. Structure comes from
{ }braces, not from counting spaces. A stray space can't silently reparent a key. - Comments survive. Lines starting with
#are part of the file, so the shipped defaults document themselves right next to each key. - Values are typed. A number is a number and a duration is a duration โ the plugin validates them on load and tells you exactly which key is wrong instead of failing cryptically.
HOCON syntax rules
HOCON is forgiving about whitespace and indentation but strict about structure:
- Blocks open and close with braces:
storage { โฆ }. Every{needs a}. - Comments start with
#and run to the end of the line. - String values are usually quoted:
backend = "sqlite". Numbers andtrue/falseare not:port = 3306,enabled = true. - Lists use square brackets:
disabled-worlds = ["arena", "spawn"]. - Keys are kebab-case (
read-pool-size,default-locale) โ never camelCase.
If a file won't load after an edit, you almost always have a missing } or a stray
quote. The server log names the file and line.
Where everything lives¶
On first run uxmEssentials extracts its default configuration into
plugins/uxmEssentials/. The tree looks like this:
plugins/uxmEssentials/
โโโ config.conf # globals only โ storage, locale, network, linksโฆ
โโโ modules/
โ โโโ teleport/
โ โ โโโ config.conf # enabled + teleport tunables
โ โ โโโ rtp.conf # /rtp safe-search (a lifted-out big block)
โ โ โโโ gui/
โ โ โโโ teleport-settings.conf
โ โโโ economy/
โ โ โโโ config.conf
โ โ โโโ currencies.conf # per-currency definitions
โ โ โโโ gui/ โฆ
โ โโโ communication/
โ โ โโโ config.conf
โ โ โโโ join-quit.conf
โ โ โโโ announcer.conf
โ โ โโโ info-pages.conf
โ โ โโโ advancements.conf
โ โ โโโ gui/ โฆ
โ โโโ โฆ one folder per module (homes, warps, kits, moderation, โฆ)
โโโ messages/
โ โโโ messages_en.conf # player-facing text (English)
โ โโโ messages_tr.conf # player-facing text (Turkish)
โโโ commands/
โ โโโ commands.conf # rename / realias / disable any command
โโโ menus/
โ โโโ example.conf # your own custom GUIs
โโโ data/
โโโ uxmessentials.db # the SQLite database (default backend)
The shape is the whole design: global settings live in one small file, and each feature module owns its own folder. You never wade through unrelated settings to tune one feature.
There is no modules.conf file
A common misconception โ carried over from older notes โ is that a central
modules.conf switchboard turns modules on and off. It does not exist. It is
not shipped and never created. Each module is enabled or disabled by the
enabled key at the top of its own modules/<module>/config.conf. See
Per-Module Config.
The sub-files inside a module folder¶
Most modules need only their config.conf. A few large features lift a big block out
into a sibling file so the main file stays readable:
modules/teleport/rtp.confโ the/rtpsafe-search tuning.modules/economy/currencies.confโ every currency definition.modules/communication/{join-quit,announcer,info-pages,advancements}.confโ the four communication feature blocks.
The gui/ sub-folder holds one file per management GUI panel โ the in-game editors you
reach through /uxmess gui. You rarely edit these by hand; they are styled the same way
as custom menus.
First-run extraction and edits¶
- Files are written once, from the bundled defaults, and never overwritten. Your edits survive restarts and plugin upgrades.
- Delete a single key and it falls back to its built-in default on next load.
- Delete a whole file and it is regenerated from defaults.
commands/commands.confis generated from the live command list on first run and then left untouched.
How to edit and reload¶
- Open the relevant
.conffile in a plain-text editor (VS Code, Notepad++,nano). - Make your change, keeping braces and quotes balanced.
- Save the file.
- Apply it in-game:
/uxmess reload <module> # reload just one module (fast, targeted)
/uxmess reload # reload every module
Reloading a module re-reads only its subtree, stops and restarts that one module off-thread, and re-publishes its commands. Configuration is swapped atomically, so players in-flight are never left half-configured. Reloading never deletes stored data โ disabling a module leaves its database rows intact.
When in doubt, reload one module
/uxmess reload economy is safer and faster than a full reload. If a file has a
syntax error, only that module refuses to reload and the log tells you where.
Which page covers what¶
| Config concern | File | Page |
|---|---|---|
| Storage / database, default locale, cross-server, server links, update check, map markers | config.conf |
config.conf (Globals) |
| Enabling/disabling a module and its tunables | modules/<m>/config.conf (+ sub-files) |
Per-Module Config |
| Renaming, re-aliasing or disabling a command | commands/commands.conf |
Renaming Commands |
| Player-facing text and languages | messages/messages_<lang>.conf |
Messages & Languages |
| Colours, glyphs and tone of chat/GUI text | catalogs + menus/*.conf |
UI Style |
| Custom GUIs | menus/*.conf |
Custom Menu Engine |
Next Steps¶
- config.conf (Globals) โ storage, locale, and network settings.
- Per-Module Config โ enable/disable and tune each feature.
- Modules & Reloading โ the full module roster and reload model.
- Permission Reference โ the nodes that gate every feature.