Everything else

Messages and translations

Every line the plugin sends lives in messages/, one file per part of the plugin.

plugins/ChorusCore/
  palette.yml
  messages/
    core.yml        refusals, /chorus, and the words other lines borrow
    chat.yml        /msg /reply /ignore /mail /socialspy
    economy.yml     /balance /pay /baltop /eco /paylog
    homes.yml       /home /sethome /delhome /homes /renamehome /homeicon
    items.yml       the item tools, and the inventory backups
    kits.yml        /kit /kits /kitedit
    menus.yml       every word that appears on a screen
    players.yml     /afk /seen /playtime /whois /list /nick /ptime /pweather
    shops.yml       chest shops, sign shops, /sell and /worth
    spawn.yml       /spawn /setspawn
    staff.yml       /tp /vanish /gamemode /freeze /sudo /lockdown and the rest
    teleport.yml    /tpa /tpahere /tpaccept /tpdeny /back /tptoggle
    utility.yml     /heal /feed /fly /god /ping /fix /trash and the portable ones
    warps.yml       /warp /warps /setwarp /delwarp /warpinfo /warpset
    world.yml       /world /time /weather /spawnmob /sweep /locate

They are read as one set of keys, so which file a line sits in is a question for whoever is editing them. A key is a key: home.created means the same thing wherever it is written.

957 lines in English, across those fifteen files. There are no hardcoded strings in the code, which is what makes a full translation possible.

# messages/homes.yml
home:
  created: '%prefix%<c:muted>Home <white>%home%</white> saved.'
  deleted: '%prefix%<c:muted>Home <white>%home%</white> deleted.'

Colours#

Three ways to write them, and all three work in the same line:

MiniMessage <gold>, <gradient:#a06bff:#e0c3fc>
The old codes &6, &l
Palette names <c:accent>, closed with </c> — see Colours

Write && for an & that is not a colour.

Both hex spellings work: &#a1b2c3, and &x&a&1&b&2&c&3 the way the old proxies wrote it. A colour code clears the formatting before it, exactly as it does in vanilla, so &l&cText comes out red and not bold.

The full tag list is in the MiniMessage documentation. The ones that come up:

Tag Effect
<red> <gold> <gray> <white> <dark_gray> The sixteen named colours
<#a1b2c3> Any hex colour
<gradient:#a06bff:#e0c3fc> A gradient across the text inside it
<bold> <italic> <underlined> Formatting, closed with </bold>
<newline> A line break inside one message
<hover:show_text:'...'> A tooltip
<click:run_command:'/home'> Clickable text

Text a player writes#

Everything above is about lines you write, in a config file, and those take all of MiniMessage. Text a player types in game does not: it takes colours and formatting, and nothing else.

That applies to /nick, /itemname, /lore, /editsign, and name: and lore: in /give. For a player who has the permission to use formatting at all, what works is:

Colour codes &c, &#ff5555, &x&f&f&5&5&5&5
Colours <red>, <#ff5555>, <color:...>
Formatting <bold>, <italic>, <underlined>, <strikethrough>, <obfuscated>, and &l &o &n &m &k
Gradients <gradient:...>, <rainbow>, <transition:...>
Reset <reset>, &r

Anything else — <click:...>, <hover:...>, <insert:...>, <font:...>, <selector:...> — is not read, and stays in the text exactly as it was typed.

Why it is drawn there: a click tag on a sign runs its command with the permissions of whoever clicks it. Without this rule, a sign a player wrote could run a command for the next admin to walk past.

The prefix#

%prefix% is the prefix line at the top of messages/core.yml.

Any file in the folder may open with a prefix of its own, and %prefix% then means that one in that file and nowhere else:

# messages/shops.yml
prefix: '<c:accent><bold>Shop</bold></c> <c:muted>| '

That is how one module can announce itself differently without every one of its lines spelling the difference out.

Silencing a line#

Leave it empty and it is not sent at all:

cooldown:
  wait: ''

That is the way to take a line out. Deleting the key gives you the shipped English one back, since a missing key falls through to the default.

Placeholders#

Each message has its own, written %like_this%. The shipped files show which ones a line takes; a placeholder that does not belong to that message is left as written.

Values are put in as text, never as formatting. A player whose home is called <red> sees those five characters, not a colour — and the same goes for &-codes. Nobody can write their way into looking like somebody else, or into a clickable link.

Item names and lore#

Item names and lore are not quietly italicised the way the game does it by default, and a line of lore that names no colour is drawn grey rather than the purple the game falls back to.

Neither is written into your file. What you type is stored exactly as you typed it, the styling happens when the line is drawn, and an editor screen shows you the plain text back.

This applies to /itemname and /lore too, which take either format from anyone holding chorus.items.format.

A note on bold#

Bold is for a heading, not for a value. A name that comes out of the data — a player, a home, a warp, an item — is written in white against grey rather than in bold, because a bold word in the middle of a sentence reads as shouting. The shipped messages follow that; yours do not have to.

Changing a message#

  1. Edit the file in messages/ that holds it.
  2. /chorus reload.

Keep the key. Change the value. A key that is not one the plugin knows is ignored.

Changing one line for one command only, rather than everywhere it is used, is a messages block in that command's own config — see Per-command rules.

Translations#

Other languages are folders inside messages/:

messages/
  es/
    core.yml
    homes.yml
    ...

A translation only writes down the lines it translates, in as many or as few files as it likes. Anything it leaves out comes from English, so a translation is never out of date, only incomplete. See Languages.

Coming from an older version#

A messages.yml, menus.yml or messages_es.yml left in the plugin folder is still read, on top of the folder, and its lines win. Nothing edited on an older version is lost.

The console says so once at startup. Move what you changed into the folder and delete the old file when you are ready; the plugin does not need it gone.

A prefix set in an old messages.yml is used everywhere, not only for the lines that file holds.