Configuration

Everything is in plugins/Bounties/config.yml. Colors use &a, &l and &#RRGGBB, and PlaceholderAPI placeholders work in messages sent to a player.

Main sections

SectionPurpose
license-keyYour Bounties license key.
bountyMinimum and maximum, fee, compact numbers and the self-bounty, self-claim and same-IP rules.
broadcastTell the whole server when a bounty is added or claimed (both off by default).
storageSQLite (default) or MySQL, and how often MySQL is synced. Needs a full restart.
menusThe bounty menu and the confirm menu. See Bounty menu.
searchTitle, label and buttons of the search box.
soundsSounds for every button and for claiming.
message-displayWhere each message appears: chat, action bar or both.
messagesEvery chat message.

Apply changes with /bounty reload. If the file has a YAML mistake, the console shows where it is: fix it and reload again.

Bounty settings

Key (bounty)DefaultMeaning
minimum100Smallest amount a player can add in one go.
maximum0Highest total bounty one player can have. 0 = no limit.
tax-percent0Fee in percent, paid on top of the bounty (0-100).
compact-numberstrueShow 1.5K, 2M and 14B instead of 1,500, 2,000,000 and 14,000,000,000.
allow-self-bountytrueAllow players to put a bounty on themselves.
allow-self-claimtrueAllow players to claim their own bounty.
block-same-ip-claimfalseNo payout when killer and victim share an IP address.

Storage

Key (storage)Meaning
typesqlite (a file in the plugin folder) or mysql to share bounties between servers.
mysql.*Host, port, database, username, password, SSL and connection pool size.
sync-secondsHow often each server loads bounties again from MySQL (at least 5, default 30).

Messages

Every message is under messages. prefix is added in front of every chat message. Set a message to "" to turn it off. Placeholders in braces depend on the message: {player}, {setter}, {killer}, {amount}, {cost}, {total}, {minimum} and {maximum}.

message-display chooses where a message appears: chat, action-bar or both. Messages that aren’t listed go to chat. The default shows bounty-added in both.

yaml
message-display:
  bounty-added: both
  bounty-claimed: action-bar

Default config

yaml
# Paste your license key below, then restart the server.
# No key yet? Join my Discord: https://discord.gg/nRjDw9k2vJ
license-key: "AP-XXXX-XXXX-XXXX-XXXX"

# Color formats: &a, &l, ... and &#RRGGBB
# PlaceholderAPI placeholders work in every message.

bounty:
  # Smallest amount a player can add in one go.
  minimum: 100
  # Highest total bounty one player can have. 0 = no limit.
  maximum: 0
  # Extra fee in percent, paid by the player on top of the bounty. 0 = no fee.
  tax-percent: 0
  # Show amounts as 1.5K, 2M, 14B instead of 1,500 / 2,000,000.
  compact-numbers: true
  # Allow players to put a bounty on themselves.
  allow-self-bounty: true
  # Allow players to claim their own bounty (for example by killing themselves with their own arrow).
  allow-self-claim: true
  # Stop players from claiming a bounty from someone who is connected from the same IP address.
  block-same-ip-claim: false

broadcast:
  # Tell the whole server when someone adds to a bounty.
  bounty-added: false
  # Tell the whole server when a bounty is claimed.
  bounty-claimed: false

storage:
  # sqlite or mysql. Use mysql to share bounties between servers.
  # Changing the storage needs a server restart.
  type: sqlite
  mysql:
    host: "localhost"
    port: 3306
    database: "bounties"
    username: "root"
    password: ""
    use-ssl: false
    pool-size: 4
  # How often (in seconds) bounties are loaded again from MySQL, so every server shows the same list.
  sync-seconds: 30

