DUXPLIMA Documentation

Guide

How uxmCrates works, how to set it up and what each file holds.

Install

Put uxmCrates-<version>.jar in plugins/ and start the server. uxmLib is inside the jar, so nothing else is required. The plugin runs on Paper 26.2 or newer and on Folia.

These plugins are used when they are installed and ignored when they are not:

PluginUsed for
PlaceholderAPIThe %uxmcrates_...% placeholders.
Vault, VaultUnlocked, PlayerPoints, EcoBits, TreasuryPaying a crate's cost or a reward's money.
Floodgate, GeyserBedrock players get a native form for every window and a window reveal instead of a world one.
BentoBox, ExcellentClaims, Factions, GriefDefender, GriefPrevention, Homestead, HuskClaims, HuskTowns, Kingdoms, Lands, PlotSquared, RClaim, Residence, SimpleClaimSystem, SuperiorSkyblock2, Towny, uxmClaims, WorldGuard, XClaimThe claims rules for placing and opening crates.
Oraxen, Nexo, ItemsAdder, CraftEngineCustom items named in a content file.
mcMMOA skill level in a requirement line.

Files

The plugin writes these into plugins/uxmCrates/ on first start:

File or folderWhat it holds
config.confLanguage, storage, odds display, pushback, claims, log, rerolls, milestones, luck, purge, retention, link tool, editor, menu sounds.
opening.conf, economy.confThe opening rules and the economy, each under its own block name. A block an earlier release kept in config.conf moves here on the first start.
commands.confThe name, aliases and on/off switch of every command and subcommand.
messages/messages_<lang>.confThe text of every message, one file per language. English and Turkish ship.
menus/*.confOne file per window the plugin draws.
crates/<id>.confOne crate each.
keys/<id>.confOne key each.
rewards/<id>.confA reward written once and shared by crates.
envoys/<id>.confOne envoy each.
animations/<id>.confOne reveal each.
data/crates.dbThe SQLite database, when storage.type is sqlite.
languages.confThe language each player chose.
logs/The opening log file, when log.to-file is on.
migrations/The reports /uxmcrates migrate writes.

The colours are in plugins/uxmTheme/theme.conf, shared by every UXPLIMA plugin on the server.

The example crates, keys, rewards, envoys and animations are written only when their folder does not exist, so an example that is deleted stays deleted. The menus are written again whenever a file is missing.

/uxmcrates reload reads every file again. A reload is applied as a whole or not at all: a file that does not parse leaves the running configuration as it was. Command names in commands.conf need a restart. When a release adds a key to config.conf, the next start adds it with its comment and keeps every value already written; the previous file is kept as config.conf.bak.

/uxmcrates doctor reports one line per check: storage, content, currencies, claims, windows and placeholders.

Storage

storage.type is sqlite, mysql, mariadb or postgresql. SQLite needs no setup and suits one server. A database server is shared by every server pointed at it, which is what makes a limited reward ("three across the whole server") and key balances network-wide. The MariaDB and PostgreSQL drivers are fetched into the server's libraries folder on first start.

storage.table-prefix lets two copies share a database. storage.local-only keeps one server of a network on its SQLite file. To move from the SQLite file to a database server, set storage.copy-from-file to true with the new type and restart once: the rows are copied into the empty tables and the log says how many.

purge forgets players who stopped coming and retention trims the opening log and the key ledger. Both ship off. A player who is owed a pending reward is never purged.

Languages

A player reads the language they chose with /uxmcrates lang set <language>, else their client's language when language.follow-client is on, else language.default. language.force puts everybody on one language. A new language is one more file in messages/.

The editor

/uxmcrates editor opens a window to build crates, keys and rewards without leaving the game. It writes the same content files an operator edits by hand and never writes config.conf or a menu file. Set editor.enabled = false to switch it off: its windows are not registered and the command says it is off.