Configuration
On this page(3)
SnPlayerBounty ships with the following YAML files. New keys are auto-merged on boot; your edits and comments are preserved.
config.yml
# ============================================================
# SnPlayerBounty - configuration
# Managed by SnLib: new keys are auto-merged on boot; your values and
# comments are preserved. Do NOT add a config-version key (retired).
# Set update-configs: false to freeze this file (SnLib only warns about
# missing keys instead of inserting them).
# Sections marked "# sn:extensible" are yours: entries you delete there
# stay deleted.
# ============================================================
# Active language code; loads lang/messages_<code>.yml (falls back to en).
lang: en
# Master switch of the SnLib auto-updater for this plugin's managed files.
update-configs: true
# Runtime debug output (also toggleable live via /bounty debug).
debug:
# Master toggle of the debug output.
enabled: false
# Verbosity threshold: OFF, INFO, DEBUG or TRACE.
level: DEBUG
# Category filter; an empty list lets every category through.
categories: []
# ------------------------------------------------------------
# Main command.
# ------------------------------------------------------------
command:
# Aliases of /bounty. Re-read on /bounty reload.
aliases: [bounties, bountys]
# ------------------------------------------------------------
# Database. type=sqlite needs nothing else; type=mysql reads host/port/etc.
# ------------------------------------------------------------
database:
# sqlite or mysql
type: sqlite
# MySQL connection (ignored when type is sqlite).
host: localhost
port: 3306
database: snplayerbounty
username: root
password: ""
# ------------------------------------------------------------
# Presentation. gui opens the menu; chat prints the text view.
# ------------------------------------------------------------
presentation:
# Bare /bounty: gui opens the most-wanted menu, chat prints the generated help.
main: gui
# /bounty top: gui opens the tops menu, chat prints the rankings.
top: gui
# ------------------------------------------------------------
# Currencies. One entry per currency id; a bounty is paid in one of them.
# vault uses the Vault economy. snelementalgems and placeholder read a
# balance and move it with console commands ({player} and {amount} are
# required in each). An entry that cannot work is skipped with a warning.
# ------------------------------------------------------------
# sn:extensible
currencies:
money:
# vault, snelementalgems or placeholder.
type: vault
# false skips this currency.
enabled: true
# Name of the currency in messages and menus.
display-name: "&aMoney"
# How an amount is shown. {amount} is the formatted number, {name} the display-name.
format: "&a${amount}"
# Decimal places amounts are rounded to (HALF_UP).
decimals: 2
# Smallest bounty a player can place in this currency.
min-place: 100
# Largest bounty a player can place in this currency; 0 means no cap.
max-place: 0
# Percent of a placed bounty the server keeps; the target receives the rest.
tax-percent: 0
gems:
# Needs the SnElementalGems plugin.
type: snelementalgems
enabled: true
display-name: "fd1ffGems"
format: "fd1ff{amount} Gems"
decimals: 0
min-place: 1
max-place: 0
tax-percent: 0
# Console command that adds {amount} to {player}.
give-command: "gems admin add {player} {amount} -s"
# Console command that removes {amount} from {player}.
take-command: "gems admin remove {player} {amount} -s"
# Ticks after a command at which the balance is re-read to confirm it.
verify-ticks: [4, 16]
tokens:
# Needs PlaceholderAPI. Example of a currency backed by any placeholder.
type: placeholder
enabled: false
display-name: "&eTokens"
format: "&e{amount} Tokens"
# Placeholder that returns the player's balance as a number.
balance-placeholder: "%example_tokens%"
give-command: "tokens give {player} {amount}"
take-command: "tokens take {player} {amount}"
decimals: 0
min-place: 1
max-place: 0
tax-percent: 0
verify-ticks: [4, 16]
# Currency that orders the most-wanted menu and every top.
ranking-currency: money
# Currency used by /bounty set and /bounty add when none is typed.
default-currency: money
# ------------------------------------------------------------
# Rules. Placing bounties, kill streaks, claiming and admin clears.
# ------------------------------------------------------------
placing:
# Time a player waits between placed bounties (30s, 5m, 1h); bypass snplayerbounty.bypass.cooldown.
cooldown: 30s
# Tell the target when someone places a bounty on them.
notify-target: true
kill-streak:
# Master switch of the kill-streak bounty growth.
enabled: true
# Streak count from which every valid kill adds the per-kill reward.
start-at: 3
# Currency id -> amount the server adds to the killer's bounty on each kill from start-at on.
# sn:extensible
per-kill:
money: 100
# When true, any death that is not a counted player kill (mob, environment, or a player kill
# that anti-abuse rejected) resets the streak counter; the bounty itself is kept. A counted
# player kill always resets the victim's streak.
reset-on-any-death: true
# Leaving the server resets the streak counter.
reset-on-quit: false
# Extra bounty at exact streak counts. Key = streak count, rewards = currency id -> amount,
# broadcast = announce the milestone to the server.
# sn:extensible
milestones:
"5":
rewards: {money: 500}
broadcast: true
"10":
rewards: {money: 1500}
broadcast: true
claim:
# Allow a player who funded a bounty to claim it by killing the target.
allow-sponsor-claim: false
admin-clear:
# Give each player sponsor their share back when /bounty clear removes a bounty.
refund-sponsors: true
# ------------------------------------------------------------
# Anti-abuse. A blocked kill counts for neither streak nor claim.
# ------------------------------------------------------------
anti-abuse:
# Block kills between players sharing an IP; bypass snplayerbounty.bypass.same-ip.
block-same-ip: true
# Time before the same killer's kill on the same victim counts again.
victim-cooldown: 10m
# Worlds where kills never count.
disabled-worlds: []
# ------------------------------------------------------------
# Placeholders. What PlaceholderAPI shows for an empty position.
# ------------------------------------------------------------
placeholders:
# Name shown for a top position nobody holds.
empty-name: "---"
# Value shown for a top position nobody holds.
empty-value: "0"
# ------------------------------------------------------------
# Feedback. Announcements, join notices and rankings.
# ------------------------------------------------------------
broadcasts:
# Announce a placed bounty from this amount of the ranking currency; 0 announces all, -1 none.
placed-threshold: 10000
# Announce a claimed bounty from this amount of the ranking currency; 0 announces all, -1 none.
claimed-threshold: 0
# Tell a player on join when a bounty is on their head.
join-notify: true
leaderboards:
# Seconds between refreshes of the hunters, streak and sponsors tops.
refresh-seconds: 60
# Positions kept per top.
size: 10guis/main.yml
# ============================================================
# SnPlayerBounty - most wanted menu (/bounty)
# Managed by SnLib: new keys merge in on boot, your values are kept.
# The `wanted` template is the only element the plugin fills (one head per
# wanted player, richest first). Every other item is static and reads the
# %snplayerbounty_*% placeholders, so it needs PlaceholderAPI.
# ============================================================
title: "₢f2&lMost Wanted"
# Only plain left, right and shift clicks run the buttons.
strict-clicks: true
# The wanted heads are paged over the p cells.
pagination: true
paged-key: p
# i info, p wanted heads, < > pages, m your bounty, x close, t tops, f filler.
layout:
- "ffffiffff"
- "fpppppppf"
- "fpppppppf"
- "fpppppppf"
- "fpppppppf"
- "<ffmxtff>"
# sn:extensible
items:
filler:
material: GRAY_STAINED_GLASS_PANE
display-name: " "
key: f
info:
material: BOOK
display-name: "₢f2&lBounties"
lore:
- "&7Players with a bounty on their head,"
- "&7the biggest first."
- ""
- "&7Kill a wanted player to claim their"
- "&7whole bounty, in every currency."
- ""
- "₢f2/bounty set &7<player> <amount> [currency]"
- "&7Place a bounty on a player."
- ""
- "&7Wanted players: &f%snplayerbounty_total_wanted%"
key: i
# Your bounty is two variants of the m cell; the first one whose view-requirements
# pass is shown. wanted_rank is above 0 for a player with a bounty in ANY currency.
# To list another currency, add a line with %snplayerbounty_bounty_<currency>_formatted%.
my-bounty-wanted:
material: SKELETON_SKULL
display-name: "&c&lYou are wanted"
lore:
- ""
- "&7Bounty on your head: &f%snplayerbounty_bounty_formatted%"
- "&7Wanted rank: &f#%snplayerbounty_wanted_rank%"
- "&7Sponsors: &f%snplayerbounty_sponsors_count%"
- "&7Kill streak: &f%snplayerbounty_streak%"
key: m
view-requirements:
- "%snplayerbounty_wanted_rank% > 0"
my-bounty-clean:
material: SHIELD
display-name: "&a&lYou are clean"
lore:
- ""
- "&7Nobody has a bounty on your head."
- "&7Kill streak: &f%snplayerbounty_streak%"
- "&7Best streak: &f%snplayerbounty_best_streak%"
key: m
view-requirements:
- "%snplayerbounty_wanted_rank% == 0"
tops:
material: GOLD_INGOT
display-name: "₢f2&lTop Bounties"
lore:
- "&7Most wanted, top hunters, kill"
- "&7streaks and top sponsors."
- ""
- "₢f2Click to open"
key: t
click-actions:
- "[sound] UI_BUTTON_CLICK"
- "[open] top"
close:
material: BARRIER
display-name: "&cClose"
key: x
click-actions:
- "[sound] UI_BUTTON_CLICK"
- "[close]"
previous-page:
material: ARROW
display-name: "₢f2Previous Page"
key: "<"
click-actions:
- "[previous-page]"
- "[sound] UI_BUTTON_CLICK"
nav-disabled:
material: GRAY_STAINED_GLASS_PANE
display-name: "&7No previous page"
lore:
- "&8You are on the first page"
next-page:
material: ARROW
display-name: "₢f2Next Page"
key: ">"
click-actions:
- "[next-page]"
- "[sound] UI_BUTTON_CLICK"
nav-disabled:
material: GRAY_STAINED_GLASS_PANE
display-name: "&7No next page"
lore:
- "&8You are on the last page"
# The plugin binds this template once per wanted player. Placeholders it fills:
# {name} {uuid} {rank} (position in the list) {streak} (kill streak while the
# player is online, 0 otherwise) {main_amount} (bounty in the ranking currency)
# {amount_<currency>} (bounty in each configured currency, e.g. {amount_money})
# {rewards_lines} (one line per currency that holds an amount, each shaped by
# messages.format.reward-line in the lang file).
templates:
wanted:
material: PLAYER_HEAD
skull-owner: "{uuid}"
display-name: "₢f2&l#{rank} &f{name}"
lore:
- ""
- "&7Bounty:"
- "{rewards_lines}"
- ""
- "&7Kill streak: &f{streak}"guis/top.yml
# ============================================================
# SnPlayerBounty - tops menu (/bounty top)
# Managed by SnLib: new keys merge in on boot, your values are kept.
# Every item here is static: a head reads %snplayerbounty_top_<board>_<n>_*%
# (board = wanted, hunters, streak or sponsors; n = position from 1), so this
# menu needs PlaceholderAPI. An empty position shows the placeholders.empty-name
# and placeholders.empty-value of config.yml, with a default head.
# ============================================================
title: "₢f2&lTop Bounties"
# Only plain left, right and shift clicks run the buttons.
strict-clicks: true
# Repaint interval in ticks; keeps the positions live.
update-interval: 100
# W wanted, H hunters, S streak, P sponsors (each board icon is mirrored on both
# sides of its row); a-e, g-k, l-p and q-u are the heads of positions 1 to 5 of
# those boards; x back, f filler.
layout:
- "fffffffff"
- "fWabcdeWf"
- "fHghijkHf"
- "fSlmnopSf"
- "fPqrstuPf"
- "ffffxffff"
# sn:extensible
items:
filler:
material: GRAY_STAINED_GLASS_PANE
display-name: " "
key: f
back:
material: ARROW
display-name: "₢f2Back"
lore:
- "&7Return to the most wanted menu."
key: x
click-actions:
- "[sound] UI_BUTTON_CLICK"
- "[bounty-main]"
board-wanted:
material: SKELETON_SKULL
display-name: "₢f2&lMost Wanted"
lore:
- "&7Players with the biggest bounty"
- "&7on their head right now."
key: W
board-hunters:
material: DIAMOND_SWORD
display-name: "₢f2&lTop Hunters"
lore:
- "&7Players who collected the most"
- "&7bounty money, all time."
key: H
board-streak:
material: BLAZE_POWDER
display-name: "₢f2&lKill Streaks"
lore:
- "&7Players on the longest"
- "&7current kill streak."
key: S
board-sponsors:
material: EMERALD
display-name: "₢f2&lTop Sponsors"
lore:
- "&7Players who placed the most"
- "&7bounty money, all time."
key: P
wanted-1:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_wanted_1_uuid%'
display-name: "₢f2&l#1 &f%snplayerbounty_top_wanted_1_name%"
lore:
- "&7Bounty: &f%snplayerbounty_top_wanted_1_value_formatted%"
key: a
wanted-2:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_wanted_2_uuid%'
display-name: "₢f2&l#2 &f%snplayerbounty_top_wanted_2_name%"
lore:
- "&7Bounty: &f%snplayerbounty_top_wanted_2_value_formatted%"
key: b
wanted-3:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_wanted_3_uuid%'
display-name: "₢f2&l#3 &f%snplayerbounty_top_wanted_3_name%"
lore:
- "&7Bounty: &f%snplayerbounty_top_wanted_3_value_formatted%"
key: c
wanted-4:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_wanted_4_uuid%'
display-name: "₢f2&l#4 &f%snplayerbounty_top_wanted_4_name%"
lore:
- "&7Bounty: &f%snplayerbounty_top_wanted_4_value_formatted%"
key: d
wanted-5:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_wanted_5_uuid%'
display-name: "₢f2&l#5 &f%snplayerbounty_top_wanted_5_name%"
lore:
- "&7Bounty: &f%snplayerbounty_top_wanted_5_value_formatted%"
key: e
hunters-1:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_hunters_1_uuid%'
display-name: "₢f2&l#1 &f%snplayerbounty_top_hunters_1_name%"
lore:
- "&7Collected: &f%snplayerbounty_top_hunters_1_value_formatted%"
key: g
hunters-2:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_hunters_2_uuid%'
display-name: "₢f2&l#2 &f%snplayerbounty_top_hunters_2_name%"
lore:
- "&7Collected: &f%snplayerbounty_top_hunters_2_value_formatted%"
key: h
hunters-3:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_hunters_3_uuid%'
display-name: "₢f2&l#3 &f%snplayerbounty_top_hunters_3_name%"
lore:
- "&7Collected: &f%snplayerbounty_top_hunters_3_value_formatted%"
key: i
hunters-4:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_hunters_4_uuid%'
display-name: "₢f2&l#4 &f%snplayerbounty_top_hunters_4_name%"
lore:
- "&7Collected: &f%snplayerbounty_top_hunters_4_value_formatted%"
key: j
hunters-5:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_hunters_5_uuid%'
display-name: "₢f2&l#5 &f%snplayerbounty_top_hunters_5_name%"
lore:
- "&7Collected: &f%snplayerbounty_top_hunters_5_value_formatted%"
key: k
streak-1:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_streak_1_uuid%'
display-name: "₢f2&l#1 &f%snplayerbounty_top_streak_1_name%"
lore:
- "&7Streak: &f%snplayerbounty_top_streak_1_value_formatted%"
key: l
streak-2:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_streak_2_uuid%'
display-name: "₢f2&l#2 &f%snplayerbounty_top_streak_2_name%"
lore:
- "&7Streak: &f%snplayerbounty_top_streak_2_value_formatted%"
key: m
streak-3:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_streak_3_uuid%'
display-name: "₢f2&l#3 &f%snplayerbounty_top_streak_3_name%"
lore:
- "&7Streak: &f%snplayerbounty_top_streak_3_value_formatted%"
key: n
streak-4:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_streak_4_uuid%'
display-name: "₢f2&l#4 &f%snplayerbounty_top_streak_4_name%"
lore:
- "&7Streak: &f%snplayerbounty_top_streak_4_value_formatted%"
key: o
streak-5:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_streak_5_uuid%'
display-name: "₢f2&l#5 &f%snplayerbounty_top_streak_5_name%"
lore:
- "&7Streak: &f%snplayerbounty_top_streak_5_value_formatted%"
key: p
sponsors-1:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_sponsors_1_uuid%'
display-name: "₢f2&l#1 &f%snplayerbounty_top_sponsors_1_name%"
lore:
- "&7Placed: &f%snplayerbounty_top_sponsors_1_value_formatted%"
key: q
sponsors-2:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_sponsors_2_uuid%'
display-name: "₢f2&l#2 &f%snplayerbounty_top_sponsors_2_name%"
lore:
- "&7Placed: &f%snplayerbounty_top_sponsors_2_value_formatted%"
key: r
sponsors-3:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_sponsors_3_uuid%'
display-name: "₢f2&l#3 &f%snplayerbounty_top_sponsors_3_name%"
lore:
- "&7Placed: &f%snplayerbounty_top_sponsors_3_value_formatted%"
key: s
sponsors-4:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_sponsors_4_uuid%'
display-name: "₢f2&l#4 &f%snplayerbounty_top_sponsors_4_name%"
lore:
- "&7Placed: &f%snplayerbounty_top_sponsors_4_value_formatted%"
key: t
sponsors-5:
material: PLAYER_HEAD
skull-owner: '%snplayerbounty_top_sponsors_5_uuid%'
display-name: "₢f2&l#5 &f%snplayerbounty_top_sponsors_5_name%"
lore:
- "&7Placed: &f%snplayerbounty_top_sponsors_5_value_formatted%"
key: uAn existing install keeps the old Back button line of guis/top.yml. Change [open] main to [bounty-main] (or delete the file) and run /bounty reload.
Every message, list line and state word is in lang/messages_en.yml.