References

Complete default files — copy, paste, and customize.

config.yml

config.yml
# =============================================
#          TheBrewingMarket Configuration
# =============================================
# Supports MiniMessage format for all text fields.
# The layout uses symbols to define the GUI structure.
#
# Price formula: base_price * brewery:score (0.01 to 1.0)
#
# -- Item Components --------------------------
# Each icon has a 'material', an optional 'components' block mirroring the
# vanilla data-component format (kebab-case), and an optional 'action'.
# Supported components:
#   custom-name                - Item name (MiniMessage)
#   lore                       - List of lines (MiniMessage)
#   profile                    - Head profile (properties: name/value)
#   enchantments               - Enchantment:level map
#   custom-model-data          - floats, flags, strings, colors
#   item-model                 - Model resource location
#   potion-contents            - Potion custom-color
#   tooltip-display            - hide-tooltip / hidden-components
#   tooltip-style              - Custom tooltip style
#   enchantment-glint-override - Force the glint on/off

# Internal version — do not edit. Bump = new keys were added.
config-version: 2

# Language file to use from the lang/ folder (without .yml)
# Available: en_US, es_ES (or create your own)
lang: 'en_US'

# Number of records shown per page in /tbm history (1-32)
history-per-page: 8

market:
  # Allow selling brews from inside shulker boxes via "Sell All".
  # Set to false to disable for everyone. When true, individual
  # players can be excluded by negating the thebrewingmarket.shulker permission.
  shulker-selling: true

  # Number format for money in the GUI and messages (Java DecimalFormat pattern).
  money-format: '#,##0.##'

  title: '<white>🍺 <gradient:#FCBDE3:#F973C4><b>Liquor Store</b></gradient> 🍺</white>'
  layout:
    - 'JJLKTKLJJ'
    - 'IIIIIIIII'
    - 'IIIIIIIII'
    - 'IIIIIIIII'
    - 'IIIIIIIII'
    - 'JJLBCSLJJ'

  # -- Daily earnings limit -------------------
  # Caps how much money each player can earn from the market per day.
  # Sales that would exceed the cap are rejected entirely.
  limitation:
    enable: true
    earnings: 10000

  # -- Brew prices ----------------------------
  # final_price = base_price * brewery:score
  # Missing recipes use 'default'. Set a price to 0 to forbid selling.
  #
  # Two formats, mixable. Flat entries override groups on collision:
  #   wine: 150              # flat: recipe -> price
  #   groups:                # groups: price -> [recipes]
  #     30:
  #       - darkbeer
  #       - wheatbeer
  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

  # -- Garden prices (fruits and seeds) -------
  # For servers running the Garden plugin. Fixed price (no quality; score is 1).
  # Same format as 'brews'. Ids are '<plant>_fruit' or '<plant>_seeds'.
  # default: 0 keeps unlisted produce unsellable.
  garden:
    default: 0
    # strawberry_fruit: 5
    # strawberry_seeds: 2
    # groups:
    #   10:
    #     - apple_fruit
    #     - cherry_fruit

  # -- Item Slots -----------------------------
  # Symbol for slots where players can place/view brews
  item-slot:
    symbol: 'I'

  # -- Sell Button (sells only items in the GUI) --
  sell-icons:
    symbol: 'B'
    allow-icon:
      material: 'potion'
      components:
        custom-name: '<gradient:#FCBDE3:#F973C4>● <b>Sell drink</b></gradient>'
        lore:
          - ''
          - ' <font:uniform><white>Sell all brews from</white></font> '
          - ' <font:uniform><white>above for <#FCBDE3><money></#FCBDE3> coins.</white></font> '
          - ''
          - ' <font:uniform><gradient:#FCBDE3:#F973C4><b>> Click to sell</b> 🍺</gradient></font>'
          - ''
        potion-contents:
          custom-color: 16679863
        tooltip-display:
          hidden-components:
            - 'potion-contents'
      action:
        sound:
          type: 'sound'
          value: 'minecraft:block.amethyst_block.place'
    deny-icon:
      material: 'glass_bottle'
      components:
        custom-name: '<gradient:#FF7373:#FF0D0D><b>Nothing to sell!</b></gradient>'
        lore:
          - ''
          - '  <#FF7373>❌</#FF7373> <white><font:uniform>Nothing to sell!</font></white> <#FF0D0D>❌</#FF0D0D>  '
          - ''
      action:
        sound:
          type: 'sound'
          value: 'minecraft:entity.villager.no'

  # -- Sell All Button (sells from GUI + scans inventory) --
  sell-all-icons:
    symbol: 'S'
    allow-icon:
      material: 'potion'
      components:
        custom-name: '<gradient:#FCBDE3:#F973C4>● <b>Sell all!</b></gradient>'
        lore:
          - ''
          - ' <font:uniform><white>Sell all brews from your</white></font> '
          - ' <font:uniform><white>inventory for <#FCBDE3><money></#FCBDE3> coins.</white></font> '
          - ''
          - ' <font:uniform><gradient:#FCBDE3:#F973C4><b>> Click to sell</b> 🍺</gradient></font>'
          - ''
        potion-contents:
          custom-color: 16679863
        enchantment-glint-override: true
        tooltip-display:
          hidden-components:
            - 'potion-contents'
      action:
        sound:
          type: 'sound'
          value: 'minecraft:block.amethyst_block.place'
    deny-icon:
      material: 'glass_bottle'
      components:
        custom-name: '<gradient:#FF7373:#FF0D0D><b>Nothing to sell!</b></gradient>'
        lore:
          - ''
          - '  <#FF7373>❌</#FF7373> <white><font:uniform>Nothing to sell!</font></white> <#FF0D0D>❌</#FF0D0D>  '
          - ''
      action:
        sound:
          type: 'sound'
          value: 'minecraft:entity.villager.no'

  # -- Title Icon -----------------------------
  title-icon:
    symbol: 'T'
    material: 'player_head'
    components:
      custom-name: '<white>🍺 <gradient:#FCBDE3:#F973C4><b>Liquor Store</b></gradient> 🍺</white>'
      lore:
        - ''
        - ' <white>Place your brews below and...</white> '
        - ' <white>Sell them for money!</white> '
        - ''
        - ' <white>The price depends on the recipe</white> '
        - ' <white>and the brew quality.</white> '
        - ''
      profile:
        properties:
          - name: 'textures'
            value: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTg4NzZjZTFiY2VjMmI5MjI0ZjRkNjhlZTA0ZjdjNjNiZjM1NGJhOTY2ZmE2YTVjYjg4ZDFiNWMwNTA0ZGRjMyJ9fX0='

  # -- Close Button ---------------------------
  close-icon:
    symbol: 'C'
    material: 'player_head'
    components:
      custom-name: '<gradient:#FCBDE3:#F973C4><b>Close</b></gradient>'
      profile:
        properties:
          - name: 'textures'
            value: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTg4NzZjZTFiY2VjMmI5MjI0ZjRkNjhlZTA0ZjdjNjNiZjM1NGJhOTY2ZmE2YTVjYjg4ZDFiNWMwNTA0ZGRjMyJ9fX0='

  # -- Decorative Icons -----------------------
  decorative-icons:
    pink-glass:
      symbol: 'J'
      material: 'pink_stained_glass_pane'
      components:
        tooltip-display:
          hide-tooltip: true
    brain-coral:
      symbol: 'K'
      material: 'brain_coral'
      components:
        tooltip-display:
          hide-tooltip: true
    brain-coral-fan:
      symbol: 'L'
      material: 'brain_coral_fan'
      components:
        tooltip-display:
          hide-tooltip: true