menus:
  bounties:
    title: "Bounties (Page {page})"
    rows: 6
    # Slots used for player heads.
    head-slots: "0-44"
    # {player} and {amount}
    head:
      name: "&a{player}"
      lore:
        - "&fBounty: ${amount}"
    # {sort} is the current sort order.
    sort-names:
      amount: "Amount"
      recent: "Recently Set"
    items:
      previous-page:
        slot: 45
        material: ARROW
        name: "&fPrevious Page"
        lore:
          - "&fClick to view previous page"
      sort:
        slot: 48
        material: HOPPER
        name: "&fSort"
        lore:
          - "&fClick to sort ({sort})"
      refresh:
        slot: 49
        material: SKELETON_SKULL
        name: "&fBounties"
        lore:
          - "&fClick to refresh"
          - ""
          - "&7Set a bounty using this:"
          - "&7/bounty add (player) (amount)"
      search:
        slot: 50
        material: OAK_SIGN
        name: "&fꜱᴇᴀʀᴄʜ"
        lore:
          - "&fClick to search"
      next-page:
        slot: 53
        material: ARROW
        name: "&fNext page"
        lore:
          - "&fClick to view next page"

  confirm:
    title: "Confirm Bounty"
    rows: 3
    # {player}, {amount}, {cost} (amount + fee) and {tax}
    items:
      cancel:
        slot: 11
        material: RED_STAINED_GLASS_PANE
        name: "&fCancel"
        lore:
          - "&fClick to cancel"
      player-head:
        slot: 13
        name: "&f{player}"
        lore:
          - "&fYou're going to set &a${amount}"
      confirm:
        slot: 15
        material: LIME_STAINED_GLASS_PANE
        name: "&fConfirm"
        lore:
          - "&fClick to add bounty"
          - "&7(${cost})"

search:
  title: "Search Bounties"
  label: "Search"
  cancel-button: "&cCancel"
  search-button: "&aSearch"

# Sound names like ENTITY_PLAYER_LEVELUP or keys like entity.player.levelup.
# Every entry can be one sound or a list of sounds that play at the same time.
sounds:
  page-turn:
    sound: "item.book.page_turn"
    volume: 1.0
    pitch: 1.0
  sort:
    - sound: "ui.loom.take_result"
      volume: 1.0
      pitch: 1.0
    - sound: "ui.button.click"
      volume: 1.0
      pitch: 1.0
  refresh:
    sound: "ui.toast.in"
    volume: 1.0
    pitch: 1.0
  search:
    sound: ""
    volume: 1.0
    pitch: 1.0
  head-click:
    sound: "entity.item_frame.add_item"
    volume: 0.85
    pitch: 1.0
  confirm:
    sound: "entity.experience_orb.pickup"
    volume: 1.0
    pitch: 1.0
  cancel:
    sound: "block.note_block.bass"
    volume: 1.0
    pitch: 1.0
  bounty-claimed:
    sound: "entity.player.levelup"
    volume: 1.0
    pitch: 1.0

# Where each message is shown: chat, action-bar or both. Messages not listed here go to chat.
message-display:
  bounty-added: both

messages:
  prefix: ""
  usage: "&fUsage: &7/bounty &for &7/bounty add <player> <amount>"
  usage-add: "&fUsage: &7/bounty add <player> <amount>"
  usage-remove: "&fUsage: &7/bounty remove <player>"
  usage-set: "&fUsage: &7/bounty set <player> <amount>"
  no-permission: "&fYou don't have permission to do that."
  player-only: "&fThis command can only be used by players."
  player-not-found: "&fPlayer &7{player} &fhas never joined this server."
  invalid-amount: "&7{amount} &fis not a valid amount."
  below-minimum: "&fThe minimum bounty is &a$&f{minimum}."
  above-maximum: "&fA bounty can't be higher than &a$&f{maximum}."
  not-enough-money: "&fYou need &a$&f{amount} to do that."
  self-bounty-disabled: "&fYou can't put a bounty on yourself."
  economy-missing: "&fBounties are not available right now."
  error: "&fSomething went wrong. Please try again."
  refunded: "&fSomething went wrong, so your money was returned."
  # {player}, {setter}, {amount}, {cost} and {total}
  bounty-added: "&fYou added &a$ &f{amount} to {player}'s bounty"
  broadcast-added: "&7{setter} &fadded &a$&f{amount} to &7{player}&f's bounty. Total: &a$&f{total}"
  # {player} (the killed player), {killer} and {amount}
  bounty-claimed: "&fYou claimed &a$&f{amount} from {player}'s bounty"
  bounty-lost: "&7{killer} &fclaimed your bounty of &a$&f{amount}"
  broadcast-claimed: "&7{killer} &fclaimed &a$&f{amount} from &7{player}&f's bounty"
  claim-same-ip: "&fYou can't claim bounties from players on the same network as you."
  no-bounty: "&7{player} &fhas no bounty."
  bounty-removed: "&fRemoved &7{player}&f's bounty of &a$&f{amount}."
  bounty-set: "&fSet &7{player}&f's bounty to &a$&f{amount}."
  reloaded: "&fBounties configuration reloaded."
  reload-failed: "&fCould not reload the configuration: &7{error}"