🔥Join our Discord for support, updates, and custom commissions.
Polaroid Studio Logo
PolaroidSTUDIO
DiscordLog In

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

HexRoleUse for
#eb4b30ErrorRefusals, failures, locked, blocked
#95d027SuccessConfirmations, "click to" lines, unlocked
#f2c42fWarningCautions, navigation, a highlighted value
#E9FDFBBodyOrdinary sentences
#289bd0AccentA value worth the eye landing on
#315a7aChromeSmall 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

GlyphMeansExample
An action the player can take▸ ᴄʟɪᴄᴋ ᴛᴏ ᴏᴘᴇɴ
A row in a list of facts • ᴏᴡɴᴇʀ: Steve
Separates the brand from the messageIn the prefix only
A bar around a chat header▬▬▬▬ ʜᴇʟᴘ ▬▬▬▬

Where the prefix goes

MessagePrefix?
A standalone result — "Protection created"Yes
A row in a list — a help entry, an /info lineNo
Hover textNo
A header that already contains itIt 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.