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)
#
# -- Data Components --------------------------
# Icons support the following Minecraft data components:
#   custom_name       - Item name (MiniMessage)
#   lore              - List of lines (MiniMessage)
#   profile           - Head texture (textures: 'base64...')
#   enchantments      - Enchantment:level map
#   custom_model_data - floats, flags, strings, colors
#   item_model        - Model resource location
#   potion_contents   - Potion type, color, effects
#   tooltip_display   - Hide tooltip or components
#   tooltip_style     - Custom tooltip style

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

# 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

  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

  # -- 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]
  prices:
    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]

  # -- 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'
      potion_contents:
        custom_color: 16679863
      tooltip_display:
        hidden_components:
          - 'potion_contents'
      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>'
        - ''
      action:
        sound:
          type: 'sound'
          value: 'minecraft:block.amethyst_block.place'
    deny-icon:
      material: 'GLASS_BOTTLE'
      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'
      potion_contents:
        custom_color: 16679863
      enchantment_glint_override: true
      tooltip_display:
        hidden_components:
          - 'potion_contents'
      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>'
        - ''
      action:
        sound:
          type: 'sound'
          value: 'minecraft:block.amethyst_block.place'
    deny-icon:
      material: 'GLASS_BOTTLE'
      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'
    profile:
      textures: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTg4NzZjZTFiY2VjMmI5MjI0ZjRkNjhlZTA0ZjdjNjNiZjM1NGJhOTY2ZmE2YTVjYjg4ZDFiNWMwNTA0ZGRjMyJ9fX0='
    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> '
      - ''

  # -- Close Button ---------------------------
  close-icon:
    symbol: 'C'
    material: 'PLAYER_HEAD'
    profile:
      textures: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTg4NzZjZTFiY2VjMmI5MjI0ZjRkNjhlZTA0ZjdjNjNiZjM1NGJhOTY2ZmE2YTVjYjg4ZDFiNWMwNTA0ZGRjMyJ9fX0='
    custom_name: '<gradient:#FCBDE3:#F973C4><b>Close</b></gradient>'

  # -- Decorative Icons -----------------------
  decorative-icons:
    pink-glass:
      symbol: 'J'
      material: 'PINK_STAINED_GLASS_PANE'
      tooltip_display:
        hide_tooltip: true
    brain-coral:
      symbol: 'K'
      material: 'BRAIN_CORAL'
      tooltip_display:
        hide_tooltip: true
    brain-coral-fan:
      symbol: 'L'
      material: 'BRAIN_CORAL_FAN'
      tooltip_display:
        hide_tooltip: true

database.yml

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

# local database
#   SQLite

# remote database
#   MySQL
#   MariaDB (preferred over MySQL)
#
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: 2

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

# -- Placeholders -----------------------------
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> brews for <#FCBDE3>{money}</#FCBDE3>!</white>'
  sell-nothing: '{prefix} <white>There are no valid brews to sell.</white>'
  sell-error: '{prefix} <white>Transaction failed. Please try again.</white>'
  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: 2

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

# -- Placeholders -----------------------------
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> bebidas por <#FCBDE3>{money}</#FCBDE3>!</white>'
  sell-nothing: '{prefix} <white>No tienes bebidas para vender.</white>'
  sell-error: '{prefix} <white>La transacción ha fallado. Inténtalo de nuevo.</white>'
  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>'