Bounty Board
Rotating shared contracts that pay Bounty Tokens plus skill XP
Overview
Bounty boards are placeable poster blocks that offer a rotating set of contracts - short jobs that pay Bounty Tokens plus skill XP. Every player on the server sees the same board each rotation, accepts the contracts they like, and finishes the task anywhere in the world. Finishing a contract does not hand out the reward on the spot: it parks the bounty as ready to claim, and you collect the reward with a Claim button back at the board. Don't like a contract? Reroll just that one for a few tokens while the rest of the board stays put.
The board engine ships inside the plugin jar. The board content - the contracts, the Bounty Token currency, the board schedules, and the in-world board blocks - ships in the free, standalone MMO Skill Bounty Pack. Without that pack the feature is dormant: no boards, no contracts, nothing to place. Install both and bounties appear.
mods/mmoskilltree/bounty-board.jsonHolds the admin on/off switch. Boards and contracts are pack-asset content, not part of this file.
Server/MMOSkillTree/BountyBoards/*.jsonBountyBoards/Each file is one board schedule (rotation, selection, slots, reroll cost, combat-level gates). A bounty itself is a repeatable Quest tagged into a board's pool.
Contract Types
Contracts come in a few shapes. Each one renders a localized task line with the count spelled out ("Defeat 12 Zombies"), so the board reads the same in every supported language.
| Type | Task |
|---|---|
| Kill | Defeat a number of a creature - desert scorpions, cave raptors, swamp crocodiles, and on the weekly board, marquee boss hunts. |
| Gather | Break a number of blocks, or mine ore. Some mining contracts end by delivering a share of what you dug. |
| Train a skill | Earn a chunk of XP in a skill. These are the everyday jobs - steady skill XP for quick work. |
| Delivery | Hand in gathered materials (Life Essence, ore) at the board itself using a Turn In button. |
Every contract pays its reward as a Bounty Token amount plus a flat skill-XP grant, and the board's reward list shows both with their icons. Spend the tokens you earn at the Token Shop - see Currencies for how Bounty Tokens are tracked.
Boards and Rotation
A board declares its rotation cadence, its selection algorithm, and its slots. The service picks one contract per slot per period, seeded by the time period, so every player sees an identical board with no per-player state, and it survives a server restart. A repeatable contract re-offers correctly once its board rotates back to it - repeat eligibility is tied to the board's rotation period, not a per-quest cooldown, so a contract you already completed this period will not stick on "Completed" forever once the pool cycles past it. The Bounty Pack ships these boards ready-made:
| Board | Cadence | Focus |
|---|---|---|
| Daily | Refreshes every day | The main token faucet - a weighted mix of easy, normal, and hard contracts, plus two training (XP-grind) slots. |
| Weekly | Refreshes every week | Tougher, higher-paying contracts, including marquee boss hunts that pay out bigger than a regular hard contract. |
| Quick Contracts | Fast rotation | A short rotation of low-stakes contracts. XP-focused, so the Daily and Weekly boards stay the token source. |
Running a bigger world? Stand up several boards - the daily board in the town square, the weekly board at the guild hall. Each block opens the board it belongs to.
Opening the Board
A board is never opened with a plain player command. Players reach it three ways:
- The board block. The pack ships placeable poster blocks; pressing use on one opens the board it belongs to.
- A Bounty Master / Trader NPC. An NPC with the board wired to its interaction opens the same board inline.
- The Adventurer's Guide hub tile. The hub NPC at world spawn has a bounty preview tile that routes into the board.
Admins (or the console) can open the board for any player with /mmobountyui <player> [board], mirroring /mmoshopui. The player-facing /mmobounty list/accept/reroll subcommands do not exist; /mmobounty is console/admin-only diagnostics (reset/validate).
Gates
Harder contracts can require a minimum combat level before you can accept them. The gate is declared per difficulty on the board (for example, normal at 25 and hard at 60) and is checked at accept time only - selection is untouched, so everyone still sees the same board. The check uses the highest level across your whole Combat skill category, so progress in any combat skill counts toward the gate. A difficulty the board leaves out is ungated; training contracts, for instance, are always acceptable.
A locked contract shows a Locked status instead of the misleading "Available", and a Required section lists every unmet reason inline - the combat-level gate plus any other unmet skill/level/prerequisite/permission requirement on the contract itself - the same gate-reason display the NPC quest page uses.

The Board UI
Interacting with a board block opens a two-panel page with a Board / My Bounties tab split at the top.
Board tab
- Ready to turn in - a rotation-independent section at the top of the list, showing every bounty you have finished but not yet claimed or turned in, so a completed contract is never lost when it rotates off the board.
- List panel - below that, each of the rotation's contracts shows its task, a difficulty pill, its reward icon, and a lock badge if it is above your combat level.
- Detail panel - the selected contract's full task, flavor text, and reward breakdown, with live
X/Yprogress on each objective as you play. - Accept / Reroll - accept what you want; reroll a single contract for tokens, up to a daily cap, swapping it for a fresh one while the rest of the board stays.
- Turn In - delivery contracts surface a Turn In button bound to the contract's delivery objective, so you hand items in at the board.
- Claim - every completed contract parks and requires the Claim button; the reward never grants automatically out in the field. If a contract grants an item and your inventory happens to be full when you claim, the reward stays parked with a clear message until you have space, so an item reward is never silently lost.
My Bounties tab
A flat list of every bounty you have accepted from this board, independent of the current rotation - so an accepted contract stays visible to you even after it rotates off the public board list. From here you can Abandon an accepted bounty at any time, whether or not it is still in rotation.
Accepted contracts also appear in your quest log under their real name with a simple Bounty and difficulty tag, but only while active or ready to claim - a bounty you have not accepted never shows as a permanently "Available" entry there.

Achievements and Daily Streaks
Completing contracts feeds achievement progress. The plugin jar ships board-agnostic bounty achievements that work with any board: a count ladder, a hard-difficulty chain, a server-first, and a daily streak that rewards completing bounties on consecutive days. The Bounty Pack adds per-board chains on top - a Daily Contractor ladder and a Weekly Warrant ladder - that key on the specific board id.
Each completion fires once and updates both your achievements and the bounties_completed statistic. See Achievements for how the chains, points, and pinning work.
Admin Toggle and Validation
The whole feature is a single toggle. A Bounties switch in the admin menu flips the block interaction, the page, and the commands at once; it persists to bounty-board.json. Per-board enabled flags let you turn an individual board on or off without touching the rest.
Run /mmobounty validate from the console or admin to audit the loaded bounty content. It reports an empty board pool, an unfillable required slot, a missing or disabled reroll currency, an unknown rotation or selection type, and malformed reward or icon ids - so a content pack's boards are checked before players ever open them.