Language
Customize messages and add translations.
Selecting a Language
config.yml
lang: 'en_US'
| File | Language |
|---|---|
lang/en_US.yml | English |
lang/es_ES.yml | Spanish |
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
| Key | Description | Placeholders |
|---|---|---|
prefix | Plugin prefix (used via <prefix>) | — |
Commands
| Key | Description |
|---|---|
command.only-players | Non-player runs player-only command |
command.no-permission | Missing permission |
command.reload-success | Config reloaded |
Market
| Key | Description | Placeholders |
|---|---|---|
market.sell-success | Successful sale | <sold-amount>, <sold-type>, <money> |
market.sell-types | Noun inserted as <sold-type> (see below) | — |
market.sell-nothing | Nothing valid to sell | — |
market.sell-error | Transaction error | — |
market.limit-reached | Daily 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
| Key | Description | Placeholders |
|---|---|---|
history.invalid-time | Invalid time format | — |
history.empty | No records found | <player> |
history.display | Page layout (list) | <entries>, <previous-page>, <next-page>, <page>, <max-page> |
history.entry | Single record line | <player-head>, <recipe>, <quantity>, <quality>, <total> |
history.entry-hover | Hover 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.
| Key | When it's shown |
|---|---|
placeholders.empty.last_sale_recipe_id | Player has never sold a brew. |
placeholders.empty.last_sale_recipe_name | Player has never sold a brew (also falls back to the recipe id first when the item had no custom name). |
placeholders.empty.last_sale_ago | Player has never sold a brew. |
placeholders.empty.global_top_recipe_id_today | No sales recorded server-wide today. |
placeholders.empty.global_top_recipe_name_today | No sales today (also falls back to the recipe id first when the top sale had no custom name). |
placeholders.empty.global_top_player_today | No 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.