PlaceholderAPI
Expose market data to holograms, scoreboards, and any PAPI-aware plugin.
When PlaceholderAPI is installed, TheBrewingMarket automatically registers an expansion and exposes the data below. PlaceholderAPI is a soft dependency: servers without it run unchanged, they just don't get the placeholders.
tbm_ and thebrewingmarket_. Use whichever reads better. For example %tbm_daily_earned% and %thebrewingmarket_daily_earned% are identical.
Value format
Numeric placeholders come in two flavours:
- Formatted — e.g.
%tbm_daily_earned%→1,234 coins, using the Vault economy formatter. - Raw — same name suffixed with
_raw, e.g.%tbm_daily_earned_raw%→1234.0. Use these when feeding math into conditions, scoreboards, or other plugins.
Daily limit
Reads live from the in-memory daily tracker — updates instantly on every sale.
| Placeholder | Type | Description |
|---|---|---|
%tbm_daily_earned% | String | Money earned today, formatted. |
%tbm_daily_earned_raw% | Double | Money earned today, raw. |
%tbm_daily_limit% | String | Daily cap from market.limitation.earnings. |
%tbm_daily_limit_raw% | Double | Daily cap, raw. |
%tbm_daily_remaining% | String | max(0, limit − earned), formatted. |
%tbm_daily_remaining_raw% | Double | Same, raw. |
%tbm_daily_percent% | Integer | Progress towards the cap, clamped 0–100. |
%tbm_limit_active% | Boolean | true if market.limitation.enable is on. |
Base prices
Read the configured base price for any recipe — flat entries and group-defined prices are both supported. The recipe id goes in the placeholder name.
| Placeholder | Type | Example |
|---|---|---|
%tbm_price_<recipe>% | String | %tbm_price_wine% → 150 coins |
%tbm_price_<recipe>_raw% | Double | %tbm_price_wine_raw% → 150.0 |
Lifetime stats (per player)
Cached per player on join and kept in sync with every sale. Invalidated on quit to keep memory small.
| Placeholder | Type | Description |
|---|---|---|
%tbm_lifetime_earned% | String | All-time earnings from the market, formatted. |
%tbm_lifetime_earned_raw% | Double | Same, raw. |
%tbm_lifetime_brews% | Long | Total brews the player has ever sold. |
%tbm_last_sale_amount% | String | Money from the most recent sale, formatted. |
%tbm_last_sale_amount_raw% | Double | Same, raw. |
%tbm_last_sale_recipe% | String | Recipe id of the last brew sold. |
%tbm_last_sale_ago% | String | Relative time (e.g. 5 min ago). |
Per-recipe stats (per player)
Check whether a player has ever sold a specific brew, and how much.
| Placeholder | Type | Description |
|---|---|---|
%tbm_player_sold_<recipe>% | Boolean | true if the player has sold at least one of that recipe. |
%tbm_player_sold_<recipe>_qty% | Long | Total units of that recipe sold. |
%tbm_player_sold_<recipe>_total% | String | Total money earned from that recipe, formatted. |
%tbm_player_sold_<recipe>_total_raw% | Double | Same, raw. |
%tbm_player_sold_wine% → true if the player has ever sold a wine, %tbm_player_sold_wine_qty% → the exact unit count.
Global analytics
Server-wide daily snapshot refreshed from the database every 60 seconds. These placeholders are independent of the player viewing them — ideal for public scoreboards and holograms.
| Placeholder | Type | Description |
|---|---|---|
%tbm_global_total_today% | String | Total money earned by everyone today, formatted. |
%tbm_global_total_today_raw% | Double | Same, raw. |
%tbm_global_top_recipe_today% | String | Most-sold recipe today (ties broken alphabetically). |
%tbm_global_top_recipe_today_qty% | Long | Units sold of that top recipe today. |
%tbm_global_top_player_today% | String | Player name with the highest earnings today. |
%tbm_global_top_player_today_amount% | String | That player's earnings today, formatted. |
%tbm_global_top_player_today_amount_raw% | Double | Same, raw. |
Verification
Test with PlaceholderAPI's built-in /papi parse command:
/papi info tbm /papi info thebrewingmarket /papi parse <yourName> %tbm_daily_earned% / %tbm_daily_limit% /papi parse <yourName> %tbm_lifetime_brews% brews, %tbm_lifetime_earned% earned /papi parse <yourName> top recipe: %tbm_global_top_recipe_today% (%tbm_global_top_recipe_today_qty%)