database.yml

database.yml
# Internal version — do not edit. Bump = new keys were added.
config-version: 2

# local database
#   SQLite
#
# remote database
#   MySQL
#   MariaDB (preferred over MySQL)
#
# The value below is matched case-insensitively.
data-storage-method: 'SQLite'

SQLite:
  # Name of the .db file (without extension) inside the plugin's data folder
  file: 'TheBrewingMarket'
  # Leave empty to keep the legacy table name 'sell_history' (no prefix)
  table-prefix: 'tbm'

MySQL:
  host: 'localhost'
  port: 3306
  user: 'root'
  password: 'password'
  database: 'minecraft'
  connection-parameters: '?useSSL=false&useUnicode=true&characterEncoding=UTF-8'
  pool-settings:
    max-pool-size: 10
    min-idle: 10
    max-lifetime: 180000
    keep-alive-time: 60000
    time-out: 20000
  table-prefix: 'tbm'

MariaDB:
  host: 'localhost'
  port: 3306
  user: 'root'
  password: 'password'
  database: 'minecraft'
  connection-parameters: '?useUnicode=true&characterEncoding=UTF-8'
  pool-settings:
    max-pool-size: 10
    min-idle: 10
    max-lifetime: 180000
    keep-alive-time: 60000
    time-out: 20000
  table-prefix: 'tbm'

