Configuring

The config files

plugins/ChorusCore/
├── config.yml            storage, economy, language, confirmations, metrics,
│                         staff log, updates
├── aliases.yml           extra names for every command
├── messages.yml          every line the plugin sends to chat
├── messages_es.yml       Spanish, and the model for any other language
├── menus.yml             every word that appears on a screen
├── 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.yml

The 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.

Reloading#

/chorus reload            every file
/chorus reload kits       one module

The module names are homes, warps, spawn, teleport-requests, utility, economy, shops, chat, items, kits, world, staff, players and custom-commands.

Three things need a full restart instead:

  1. The storage section — the connection pool is built once.
  2. aliases.yml — command names are registered with the server at startup.
  3. 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: true

false 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: false

default: '' is English — that is messages.yml itself. default: es gives everybody messages_es.yml. per-player: true sends each player the file matching their own Minecraft language instead. See Languages.

confirmations#

confirmations:
  seconds: 15

How long you have to run a command a second time to confirm it. 0 asks for nothing. chorus.bypass.confirm skips them.

The commands that ask: /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: true

Sends 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: 10

Writes 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: modrinth
  project: choruscore
  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 differently

The 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.