Configuring
The config files
plugins/ChorusCore/
├── config.yml storage, economy, language, confirmations, metrics,
│ staff log, updates
├── aliases.yml extra names for every command
├── palette.yml the colours every line is written in
├── messages/ every line the plugin sends, one file per part of it
│ ├── menus.yml every word that appears on a screen
│ └── es/ the same in Spanish, and a folder per language after it
├── motd.txt what players read as they join, and on /motd
├── info.txt the chapters behind /info
├── chorus.db the database, when storage is sqlite
└── modules/
├── homes.yml
├── warps.yml
├── spawn.yml
├── teleport.yml
├── utility.yml
├── economy.yml
├── shops.yml
├── chat.yml
├── items.yml
├── kits.yml
├── world.yml
├── staff.yml
├── players.yml
└── custom-commands.ymlThe rule for finding a setting: anything about one command is in that command's module
file; anything the whole plugin shares is in config.yml.
The startup check#
The plugin reads its own config when the server starts and says what will not work, with the file and the line:
[ChorusCore] 3 problems in the configuration:
1. modules/homes.yml:142 'cooldown-second' is not an option. Did you mean 'cooldown-seconds'?
2. modules/warps.yml:61 'DIAMOND_HELMET_X' is not a material.
3. config.yml:98 'decimals' takes a number, not text.It says nothing when there is nothing wrong, so a quiet start is the answer.
What it looks for#
| Options that do not exist | A key the plugin has no option for, with the closest real name when there is one. Inside a command block that means every option the defaults block has, plus permission |
| Values of the wrong kind | Text where a number goes, one value where a list goes. A number written where text goes is fine — it is read as text |
| Materials | Icons, fillers and buttons in the menu blocks, the keys of the worth list, and both sides of the condense list |
| Sounds | A name that is not shaped like one, such as Entity Enderman Teleport |
| Particles | One this server version does not have |
The list of real options is the copy of each file inside the jar, so the check always knows the options of the version you are actually running.
Which files#
config.yml, aliases.yml and every file in modules/. The messages folder and
palette.yml are not checked.
What it leaves alone#
The sections you fill in yourself, where a name the plugin has never heard of is the normal case:
kits.definitionscustomincustom-commands.ymlshops.worthitems.condensehomes.world-limitsstorage.mysql.properties- a
messages:block inside any command
The values inside them are still checked: a kit icon or a worth entry that is not a material is reported.
The lines inside requires, on-success and on-fail are not checked here either. One the
plugin does not understand is named in the console when the file is read.
Worlds#
Not checked at startup, because a world another plugin creates may not exist yet at that
point. /chorus check checks them: every worlds: list, every homes.world-limits entry and
spawn.fallback-world.
At most 25 problems are listed at once.
Reloading#
/chorus reload every file
/chorus reload kits one moduleThe module names are homes, warps, spawn, teleport-requests, utility, economy,
shops, chat, items, kits, world, staff, players and custom-commands.
A full reload takes in palette.yml and everything under messages/, so a recolour or a
reworded line is live without a restart.
Three things need a full restart instead:
- The
storagesection — the connection pool is built once. aliases.yml— command names are registered with the server at startup.- Adding, renaming or removing a custom command — same reason.
Changing what an existing custom command says is picked up by a reload.
config.yml#
startup-banner#
startup-banner: truefalse prints one line in the console instead of the block.
storage#
storage:
type: sqlite
file: chorus.db
mysql:
host: localhost
port: 3306
database: chorus
username: root
password: ''
pool-size: 8
properties:
useSSL: false
characterEncoding: utf8| Key | What it does |
|---|---|
type |
sqlite for a single file in this folder, nothing to set up. mysql for MySQL or MariaDB, which is what several servers sharing data need. |
file |
SQLite only, relative to plugins/ChorusCore/. |
mysql.pool-size |
How many connections are held open. Eight is plenty for one server. |
mysql.properties |
Appended to the connection URL as it is written. |
See Storage for what the tables are and how migrations work.
economy#
economy:
enabled: true
provider: auto
starting-balance: 0.0
minimum-balance: 0.0
maximum-balance: 1000000000000.0
currency:
symbol: "$"
suffix: false
decimals: 2
singular: coin
plural: coins| Key | What it does |
|---|---|
enabled |
false switches prices off entirely and leaves /pay and /balance saying so. |
provider |
auto uses the built-in ledger unless another economy plugin registered with Vault. self always uses the built-in one. vault uses another plugin only, and ignores every price if Vault is missing. off is the same as enabled: false. |
starting-balance |
What a brand new player has. |
minimum-balance / maximum-balance |
A balance is never taken past either. |
currency.symbol |
$, €, or a word. |
currency.suffix |
true writes 100$ instead of $100. |
currency.decimals |
0 to 4. |
currency.singular / plural |
The words for lines that read "5 coins". |
The currency block is only used by the built-in ledger. Another economy plugin formats its
own money its own way.
language#
language:
default: ''
per-player: falsedefault: '' is English — the files directly inside messages/. default: es gives
everybody messages/es/. per-player: true sends each player the folder matching their own
Minecraft language instead. See Languages.
confirmations#
confirmations:
seconds: 0How long you have to run a command a second time to confirm it. 0, the default, asks for
nothing and everything runs on the first try. Raise it to put the second step back —
15 is a reasonable window. chorus.bypass.confirm skips them whatever this says.
The commands that ask, once it is above zero: /clearinventory, /delhome, /delwarp,
/sethome over a home you already have, /sweep of a whole world, a payment over
economy.confirm-above, and both importers.
metrics#
metrics: trueSends the server version, the storage type, the economy mode and how many modules are on to
bStats. No player data of any kind. false sends nothing.
staff-log#
staff-log:
enabled: true
keep-days: 60
page-size: 10Writes down freezing and unfreezing, /sudo, /lockdown, /tempfly, notes and every /eco.
Read it with /stafflog. keep-days: 0 keeps entries for ever, which on a busy server means
a table that only ever grows. page-size maximum is 50.
updates#
updates:
check: true
source: spigot
project: '138794'
url: ''
notify-staff: true| Key | What it does |
|---|---|
check |
false never asks anybody anything. |
source |
modrinth, hangar, spigot or plain. |
project |
The project on that site. For spigot it is the number in the resource URL. Empty switches the check off. |
url |
Only read when source: plain — a page of your own that answers with nothing but a version number. |
notify-staff |
Tells anybody holding chorus.updates as they join. The console is told either way. |
It is a plain request for a version number, once at startup and once a day. Nothing is downloaded, nothing is installed, and nothing about this server is sent — not the address, not the player count, not even the version being run. Every failure is quiet: a site that is down, a renamed project or a server with no internet all end with no answer and no line in the console.
Module files#
Every module file has the same shape:
enabled: true # switches off every command in this file
<module>: # settings that belong to the module as a whole
...
commands:
defaults: ... # what every command below inherits
<command>: ... # what that one does differentlyThe commands half is the same everywhere and is documented once, in
Per-command rules. The settings half differs per module and is documented on
that module's own page.
Where every setting lives#
| Setting | File |
|---|---|
| Home limits, the homes menu, per-world home caps | modules/homes.yml |
Per-warp permissions, warp sorting, [Warp] signs |
modules/warps.yml |
| First-join spawn, respawn behaviour, per-world spawns | modules/spawn.yml |
Warmups, /back history, safe landing, request timeout |
modules/teleport.yml |
Service signs, /trash size, /near radius, /invsee refresh, motd on join |
modules/utility.yml |
Payment limits, /baltop size, the payment log |
modules/economy.yml |
| Sell prices, the sell multiplier, chest shop rules | modules/shops.yml |
| Mail retention and inbox size, social spy | modules/chat.yml |
Item restrictions, /condense recipes, inventory backups |
modules/items.yml |
| The kits themselves, the kit menu, the editor screen | modules/kits.yml |
Per-world permissions, /spawnmob limit, auto-sweep |
modules/world.yml |
| Auto-AFK, nickname length, GeoIP | modules/players.yml |
Your own /discord and /rules |
modules/custom-commands.yml |
modules/staff.yml holds no settings of its own: everything staff-related is a per-command
rule or a permission.
Text is the exception to that rule: it lives in messages/ rather than beside the setting it
belongs to — see Messages and translations. What a screen
says is in messages/menus.yml; how many rows it has and which items it uses are still in
the module file.