lang/en_US.yml

lang/en_US.yml
# TheBrewingMarket - English Language File (US)
# Supports MiniMessage formatting.
# Use <prefix> to insert the plugin prefix.
# Internal version — do not edit. Bump = new messages were added.
config-version: 3

prefix: '<white>[<gradient:#FCBDE3:#F973C4>BrewingMarket</gradient>]</white>'

# -- Placeholders -----------------------------
# These keys mirror the PlaceholderAPI parameter names — keep them snake_case.
placeholders:
  empty:
    last_sale_recipe_id: 'N/A'
    last_sale_recipe_name: 'N/A'
    last_sale_ago: 'N/A'
    global_top_recipe_id_today: 'N/A'
    global_top_recipe_name_today: 'N/A'
    global_top_player_today: 'N/A'

# -- Commands ---------------------------------
command:
  only-players: '<prefix> <red>This command can only be used by players.</red>'
  no-permission: '<prefix> <white>You don''t have permission to do that.</white>'
  reload-success: '<prefix> <white>Configuration reloaded successfully.</white>'

# -- Market -----------------------------------
market:
  sell-success: '<prefix> <white>You sold <#FCBDE3><sold-amount></#FCBDE3> <sold-type> for <#FCBDE3><money>$</#FCBDE3>!</white>'
  sell-nothing: '<prefix> <white>There are no valid items to sell.</white>'
  sell-error: '<prefix> <white>Transaction failed. Please try again.</white>'
  # Noun used in 'sell-success', chosen by what was sold (or 'mixed' for a mix).
  sell-types:
    brews: 'brews'
    fruits: 'fruits'
    seeds: 'seeds'
    mixed: 'items'
  limit-reached:
    - '<prefix> <white>Daily earnings: <#FCBDE3><earned>$</#FCBDE3>/<#FCBDE3><limit>$</#FCBDE3>.</white>'
    - '<prefix> <white>Remaining today: <#FCBDE3><remaining>$</#FCBDE3>.</white>'

# -- History ----------------------------------
history:
  invalid-time: '<prefix> <red>Invalid time format. Use: 1s, 1m, 1h, 1d, 1w, 1M, 1Y</red>'
  empty: '<prefix> <white><player> has no sell history.</white>'
  display:
    - ''
    - '<gradient:#FCBDE3:#F973C4>◤<st>                 </st></gradient> <white>[</white><gradient:#FCBDE3:#F973C4>BrewingMarket</gradient><white>]</white> <gradient:#F973C4:#FCBDE3><st>                 </st>◥</gradient>'
    - ''
    - '<entries>'
    - ''
    - '<gradient:#FCBDE3:#F973C4>◣<st>                   </st></gradient> <previous-page> <white>| <page>/<max-page> |</white> <next-page> <gradient:#F973C4:#FCBDE3><st>                   </st>◢</gradient>'
    - ''
  entry: '  <gray>•</gray> <player-head> <white><recipe></white> <gray>x<quantity></gray> <white>[</white><#FCBDE3><quality></#FCBDE3><white>]</white> <white>[</white><#FCBDE3><total>$</#FCBDE3><white>]</white>'
  entry-hover: '<white><player></white> <dark_gray>-</dark_gray> <gray><time-ago></gray> <dark_gray>-</dark_gray> <gray><exact-date></gray>'
  navigation:
    previous: '<gradient:#FCBDE3:#F973C4>«</gradient>'
    previous-disabled: '<dark_gray>«</dark_gray>'
    previous-hover: '<gray>Click to go to page <page></gray>'
    next: '<gradient:#FCBDE3:#F973C4>»</gradient>'
    next-disabled: '<dark_gray>»</dark_gray>'
    next-hover: '<gray>Click to go to page <page></gray>'

