Skip to content

Core Concepts

A quick tour of the five ideas every uxmEssentials admin should know. Once these click, everything else in the wiki is just detail.


1. Modules

uxmEssentials is 23 independent feature modules — teleport, homes, warps, economy, kits, moderation, holograms, worlds and so on. Each one is self-contained.

The important part: a disabled module wires nothing. No commands are registered, no listeners run, no database tables are created, no background tasks tick, and it holds zero runtime state. Turning a module off genuinely costs you nothing.

Every module is toggled by the enabled key at the top of its own config file, and reloaded on the fly:

/uxmess reload <module>     # reload one module
/uxmess reload              # reload everything
/uxmess status              # see which modules are on

Reloading a module re-reads its config, restarts just that module (off the main thread) and re-registers its commands. Your data is never deleted by disabling a module. See The Module System.


2. Config Layout (HOCON, not YAML)

Old-school plugins dump everything into one giant config.yml. uxmEssentials splits things up into readable HOCON .conf files, one concern at a time:

Path What lives there
config.conf Global settings — storage, default language, cross-server, update checks
modules/<module>/config.conf One file per module; enabled is the first key
messages/messages_<lang>.conf Player-facing text, per language
commands/commands.conf Rename, re-alias or disable any command
menus/*.conf Your own custom GUI menus

A few things that make this pleasant to live with:

  • Keys are kebab-case. A setting like pool-size reads exactly as written.
  • Edits survive updates. New keys from a new version are merged in; your values are kept untouched.
  • Delete to reset. Remove a key and it falls back to its default; delete a whole file and it regenerates.
  • Atomic reloads. Config is loaded once and swapped in one go on reload.

There is no modules.conf

To enable or disable a module you edit the enabled key inside that module's own modules/<module>/config.conf — there is no central switchboard file.

See Per-Module Config and config.conf (Globals).


3. Permissions

Every permission lives under the uxmessentials.* prefix, and the defaults are chosen so a fresh install is sensible with zero setup:

  • Self-service verbs default to true — things players do to their own account (/home, /balance, /msg, /kit, /warp, /afk, ...) just work.
  • Staff verbs default to op — mutations and moderation (/tp others, /eco, /ban, /vanish, item/world verbs, ...).

On top of the plain on/off nodes there are tiered / quota nodes with a number baked into them:

Node Meaning
uxmessentials.home.limit.<n> How many homes a player may set
uxmessentials.vault.amount.<n> How many vaults a player may own
uxmessentials.tp.cooldown.<seconds> Teleport cooldown for that group
uxmessentials.kit.cooldown.<seconds> Kit cooldown for that group

Give uxmessentials.home.limit.5 and that player can set five homes.

A permission plugin is optional — the defaults work on a bare server. If you run LuckPerms, those numbered quotas can also be resolved from LuckPerms meta. See the Permission Reference.


4. Messages & Languages

Every piece of player-facing text is a catalog entry, styled with MiniMessage (the modern <gradient>, <color>, <hover> formatting — never legacy & codes). Text lives per language in messages/messages_<lang>.conf, and the plugin ships with English (en) and Turkish (tr) out of the box.

Players pick their own language:

/lang            # show your current language
/lang tr         # switch to Turkish
/lang reset      # go back to the server default / your client locale

The fallback chain is: your /lang choice → your Minecraft client locale → the server default → the English base. Edit any .conf to re-word or re-theme the plugin without recompiling. See Messages & Languages.


5. Folia-Ready & Performance

uxmEssentials was built for modern Paper — and Folia — from line one. Every bit of scheduled work goes through Folia-safe schedulers, so heavy jobs (like /rtp safe-location search or a /baltop query) run off the main thread and hand control back to the tick loop quickly.

Combined with the modular design — disabled modules doing literally nothing — you can run a big feature set without paying for the parts you don't use. Your database, by default, is a zero-setup embedded SQLite file. See Database.


Next Steps