💬 Messages
Every word the plugin says is in lang/messages_<language>.yml. Nothing is hardcoded, including
the prefix.
language in config.yml picks the file. en and es ship. A key your file is missing falls
back to English rather than showing blank, and the console tells you which keys those are on
startup.
Adding a language
Copy messages_en.yml to messages_fr.yml, translate it, set language: fr. The plugin writes
its own copies of en and es back if you delete them, but leaves yours alone.
Two shapes a key can take
Plain text:
reload:
text: '<#95d027>Configuration reloaded successfully.'
Or text with a tooltip and a click:
menu:
text: '<#f2c42f>▸ <#E9FDFB>/polaroidchat menu <#315a7a>— Open the chat menu'
hover: '<#E9FDFB>Permission: <#f2c42f>{permission}'
click: '[RUN_COMMAND] /polaroidchat menu'
Click tokens are the same everywhere: [NONE], [RUN_COMMAND], [SUGGEST_COMMAND],
[OPEN_URL], [COPY].
<prefix>
The prefix is one key, and <prefix> stands for it in any other message. That is what lets a
header put the brand in the middle of itself:
prefix: '<b><#eb4b30>PO</#eb4b30><#f3842c>LA</#f3842c><#f2c42f>RO</#f2c42f><#95d027>ID</#95d027> <#289bd0>CHAT</#289bd0> <#315a7a>┇</b> '
help:
header:
text: '<#315a7a>▬▬▬▬▬▬▬▬ <prefix><#315a7a>ʜᴇʟᴘ <#6f6085>%version% <#315a7a>▬▬▬▬▬▬▬▬'
Restyle it once and it changes everywhere.
Colours
Any form Minecraft understands: &f, §f, &#RRGGBB, #RRGGBB, or a MiniMessage tag such as
<red> or <gradient:#ff0000:#0000ff>. Legacy codes still render, but write new text in
MiniMessage.
The Polaroid style
The shipped files follow the visual language every plugin in the Polaroid line shares. You are free to ignore all of it — but if you are adding a message and want it to match, this is the whole of it.
The palette
Six colours carry meaning. Use them for what they mean, not for what looks nice.
| Hex | Role | Use for |
|---|---|---|
#eb4b30 | Error | Refusals, failures, locked, blocked |
#95d027 | Success | Confirmations, "click to" lines, unlocked |
#f2c42f | Warning | Cautions, navigation, a highlighted value |
#E9FDFB | Body | Ordinary sentences |
#289bd0 | Accent | A value worth the eye landing on |
#315a7a | Chrome | Small print and empty states — used sparingly, on purpose |
Two supporting tones: #b6c1ec for a value quoted inside a sentence, #6f6085 for a count in
parentheses.
Never give the error colour to something that is not an error. A player learns in five minutes that red means stop. Spending it on decoration costs you that.
Small caps
Button names, section headers and labels are written in Unicode small caps. Nothing else in Minecraft looks like it, which is most of the identity.
ᴀ ʙ ᴄ ᴅ ᴇ ꜰ ɢ ʜ ɪ ᴊ ᴋ ʟ ᴍ ɴ ᴏ ᴘ ǫ ʀ s ᴛ ᴜ ᴠ ᴡ x ʏ ᴢ
s and x have no small-cap form, ᴢ is the closest match, and ǫ stands in for Q. Numbers and
punctuation stay normal.
Sentences are never small caps. Lore that explains something is written normally — small caps are for labels, not prose.
Glyphs
| Glyph | Means | Example |
|---|---|---|
▸ | An action the player can take | ▸ ᴄʟɪᴄᴋ ᴛᴏ ᴏᴘᴇɴ |
• | A row in a list of facts | • ᴏᴡɴᴇʀ: Steve |
┇ | Separates the brand from the message | In the prefix only |
▬ | A bar around a chat header | ▬▬▬▬ ʜᴇʟᴘ ▬▬▬▬ |
Where the prefix goes
| Message | Prefix? |
|---|---|
| A standalone result — "Protection created" | Yes |
A row in a list — a help entry, an /info line | No |
| Hover text | No |
| A header that already contains it | It is the header |
Prefixing list rows repeats your banner a dozen times in one block. That is the fastest way to make a plugin feel cheap.
An item in a menu
Four beats, read top to bottom:
name: '<#f3842c>ʀᴇɴᴀᴍᴇ'
lore:
- '<#E9FDFB>Currently <#b6c1ec>%name%' # 1. what it is
- '' # 2. a blank line
- '<#95d027>▸ ᴄʟɪᴄᴋ ᴛᴏ ʀᴇɴᴀᴍᴇ' # 3. what you can do, always last
The blank line is not filler. It separates what is from what you can do, and the eye finds the action without reading.
Menu titles
<dark_gray><b> and small caps, always. A title is a label on the window, not a place to be loud.