lang/es_ES.yml

lang/es_ES.yml
# TheBrewingMarket - Archivo de idioma en Español (España)
# Soporta formato MiniMessage.
# Usa <prefix> para insertar el prefijo del plugin.
# Versión interna — no editar. Cambio = nuevos mensajes añadidos.
config-version: 3

prefix: '<white>[<gradient:#FCBDE3:#F973C4>BrewingMarket</gradient>]</white>'

# -- Placeholders -----------------------------
# Estas claves espejan los nombres de los params de PlaceholderAPI — mantenerlas snake_case.
placeholders:
  empty:
    last_sale_recipe_id: 'N/A'
    last_sale_recipe_name: 'N/A'
    last_sale_ago: 'N/A'
    global_top_recipe_id_today: 'N/A'
    global_top_recipe_name_today: 'N/A'
    global_top_player_today: 'N/A'

# -- Comandos ---------------------------------
command:
  only-players: '<prefix> <red>Este comando solo puede ser usado por jugadores.</red>'
  no-permission: '<prefix> <white>No tienes permiso para hacer eso.</white>'
  reload-success: '<prefix> <white>Configuración recargada exitosamente.</white>'

# -- Market -----------------------------------
market:
  sell-success: '<prefix> <white>Vendiste <#FCBDE3><sold-amount></#FCBDE3> <sold-type> por <#FCBDE3><money>$</#FCBDE3>!</white>'
  sell-nothing: '<prefix> <white>No tienes productos válidos para vender.</white>'
  sell-error: '<prefix> <white>La transacción ha fallado. Inténtalo de nuevo.</white>'
  # Sustantivo usado en 'sell-success', según lo vendido (o 'mixed' si es mixto).
  sell-types:
    brews: 'bebidas'
    fruits: 'frutas'
    seeds: 'semillas'
    mixed: 'productos'
  limit-reached:
    - '<prefix> <white>Ganancias del día: <#FCBDE3><earned>$</#FCBDE3>/<#FCBDE3><limit>$</#FCBDE3>.</white>'
    - '<prefix> <white>Disponible hoy: <#FCBDE3><remaining>$</#FCBDE3>.</white>'

# -- Historial --------------------------------
history:
  invalid-time: '<prefix> <red>Formato de tiempo inválido. Usa: 1s, 1m, 1h, 1d, 1w, 1M, 1Y</red>'
  empty: '<prefix> <white><player> no tiene historial de ventas.</white>'
  display:
    - ''
    - '<gradient:#FCBDE3:#F973C4>◤<st>                 </st></gradient> <white>[</white><gradient:#FCBDE3:#F973C4>BrewingMarket</gradient><white>]</white> <gradient:#F973C4:#FCBDE3><st>                 </st>◥</gradient>'
    - ''
    - '<entries>'
    - ''
    - '<gradient:#FCBDE3:#F973C4>◣<st>                   </st></gradient> <previous-page> <white>| <page>/<max-page> |</white> <next-page> <gradient:#F973C4:#FCBDE3><st>                   </st>◢</gradient>'
    - ''
  entry: '  <gray>•</gray> <player-head> <white><recipe></white> <gray>x<quantity></gray> <white>[</white><#FCBDE3><quality></#FCBDE3><white>]</white> <white>[</white><#FCBDE3><total>$</#FCBDE3><white>]</white>'
  entry-hover: '<white><player></white> <dark_gray>-</dark_gray> <gray><time-ago></gray> <dark_gray>-</dark_gray> <gray><exact-date></gray>'
  navigation:
    previous: '<gradient:#FCBDE3:#F973C4>«</gradient>'
    previous-disabled: '<dark_gray>«</dark_gray>'
    previous-hover: '<gray>Clic para ir a la página <page></gray>'
    next: '<gradient:#FCBDE3:#F973C4>»</gradient>'
    next-disabled: '<dark_gray>»</dark_gray>'
    next-hover: '<gray>Clic para ir a la página <page></gray>'