messages.yml
Edit, disable and translate every message OptimalCosmetics sends, add titles and action bars, and set the type labels.
Every message lives in messages.yml. Each supports legacy & codes, &#hex, MiniMessage,
[center] and (with PlaceholderAPI) %...% for the receiving player. After editing, run
/cosmeticsadmin reload.
Format
Section titled “Format”Messages: CASE-WON: Message: Enabled: true Value: - '&5[&d&lCosmetics&5] &7You won &f{cosmetic} &7({cosmetic-type}) and unlocked it!'Enabled: falsesilences a message.Valueis a string or a list; every line is sent.- Keep the
{tokens}and the message keys as they are.
Missing keys are written back with their defaults the next time the file loads, so deleting a block
resets it. Two keys are not in the shipped file and appear after the first start:
PROFILE-LOAD-FAILED and MARKET-ALREADY-LISTED.
Titles and action bars
Section titled “Titles and action bars”Any message can also show a title, an action bar, or both. Add the blocks next to Message::
Messages: CASE-WON-LIMITED: Message: Enabled: true Value: - '&5[&d&lCosmetics&5] &7You won the &c&lLIMITED &f{cosmetic} &7as the &f{position} &7of &f{max} &7winners!' Title: Enabled: true Title: '&5&m━━&r &c&lLIMITED &f&l{cosmetic} &5&m━━&r' Sub-Title: '&7You are the &f{position} &7of &f{max} &7winners!' Fade-In: 10 Stay: 60 Fade-Out: 10 Action-Bar: Enabled: true Value: '&c&lLIMITED &7win!'Titleis the large line,Sub-Titlethe smaller one under it. Either can be''.Fade-In,StayandFade-Outare ticks (defaults 10, 60, 10).- The same tokens as the chat message work in the title, subtitle and action bar.
- Each block has its own
Enabled, independent of the chat message.
CASE-WON-LIMITED ships with a title. Add one to any other key the same way.
Message keys
Section titled “Message keys”General: PLAYER-ONLY, NO-PERMISSION, INVALID-PLAYER, INVALID-COSMETIC,
PROFILE-LOAD-FAILED (the kick text when a player’s cosmetics cannot be loaded at login),
AMOUNT-TOO-LARGE, RELOAD, COSMETICS-ADMIN-HELP.
Cosmetics: COSMETIC-LOCKED, ALREADY-HAVE-COSMETIC, COSMETIC-EQUIPPED,
COSMETIC-UNEQUIPPED.
Admin: COSMETIC-GIVEN, COSMETIC-REMOVED, COSMETIC-GIVEALL, COSMETIC-REMOVEALL,
COSMETIC-ALREADY-UNLOCKED, COSMETIC-NOT-UNLOCKED, COSMETIC-LISTED, MAX-LISTINGS-SET,
MAX-LISTINGS-RESET.
Market: MARKET-SELL-PROMPT, MARKET-SELL-CANCELLED, MARKET-SELL-INVALID-NUMBER,
MARKET-SELL-INVALID-PRICE, MARKET-SELL-NOT-OWNED, MARKET-SELL-LISTED, MARKET-PRICE-TOO-LOW,
MARKET-PRICE-TOO-HIGH, MARKET-TOO-MANY-LISTINGS, MARKET-LISTING-FEE-INSUFFICIENT,
MARKET-LISTING-REMOVED, MARKET-LISTING-EXPIRED, MARKET-ECONOMY-UNAVAILABLE,
MARKET-INSUFFICIENT-FUNDS, MARKET-ALREADY-SOLD, MARKET-ALREADY-LISTED, MARKET-BOUGHT,
MARKET-SOLD, MARKET-PAYOUT-RECEIVED, MARKET-SEARCH-PROMPT, MARKET-SEARCH-CANCELLED.
Vouchers: VOUCHER-GIVEN, VOUCHER-RECEIVED, VOUCHER-REDEEMED, VOUCHER-ALREADY-OWNED,
VOUCHER-LISTED, VOUCHER-INVALID, VOUCHER-NOT-CONFIGURED.
Cases: CASE-INVALID, CASE-GIVEN, CASE-PLACED, CASE-REMOVED, CASE-WON,
CASE-WON-LIMITED, CASE-WON-VOUCHER, CASE-SOLD-OUT, CASE-INSUFFICIENT,
CASE-ECONOMY-UNAVAILABLE, CASE-EMPTY.
Tokens per message
Section titled “Tokens per message”| Message | Tokens |
|---|---|
INVALID-PLAYER, COSMETIC-ALREADY-UNLOCKED, COSMETIC-NOT-UNLOCKED, COSMETIC-GIVEALL, COSMETIC-REMOVEALL, MAX-LISTINGS-RESET |
{player} |
INVALID-COSMETIC |
{cosmetic} (what was typed) |
COSMETIC-LISTED |
{player}, {cosmetic} |
COSMETIC-GIVEN, COSMETIC-REMOVED |
{player}, {cosmetic}, {cosmetic-type} |
COSMETIC-EQUIPPED, COSMETIC-UNEQUIPPED, VOUCHER-REDEEMED, CASE-WON, CASE-WON-VOUCHER |
{cosmetic}, {cosmetic-type} |
MAX-LISTINGS-SET |
{player}, {amount} |
MARKET-SELL-LISTED, MARKET-BOUGHT |
{cosmetic}, {price} |
MARKET-SOLD |
{buyer}, {cosmetic}, {price} (what the seller receives after tax) |
MARKET-INSUFFICIENT-FUNDS, MARKET-PAYOUT-RECEIVED, CASE-INSUFFICIENT |
{price} |
MARKET-PRICE-TOO-LOW |
{min} |
MARKET-PRICE-TOO-HIGH, MARKET-TOO-MANY-LISTINGS, AMOUNT-TOO-LARGE |
{max} |
MARKET-LISTING-FEE-INSUFFICIENT |
{fee} |
MARKET-LISTING-EXPIRED, VOUCHER-ALREADY-OWNED, VOUCHER-LISTED, VOUCHER-NOT-CONFIGURED |
{cosmetic} |
VOUCHER-GIVEN |
{amount}, {cosmetic}, {player} |
VOUCHER-RECEIVED |
{amount}, {cosmetic} |
CASE-WON-LIMITED |
{cosmetic}, {cosmetic-type}, {position} (1st, 2nd, …), {max} |
CASE-INVALID, CASE-PLACED, CASE-REMOVED |
{case} |
CASE-GIVEN |
{case}, {player} |
RELOAD |
{ms} (reload time in milliseconds) |
Prices, fees and payouts are formatted with the provider’s
Currency-Formats entry. A token only
resolves in the messages listed for it.
Cosmetic-Format
Section titled “Cosmetic-Format”Next to Messages, the file holds the labels the plugin prints itself. Keep this section: if a key
is missing from both your file and the built-in copy, the load fails and names the path.
Cosmetic-Format: Type-Labels: Chat-Colors: "Chat Color" Tags: "Tag" Name-Paints: "Name Paint" Rank-Colors: "Rank Color" Glow: "Glow" Tab-Icon: "Tab Icon" Join-Message: "Join Message" Leave-Message: "Leave Message" Never: "Never" Missing-Cosmetic: "&cMissing cosmetic"| Key | Used for |
|---|---|
Type-Labels.<type> |
The singular type name behind {type} and {cosmetic-type} in icons, vouchers, case lore, the case reveal and messages. (The plural filter names are Types.<type>.Name in config.yml.) |
Never |
{expires} of a listing when Expiry-Days is 0, and {reshuffle} of a case that never reshuffles. |
Missing-Cosmetic |
The name of the barrier shown for a listing whose cosmetic no longer exists in the config. |
- The sell and search prompts end on
cancelor an empty line. A wrong price keeps the sell prompt open and sends the matching error, so the player can type again. COSMETICS-ADMIN-HELPis shown for/cosmeticsadminwith no or wrong arguments.
