ᴡᴀɴᴛᴇᴅ ʙᴏᴜɴᴛɪᴇꜱ
ᴇᴠᴇʀʏ ʜᴇᴀᴅ ʜᴀꜱ ᴀ ᴘʀɪᴄᴇ
pooled bounties · wanted tiers & auras · fully re-layoutable GUIs · crash-safe escrow
Paper 26.1+ · Vault & PlaceholderAPI optional · SQLite or MySQL · ~100 KB, nothing shaded
WantedBounties turns PvP grudges into server-wide events. Anyone can put money on a player's head, everyone can pile onto the same target, and the pool keeps climbing until a hunter collects — with lightning, a firework, a server-wide sound and a gradient broadcast so nobody misses it.
Built the way you expect a modern plugin to be built: every menu is its own yml, every string lives in a lang file, every message is MiniMessage with hex gradients, and config updates merge new options in without touching your edits.
⚑ ᴘᴏᴏʟᴇᴅ ʙᴏᴜɴᴛɪᴇꜱ
- /bounty set <player> <amount> — money is taken instantly and held in database-backed escrow.
- Bounty pooling — any number of players can add to the same target. Every contributor and amount is tracked; the head is worth the sum.
- Anonymous bounties — add -a and pay a configurable fee to show up as Anonymous everywhere.
- Your rules — min/max amounts, placement tax, placement cooldown, offline targets on/off, self-bounties blocked, exempt permission.
- Shorthand amounts — 2.5k, 1m and friends work everywhere an amount is typed.
- Placement broadcast — gradient-formatted, shows the target's new total, toggleable.
☠ ᴄʟᴀɪᴍɪɴɢ & ᴀɴᴛɪ-ᴀʙᴜꜱᴇ
Kill a bountied player and the full pool is yours, minus an optional claim tax. The server hears about it: lightning at the death spot, a crimson firework, a global sound and titles for both hunter and target — every effect its own toggle.
The rules that keep it fair, all configurable:
- No self-cashing — a hunter can never claim money they contributed. Their share is refunded; they only earn what others put up.
- Pair cooldown — repeat kills on the same target inside the window (default 1 hour) pay nothing and don't broadcast. Survives restarts.
- Fresh-spawn protection — optionally require the target to have been online X minutes since the last claim on them.
- Blocked worlds — no claims in worlds you list.
⚠ ᴡᴀɴᴛᴇᴅ ᴛɪᴇʀꜱ
The bigger the pool, the louder the reputation. Tiers live in tiers.yml — add, remove or rename as many as you want. Each tier has a gradient name, a threshold, an entry broadcast, an optional particle aura that circles the target in-game, and prefix/suffix placeholders for your chat plugin.
ᴍᴀʀᴋᴇᴅ
100+
›
ᴡᴀɴᴛᴇᴅ
1k+
›
ɴᴏᴛᴏʀɪᴏᴜꜱ
10k+ · flame aura
›
ᴋɪʟʟ ᴏɴ ꜱɪɢʜᴛ
50k+ · soul fire aura
▦ ᴛʜᴇ ʙᴏᴜɴᴛʏ ʙᴏᴀʀᴅ
/bounty opens a paginated board of every active bounty as player heads — total, tier, contributor count, time active and online status in the lore.
- Sort buttons — highest bounty, newest, oldest. The active sort glows.
- Search — click the spyglass, type a name in chat, the board filters instantly.
- Detail view — click any head: full contributor list (anonymity respected), dates placed, and an Add to Bounty button with a chat-input prompt.
- Your own head — a corner item shows your current bounty and tier. Sleep well.
★ ʟᴇᴀᴅᴇʀʙᴏᴀʀᴅꜱ & ꜱᴛᴀᴛꜱ
/bounty top opens a three-tab GUI: Top Hunters (most claimed), Top Earners (most money made hunting) and Most Wanted (biggest heads right now — click through to the detail view). /bounty stats prints a gradient stat card: claimed, earned, times bountied, bounties survived.
◈ ᴄʀᴀꜱʜ-ꜱᴀꜰᴇ ᴇꜱᴄʀᴏᴡ
- Money is withdrawn on placement and written to the database before the bounty goes live — payouts and refunds only happen after the escrow rows are deleted. A crash can't duplicate money or make it vanish.
- Expiry — bounties optionally expire after X days (default 7, 0 = never). Contributors are refunded (or the money is kept — your call), including offline players.
- Admin removals refund contributors too (configurable).
✎ ᴄᴏɴꜰɪɢᴜʀᴇ ᴇᴠᴇʀʏᴛʜɪɴɢ
- menus/*.yml — every GUI is its own file: title, rows, filler, and every item's slots, material, name, lore and click behaviour. Move buttons anywhere, delete what you don't want.
- lang.yml — every player-facing string, MiniMessage everywhere, configurable prefix. Set any message to '' to silence it.
- config.yml versioning — updates merge new options into your file without wiping your edits.
- /bounty admin reload — reloads config, lang, tiers and every menu. No restart.
Spoiler: config.yml (excerpt)
Code (Text):
bounty:
min-amount: 100.0
max-amount: 1000000.0
placement-tax-percent: 5.0
placement-cooldown-seconds: 60
allow-offline-targets: true
allow-self-bounty: false
anonymous:
enabled: true
fee-flat: 0.0
fee-percent: 10.0
claiming:
claim-tax-percent: 0.0
refund-own-contribution: true
receive-other-contributions: true
pair-cooldown-seconds: 3600
min-online-minutes: 0
blocked-worlds: []
effects:
lightning: true
firework: true
sound:
enabled: true
key: entity.ender_dragon.growl
titles: true
expiry:
days: 7
refund: true
min-amount: 100.0
max-amount: 1000000.0
placement-tax-percent: 5.0
placement-cooldown-seconds: 60
allow-offline-targets: true
allow-self-bounty: false
anonymous:
enabled: true
fee-flat: 0.0
fee-percent: 10.0
claiming:
claim-tax-percent: 0.0
refund-own-contribution: true
receive-other-contributions: true
pair-cooldown-seconds: 3600
min-online-minutes: 0
blocked-worlds: []
effects:
lightning: true
firework: true
sound:
enabled: true
key: entity.ender_dragon.growl
titles: true
expiry:
days: 7
refund: true
Spoiler: tiers.yml (excerpt)
Code (Text):
tiers:
kill-on-sight:
name: '<b><gradient:#FF1744:#D50000>ᴋɪʟʟ ᴏɴ ꜱɪɢʜᴛ</gradient></b>'
threshold: 50000
broadcast: true
aura:
enabled: true
particle: soul_fire_flame
dust-color: '#D50000'
prefix: '<b><gradient:#FF1744:#D50000>☠</gradient></b> '
suffix: ' <b><gradient:#FF1744:#D50000>☠</gradient></b>'
kill-on-sight:
name: '<b><gradient:#FF1744:#D50000>ᴋɪʟʟ ᴏɴ ꜱɪɢʜᴛ</gradient></b>'
threshold: 50000
broadcast: true
aura:
enabled: true
particle: soul_fire_flame
dust-color: '#D50000'
prefix: '<b><gradient:#FF1744:#D50000>☠</gradient></b> '
suffix: ' <b><gradient:#FF1744:#D50000>☠</gradient></b>'
Spoiler: menus/board.yml (excerpt)
Code (Text):
title: '<b><gradient:#FF1744:#FF9100>ʙᴏᴜɴᴛʏ ʙᴏᴀʀᴅ</gradient></b> <dark_gray>‣ %page%/%pages%</dark_gray>'
rows: 6
content-slots: '10-16,19-25,28-34'
items:
search:
type: SEARCH
slot: 49
material: SPYGLASS
name: '<b><gradient:#FF1744:#FF9100>ꜱᴇᴀʀᴄʜ</gradient></b>'
lore:
- '<gradient:#FF1744:#FF9100>▸</gradient> <gray>Left-click to type a name</gray>'
- '<gradient:#FF1744:#FF9100>▸</gradient> <gray>Right-click to clear</gray>'
rows: 6
content-slots: '10-16,19-25,28-34'
items:
search:
type: SEARCH
slot: 49
material: SPYGLASS
name: '<b><gradient:#FF1744:#FF9100>ꜱᴇᴀʀᴄʜ</gradient></b>'
lore:
- '<gradient:#FF1744:#FF9100>▸</gradient> <gray>Left-click to type a name</gray>'
- '<gradient:#FF1744:#FF9100>▸</gradient> <gray>Right-click to clear</gray>'
▸ ᴄᴏᴍᴍᴀɴᴅꜱ & ᴘᴇʀᴍɪꜱꜱɪᴏɴꜱ
Code (Text):
/bounty open the bounty board
/bounty set <player> <amount> [-a] place a bounty (-a = anonymous)
/bounty check [player] inspect a bounty
/bounty top leaderboards GUI
/bounty stats [player] hunting record
/bounty admin set <player> <amt> server-funded bounty
/bounty admin remove <player> remove a bounty (refunds contributors)
/bounty admin clearall remove every bounty
/bounty admin reload reload configs, lang, tiers & menus
aliases: /bounties, /wb · full tab completion on everything
/bounty set <player> <amount> [-a] place a bounty (-a = anonymous)
/bounty check [player] inspect a bounty
/bounty top leaderboards GUI
/bounty stats [player] hunting record
/bounty admin set <player> <amt> server-funded bounty
/bounty admin remove <player> remove a bounty (refunds contributors)
/bounty admin clearall remove every bounty
/bounty admin reload reload configs, lang, tiers & menus
aliases: /bounties, /wb · full tab completion on everything
Code (Text):
wantedbounties.use base access + board (default: true)
wantedbounties.set place bounties (default: true)
wantedbounties.anonymous anonymous bounties (default: true)
wantedbounties.top leaderboards (default: true)
wantedbounties.admin admin commands (default: op)
wantedbounties.exempt cannot be targeted (default: false)
wantedbounties.set place bounties (default: true)
wantedbounties.anonymous anonymous bounties (default: true)
wantedbounties.top leaderboards (default: true)
wantedbounties.admin admin commands (default: op)
wantedbounties.exempt cannot be targeted (default: false)
Code (Text):
%wb_bounty% your bounty (formatted) %wb_bounty_raw%
%wb_tier% your tier name %wb_tier_prefix% / %wb_tier_suffix%
%wb_claimed% bounties claimed %wb_bountied%
%wb_earned% money earned (formatted) %wb_survived%
%wb_top_wanted_1_name% ... %wb_top_wanted_10_amount%
%wb_top_claimed_1_name% ... %wb_top_claimed_10_amount%
%wb_top_earned_1_name% ... %wb_top_earned_10_amount%
%wb_tier% your tier name %wb_tier_prefix% / %wb_tier_suffix%
%wb_claimed% bounties claimed %wb_bountied%
%wb_earned% money earned (formatted) %wb_survived%
%wb_top_wanted_1_name% ... %wb_top_wanted_10_amount%
%wb_top_claimed_1_name% ... %wb_top_claimed_10_amount%
%wb_top_earned_1_name% ... %wb_top_earned_10_amount%
⚙ ɢᴇᴛᴛɪɴɢ ꜱᴛᴀʀᴛᴇᴅ
- Drop WantedBounties-1.0.jar into your plugins folder and restart.
- Want money bounties? Have Vault + any economy installed. The plugin runs without them — money features just disable.
- Tune config.yml, tiers.yml, lang.yml and menus/*.yml, then /bounty admin reload.
Spoiler: FAQ
Does it require Vault or PlaceholderAPI?
No — both are soft dependencies. Without Vault, the plugin loads fine and money bounties disable themselves. Without PAPI, everything works except the %wb_...% placeholders.
SQLite or MySQL?
SQLite works with zero setup. For networks, set database.type to mysql and fill in your credentials — same tables, same behaviour.
Can hunters farm one player for infinite money?
No. Each hunter has a per-target claim cooldown (default 1 hour) that persists through restarts, hunters can never claim their own contributions, and you can require targets to be online X minutes between claims.
What happens to the money if a bounty expires or is removed?
Contributors are refunded by default — online or offline. You can configure expiry to keep the money instead.
Can I completely redesign the GUIs?
Yes. Every menu is a yml file — slots, materials, names, lore, filler, even which buttons exist.
NMS? External libraries?
Neither. Pure Paper API + Adventure, nothing shaded — the jar is about 100 KB.
No — both are soft dependencies. Without Vault, the plugin loads fine and money bounties disable themselves. Without PAPI, everything works except the %wb_...% placeholders.
SQLite or MySQL?
SQLite works with zero setup. For networks, set database.type to mysql and fill in your credentials — same tables, same behaviour.
Can hunters farm one player for infinite money?
No. Each hunter has a per-target claim cooldown (default 1 hour) that persists through restarts, hunters can never claim their own contributions, and you can require targets to be online X minutes between claims.
What happens to the money if a bounty expires or is removed?
Contributors are refunded by default — online or offline. You can configure expiry to keep the money instead.
Can I completely redesign the GUIs?
Yes. Every menu is a yml file — slots, materials, names, lore, filler, even which buttons exist.
NMS? External libraries?
Neither. Pure Paper API + Adventure, nothing shaded — the jar is about 100 KB.
ɴᴇᴇᴅꜱ ᴘᴀᴘᴇʀ 26.1+ ᴀɴᴅ ᴊᴀᴠᴀ 25 · ᴏᴘᴛɪᴏɴᴀʟ: ᴠᴀᴜʟᴛ, ᴘʟᴀᴄᴇʜᴏʟᴅᴇʀᴀᴘɪ
ᴘᴜᴛ ᴀ ᴘʀɪᴄᴇ ᴏɴ ᴛʜᴇɪʀ ʜᴇᴀᴅ.
ᴘᴜᴛ ᴀ ᴘʀɪᴄᴇ ᴏɴ ᴛʜᴇɪʀ ʜᴇᴀᴅ.
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft version listed: 26.1
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
WantedBounties is a free Minecraft Java mod. Compatible with Minecraft 26.1. Downloaded 11 times (via Spigot). Download it and open it directly in the game.