Bounty Boards
Bounty Boards
Section titled “Bounty Boards”Bounty boards display a rotating selection of tasks from a pre-defined pool. Think of them as a bulletin board in a town square — every day (or hour, or week), the available quests change. Players pick from whatever’s currently posted.
They’re accessed via commands, so you can hook them up to NPCs, signs, GUI buttons, or anything else your server supports.
Quick Start
Section titled “Quick Start”File: config/journey/bounty_boards/town_board.json
{ "id": "town_board", "name": "<gold>Town Bulletin Board", "description": [ "<gray>Daily tasks from the townspeople", "<gray>Refreshes every 24 hours" ], "displayedTasks": 3, "rotationInterval": 1728000, "taskPool": [ "journey:catch_any_pokemon", "journey:harvest_berries", "journey:win_wild_battles", "journey:level_up_pokemon", "journey:heal_pokemon", "journey:explore_zones" ]}This board has 6 tasks in its pool but only shows 3 at a time. Every 24 hours, it randomly selects 3 new tasks from the pool.
Configuration
Section titled “Configuration”| Field | Type | Description |
|---|---|---|
id | String | Unique identifier for the board |
name | String | Display name (supports MiniMessage) |
description | String[] | Description lines for the board GUI |
displayedTasks | Number | How many tasks to show at once |
rotationInterval | Number | Ticks between rotations (20 ticks = 1 second) |
lastRotation | Number | Last rotation timestamp (auto-managed, don’t edit) |
taskPool | String[] | List of task IDs to randomly select from |
Rotation Intervals
Section titled “Rotation Intervals”| Interval | Ticks |
|---|---|
| 1 hour | 72000 |
| 6 hours | 432000 |
| 12 hours | 864000 |
| 24 hours (daily) | 1728000 |
| 7 days (weekly) | 12096000 |
Task Pool
Section titled “Task Pool”The task pool is a list of task IDs. These tasks must exist in your config/journey/tasks/ directory. When rotation happens, Journey randomly selects displayedTasks tasks from the pool.
Design tip: Make the pool 2-3x larger than displayedTasks for good variety. A board showing 3 tasks should have at least 6-9 in the pool.
How Rotation Works
Section titled “How Rotation Works”- Board is created — initial tasks selected randomly from pool
- Time passes until
rotationIntervalticks have elapsed - New random selection is made from the pool
lastRotationtimestamp is updated- Players with active bounty tasks can still complete them even after rotation
Accessing Boards
Section titled “Accessing Boards”Boards are opened via commands. You choose how players trigger the command:
Direct Command
Section titled “Direct Command”/journey bountyboard town_boardVia NPC (Cobblemon NPC dialogue script)
Section titled “Via NPC (Cobblemon NPC dialogue script)”q.player.execute_command('/journey bountyboard town_board');Via Task Script
Section titled “Via Task Script”You can have a task reward open a bounty board:
{ "type": "script", "data": { "scripts": [ "q.player.execute_command('/journey bountyboard town_board');" ] }}Examples
Section titled “Examples”Weekly Challenge Board
Section titled “Weekly Challenge Board”High-difficulty tasks with weekly rotation:
{ "id": "weekly_challenges", "name": "<light_purple>Weekly Challenges", "description": [ "<gray>Difficult challenges with great rewards", "<gray>Refreshes every 7 days" ], "displayedTasks": 2, "rotationInterval": 12096000, "taskPool": [ "journey:legendary_hunt", "journey:master_battles", "journey:shiny_collection", "journey:raid_completion" ]}Quick Tasks Board
Section titled “Quick Tasks Board”Fast-rotating easy tasks:
{ "id": "quick_tasks", "name": "<green>Quick Tasks", "description": [ "<gray>Simple tasks that refresh every 6 hours" ], "displayedTasks": 5, "rotationInterval": 432000, "taskPool": [ "journey:catch_5_pokemon", "journey:win_3_battles", "journey:harvest_10_berries", "journey:heal_pokemon", "journey:talk_to_npc", "journey:visit_zone", "journey:break_100_blocks", "journey:place_100_blocks" ]}File Location
Section titled “File Location”Bounty board configs go in config/journey/bounty_boards/:
config/journey/bounty_boards/├── town_board.json├── weekly_challenges.json└── quick_tasks.jsonCommands
Section titled “Commands”| Command | Permission | Description |
|---|---|---|
/journey bountyboard <board_id> | journey.command.bountyboard | Open a bounty board |
/journey bountyboard list | journey.command.bountyboard.list | List all boards |
/journey bountyboard rotate <board_id> | journey.command.admin | Force a rotation |
/journey createcontract | journey.command.createcontract | Open custom bounty creator |
- Variety matters: Include different task types (combat, exploration, collection) in each pool
- Match difficulty to rotation speed: Fast-rotating boards should have easy tasks
- Test task availability: Make sure all tasks in the pool exist and work correctly
- Consider your audience: Casual players prefer shorter, simpler bounties