Prices

How brew and Garden pricing works.

Formula

final_price = base_price × quality_score

What is quality_score?

Quality is assigned by the brewing plugin during the brewing process. It reflects how well the brew was crafted — fermentation time, distillation runs, and aging in barrels all influence it. A perfectly crafted brew reaches 1.0; a rushed or failed one sits near 0.01.

TheBrewingMarket reads this value automatically at sell time from whichever plugin is active — you do not need to configure anything for it to work.

TheBrewingProject

Quality is read via the TBP API; falls back to the brewery:score NBT tag if the API is unavailable. Range: 0.011.0.

BreweryX

Quality is read via brew.getQuality() (max 10) and normalized to 0.01.0 automatically.

Players can see a brew's quality by hovering over it in their inventory — it is displayed as stars or a numeric score depending on the plugin configuration.

Example: Whiskey (base 200) with quality 0.85 = 200 × 0.85 = 170 coins.

Brew Prices

Brew prices live under market.brews. Each key is a recipe id mapped to its base price.

config.yml
market:
  brews:
    default: 10
    beer: 25
    cidre: 35
    wine: 150
    mead: 120
    apple_liquor: 140
    tequila: 170
    shroom_vodka: 220
    gr_absinthe: 300
    coffee: 40
    iced_coffee: 50
    hot_choc: 35
    eggnog: 60
    hangover_detox: 80
    groups:
      30:
        - darkbeer
        - wheatbeer
      130:
        - ap_mead
        - vodka
      160:
        - g_vodka
        - gin
        - red_sangria
      180:
        - rum
        - gin_and_tonic
      200:
        - whiskey
        - brandy
        - french_75
      250:
        - fire_whiskey
        - absinthe

The default key is used as fallback when a recipe is not listed. Set a price to 0 to forbid selling that recipe.

Important: Recipe IDs must match the brewing plugin exactly (lowercase, underscores). For BreweryX, use the recipe's internal ID as defined in its configuration.

Garden Prices

When the Garden plugin is installed, fruits and seeds are priced under market.garden using the same format as market.brews. Garden produce has no quality — the score is always 1, so the price is fixed.

config.yml
market:
  garden:
    default: 0
    strawberry_fruit: 5
    strawberry_seeds: 2
    groups:
      10:
        - apple_fruit
        - cherry_fruit
Independent tables: market.brews and market.garden each have their own default. A brew default of 10 never leaks into Garden produce, and vice versa.

Group Prices

When several recipes share the same price you can use the groups map instead of repeating each recipe individually. The key is the price, the value is a list of ids. This works in both brews and garden.

config.yml
market:
  brews:
    default: 10
    wine: 150          # flat entry — takes priority over any group
    groups:
      30:
        - darkbeer
        - wheatbeer
      200:
        - whiskey
        - brandy
Priority: flat entries always override group entries when there is a collision. You can freely mix both formats in the same table.