Language

Customize messages and add translations.

Selecting a Language

config.yml
lang: 'en_US'
FileLanguage
lang/en_US.ymlEnglish
lang/es_ES.ymlSpanish
Placeholder syntax: messages use MiniMessage, so dynamic values are tags like <money> and <player> — not {money}. The plugin prefix is inserted with <prefix>.

Message Keys

General

KeyDescriptionPlaceholders
prefixPlugin prefix (used via <prefix>)

Commands

KeyDescription
command.only-playersNon-player runs player-only command
command.no-permissionMissing permission
command.reload-successConfig reloaded

Market

KeyDescriptionPlaceholders
market.sell-successSuccessful sale<sold-amount>, <sold-type>, <money>
market.sell-typesNoun inserted as <sold-type> (see below)
market.sell-nothingNothing valid to sell
market.sell-errorTransaction error
market.limit-reachedDaily cap reached (list)<earned>, <limit>, <remaining>
Adaptive sell noun: <sold-type> in sell-success is chosen from market.sell-types based on what was sold — brews, fruits, seeds, or mixed when a single sale mixes categories. Translate each noun for your language.
lang/en_US.yml
market:
  sell-success: '<prefix> <white>You sold <#FCBDE3><sold-amount></#FCBDE3> <sold-type> for <#FCBDE3><money>$</#FCBDE3>!</white>'
  sell-types:
    brews: 'brews'
    fruits: 'fruits'
    seeds: 'seeds'
    mixed: 'items'

History

KeyDescriptionPlaceholders
history.invalid-timeInvalid time format
history.emptyNo records found<player>
history.displayPage layout (list)<entries>, <previous-page>, <next-page>, <page>, <max-page>
history.entrySingle record line<player-head>, <recipe>, <quantity>, <quality>, <total>
history.entry-hoverHover tooltip on a record<player>, <time-ago>, <exact-date>
history.navigation.*Prev/Next buttons<page>

Placeholders (PlaceholderAPI empty fallbacks)

Text shown by each sale-dependent PlaceholderAPI placeholder when there's no data yet. Each key is independent — customize only the ones you care about.

Keep these snake_case: the keys under placeholders.empty mirror the PlaceholderAPI parameter names, so they use underscores rather than the MiniMessage tag style used elsewhere.
KeyWhen it's shown
placeholders.empty.last_sale_recipe_idPlayer has never sold a brew.
placeholders.empty.last_sale_recipe_namePlayer has never sold a brew (also falls back to the recipe id first when the item had no custom name).
placeholders.empty.last_sale_agoPlayer has never sold a brew.
placeholders.empty.global_top_recipe_id_todayNo sales recorded server-wide today.
placeholders.empty.global_top_recipe_name_todayNo sales today (also falls back to the recipe id first when the top sale had no custom name).
placeholders.empty.global_top_player_todayNo sales recorded server-wide today.
Note: All messages use MiniMessage formatting. See the Adventure documentation for the full tag reference.

Adding a Language

Copy a file

Duplicate lang/en_US.yml and rename it (e.g., fr_FR.yml).

Translate

Translate the values. Keep keys, placeholders, and config-version unchanged.

Set in config

Set lang: 'fr_FR' in config.yml and reload.