Configuration
config.yml key by key with its defaults, what messages.yml holds, the two menu files with their values and actions, and the database tables.
Everything is generated in plugins/ExyliaPlayerVaults/ on first start, with comments. Edit the files
there, never the copies in the jar. /pvadmin reload applies an edit.
config.yml
language: default
vaults:
default-amount: 1
max-amount: 9
default-rows: 6
hidden-slots: keep
blocked-materials: []
checkpoint: 30s
save-player-on-write: true
restrictions:
open-cooldown: 500ms
block-in-combat: true
disabled-worlds: []
disabled-game-modes:
- SPECTATOR
purchase:
enabled: false
currency: ''
base-price: 5000.0
price-multiplier: 1.5
max-purchases: 9
history:
keep: 10
customization:
name-max-length: 24
default-icon: BARREL
sounds:
opened: BLOCK_BARREL_OPEN|1.0|1.2
closed: BLOCK_BARREL_CLOSE|1.0|1.2Lengths of time read like everywhere in Exylia: 500ms, 30s, 1m30s; a bare number is seconds.
language
| Key | Default | What it does |
|---|---|---|
language | default | The language of this plugin's menus and messages. default follows the language set in ExyliaLib's config.yml; en, es, pt, fr, ru or tr set this plugin alone. Each is a folder under lang/. |
vaults
| Key | Default | What it does |
|---|---|---|
default-amount | 1 | Vaults a player has with no exyliaplayervaults.amount.<number> of their own. |
max-amount | 9 | The most vaults anybody may have, bought ones included, whatever their permissions. Also how many entries the list draws. |
default-rows | 6 | Rows per vault with no exyliaplayervaults.rows.<1-6> of their own. Clamped to 1–6. |
hidden-slots | keep | What happens to stacks past a smaller vault's last slot: keep stores them out of sight, return hands them back. See Vaults. |
blocked-materials | [] | Materials that may not go into a vault, by name, compared ignoring case. Shulker boxes and bundles holding one are refused too. |
checkpoint | 30s | How often an open vault that changed is written while it stays open, so a crash costs at most this much. Never less than one second. |
save-player-on-write | true | Saves the player's own inventory file after each write that changed their vault, so a crash right after cannot leave an item in both places. |
restrictions
None of these apply to staff opening somebody else's vault.
| Key | Default | What it does |
|---|---|---|
open-cooldown | 500ms | How long a player waits between opening two vaults. 0s turns it off. Skipped with exyliaplayervaults.bypass.cooldown. |
block-in-combat | true | Refuses to open a vault while the player is combat-tagged, and closes one that is open when they hit or are hit by a player. |
disabled-worlds | [] | Worlds in which vaults cannot be opened, by name. |
disabled-game-modes | [SPECTATOR] | Game modes in which vaults cannot be opened: SURVIVAL, CREATIVE, ADVENTURE, SPECTATOR. |
The last three are skipped with exyliaplayervaults.bypass.restrictions.
purchase
| Key | Default | What it does |
|---|---|---|
enabled | false | Lets players buy vaults past what their rank gives them, from the list. |
currency | '' | The currency they pay in, by id. Empty uses ExyliaLib's default currency. |
base-price | 5000.0 | What the first bought vault costs. |
price-multiplier | 1.5 | Each later vault costs this many times the one before. 1.0 keeps every vault at base-price. |
max-purchases | 9 | The most vaults one player may buy. max-amount still caps the total. |
See Purchases.
history
| Key | Default | What it does |
|---|---|---|
keep | 10 | How many earlier copies of each vault are kept, newest first. 0 keeps none. See Staff tools. |
customization
| Key | Default | What it does |
|---|---|---|
name-max-length | 24 | The longest name a player may give a vault. Names hold letters, digits, spaces and - _ ' . ! ? # ( ) only. |
default-icon | BARREL | What a vault is drawn as in the list until its owner picks an icon: a menu material such as CHEST, playerhead-<name> or basehead-<texture>. |
sounds
| Key | Default | What it does |
|---|---|---|
opened | BLOCK_BARREL_OPEN|1.0|1.2 | Played when a vault window opens, as NAME|volume|pitch. Empty plays nothing. |
closed | BLOCK_BARREL_CLOSE|1.0|1.2 | Played when a player closes a vault window. |
messages.yml
lang/<code>/messages.yml holds every line the plugin says and every window title. %prefix% expands to
the prefix value at the top, {primary}&lVAULTS {letters_black}•<reset> in English. Colours are palette tokens.
A line may open with an effect tag, which never reaches the screen: [sound:NAME|volume|pitch] plays a
sound to whoever receives it. An empty line sends nothing at all — that is how a message is turned off.
| Keys | What they are |
|---|---|
prefix | Opens every chat line through %prefix%. |
title, admin-title, view-title, snapshot-title | Window titles: your own vault, a vault staff are editing, a read-only view, a history copy. %number% is the vault, %player% its owner, %name% its name (in title and admin-title). |
default-name | What a vault is called until it is renamed: #%number%. |
in-use, not-unlocked, unreadable, blocked-item, lock-lost, taken-over, taking-over | Opening and keeping a vault. |
hidden-stacks, returned, rewards-delivered | A vault that shrank (%count% stacks), and items handed back on join (%amount%). |
cooldown, in-combat, disabled-world, disabled-game-mode | Restrictions. %time% is what is left of the cooldown. |
rename-prompt, name-invalid, renamed, rename-reset, icon-prompt, icon-changed, no-permission | Names and icons. |
buy-prompt, bought, buy-too-poor, buy-limit, buy-disabled, buy-failed | Purchases. %price% is formatted in the currency, %number% is the vault bought. |
search-header, search-line, search-none | /pv search. %query% is what was searched, %amount% how many were found, %name% the vault. |
admin-usage | The lines /pvadmin prints. |
clear-prompt, cleared, restore-prompt, restored, history-empty, snapshot-missing, reloaded | Staff tools. %when% is how long ago a copy was taken. |
Menus
Two screens, under lang/<code>/menus/.
| File | Opened by | Edits |
|---|---|---|
user/vaults.yml | /pv, /pvadmin list | Yours. Kept across updates; a release that has to change its layout raises menu-version, replaces the file and keeps your previous one next to it. |
admin/history.yml | /pvadmin history | Replaced from the jar on every start and every menu reload. |
A menu file that fails to parse is named in the console and that screen does not open; fix it and
/pvadmin reload.
The vault list
vaults.yml is a PAGINATION menu with three templates: item_template for vaults the owner has,
buy_template for the next one for sale, locked_template for the rest.
| Screen values | Each vault |
|---|---|
%owner_name%, %vaults_unlocked%, %vaults_max%, %vaults_bought%, %vaults_rows% | %vault_number%, %vault_name%, %vault_icon%, %vault_used%, %vault_size%, %vault_free%, %vault_owner%, and on the one for sale %vault_price% |
%vault_owner% is the owner's UUID, which the buttons pass to the actions. %vaults_max% is how many
entries are drawn: max-amount, or the unlocked count when that is higher.
The history screen
| Screen values | Each copy |
|---|---|
%owner_name%, %vault_number%, %history_size% | %snapshot_id%, %snapshot_date%, %snapshot_when%, %snapshot_cause%, %snapshot_actor%, %snapshot_used% |
%snapshot_cause% is CLOSED, EDITED, CLEARED or RESTORED; %snapshot_used% is how many stacks the
copy holds.
Actions
The buttons call these, and any menu of any Exylia plugin can too:
| Action | What it does |
|---|---|
exyliaplayervaults:open <owner> <number> | Opens a vault. Your own goes through every player check; somebody else's opens to edit with admin.edit, read only with admin.view, and does nothing otherwise. |
exyliaplayervaults:rename <owner> <number> | Asks for a new name. Your own unlocked vault with customize.name, or anybody's with admin.edit. |
exyliaplayervaults:icon <owner> <number> | Asks for a new icon, on the same terms with customize.icon. |
exyliaplayervaults:buy | Sells the clicker their next vault. |
exyliaplayervaults:snapshot_view <id> | Shows a history copy, read only. Needs admin.history. |
exyliaplayervaults:snapshot_restore <id> | Puts a history copy back after a confirmation. Needs admin.history and admin.edit. |
<owner> is a UUID; the owner is never trusted from the button, so acting on somebody else's vault always
asks for the staff permission again.
Database
Every table lives in the database database.yml points at; they are listed on
Network.
Something missing on this page? Tell us on Discord