messages.yml
Every message lives in messages.yml. Each supports legacy & codes, &#hex, MiniMessage and (with
PlaceholderAPI) %...%. After editing, run /cosmeticsadmin reload.
Format
Section titled “Format”Messages: MARKET-BOUGHT: Message: Enabled: true Value: - "&5[&d&lCosmetics&5] &7You bought &f{cosmetic} &7for &f{price}&7."Enabled: falsesilences a message entirely.Valueis a list - every line is sent (used for the multi-line admin help panel).- Keep the
{tokens}intact; don’t rename the message keys.
Message keys
Section titled “Message keys”Errors: PLAYER-ONLY, NO-PERMISSION, INVALID-PLAYER, INVALID-COSMETIC, COSMETIC-LOCKED,
ALREADY-HAVE-COSMETIC, COSMETIC-ALREADY-UNLOCKED, COSMETIC-LISTED, COSMETIC-NOT-UNLOCKED.
Give / remove / equip: COSMETIC-GIVEN, COSMETIC-REMOVED, COSMETIC-GIVEALL,
COSMETIC-REMOVEALL, COSMETIC-EQUIPPED, COSMETIC-UNEQUIPPED.
Market: MARKET-SELL-PROMPT, MARKET-SELL-CANCELLED, MARKET-SELL-INVALID-NUMBER,
MARKET-SELL-INVALID-PRICE, MARKET-SELL-NOT-OWNED, MARKET-SELL-LISTED, MARKET-LISTING-REMOVED,
MARKET-ECONOMY-UNAVAILABLE, MARKET-INSUFFICIENT-FUNDS, MARKET-ALREADY-SOLD, MARKET-BOUGHT,
MARKET-SOLD, MARKET-PRICE-TOO-LOW, MARKET-PRICE-TOO-HIGH, MARKET-TOO-MANY-LISTINGS,
MARKET-LISTING-FEE-INSUFFICIENT, MARKET-LISTING-EXPIRED, 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.
Admin: MAX-LISTINGS-SET, MAX-LISTINGS-RESET, RELOAD, COSMETICS-ADMIN-HELP.
Common tokens
Section titled “Common tokens”{player}, {cosmetic}, {cosmetic-type}, {price}, {amount}, {min}, {max}, {fee},
{buyer}, {case}, {position}, {ms} (reload time). Each message’s default text shows which
tokens it uses; a token only resolves in the messages that provide it.