Skip to content

Interactive Bounty Board Builder

Create Journey bounty board configurations without writing JSON manually. This interactive builder helps you create command-accessed rotating task boards through an easy-to-use form.

Board Information

Lowercase with underscores, no spaces
Supports MiniMessage formatting
One line per description entry (supports MiniMessage)

Task Pool

Tasks are selected randomly from the pool

Rotation Settings

Number of tasks to display at once (1-27)
20 ticks = 1 second. Common: 1728000 (24h), 12096000 (7d)

JSON Preview

 

  1. Fill in board details - ID, display name, description
  2. Add tasks to pool - list task IDs
  3. Set rotation interval - in ticks (20 ticks = 1 second)
  4. Configure display settings - how many tasks to show
  5. Copy the generated JSON to your clipboard
  6. Save to config/journey/bounty_boards/your-board-name.json

  • Use lowercase with underscores: town_board
  • Keep it descriptive and unique
  • No namespacing needed (just the ID)

Task pools are simple arrays of task IDs:

{
"taskPool": [
"journey:catch_pokemon",
"journey:win_battles",
"journey:harvest_berries"
]
}

Pool Guidelines:

  • Pool should be 2-3x larger than displayed tasks
  • All tasks have equal chance of appearing
  • Tasks are selected randomly on rotation

Common interval values (in ticks, 20 ticks = 1 second):

// 1 hour
"rotationInterval": 72000
// 6 hours
"rotationInterval": 432000
// 12 hours
"rotationInterval": 864000
// 24 hours (daily)
"rotationInterval": 1728000
// 7 days (weekly)
"rotationInterval": 12096000

Configure how many tasks appear at once:

{
"displayedTasks": 3 // Show 3 tasks at a time
}

Recommendations:

  • Small boards: 1-3 tasks
  • Medium boards: 3-5 tasks
  • Large boards: 5-10 tasks

{
"id": "town_board",
"name": "<gold>Town Bulletin Board",
"description": [
"<gray>Daily tasks from the townspeople",
"<gray>Refreshes every 24 hours"
],
"displayedTasks": 3,
"rotationInterval": 1728000,
"lastRotation": 1761311119724,
"taskPool": [
"journey:catch_any_pokemon",
"journey:harvest_oran_berries",
"journey:win_wild_battles",
"journey:level_up_pokemon",
"journey:heal_pokemon",
"journey:explore_zones"
]
}
{
"id": "weekly_challenge_board",
"name": "<light_purple>Weekly Challenges",
"description": [
"<gray>Difficult challenges with great rewards",
"<gray>Refreshes every 7 days"
],
"displayedTasks": 2,
"rotationInterval": 12096000,
"lastRotation": 1761311119724,
"taskPool": [
"journey:legendary_hunt",
"journey:master_battles",
"journey:shiny_collection",
"journey:raid_completion"
]
}
{
"id": "quick_tasks_board",
"name": "<green>Quick Tasks",
"description": [
"<gray>Simple tasks that refresh every 6 hours",
"<gray>Perfect for quick rewards!"
],
"displayedTasks": 5,
"rotationInterval": 432000,
"lastRotation": 1761311119724,
"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",
"journey:fish_10_items",
"journey:trade_with_villager"
]
}

Bounty boards are command-accessed. Servers can hook these commands to any trigger:

Terminal window
# Open a specific board
/journey bountyboard open <board_id>
# List available boards
/journey bountyboard list

NPC Integration:

{
"right_click_script": [
"q.player.execute_command('/journey bountyboard open town_board');"
]
}

Sign Integration:

  • Use clickable sign mod/plugin
  • Trigger command: /journey bountyboard open town_board

GUI Button:

  • Add button action
  • Command: /journey bountyboard open town_board

Terminal window
# Reload bounty boards
/journey bountyboard reload
# Force rotate a board
/journey bountyboard rotate <board_id>
# View board info
/journey bountyboard info <board_id>
# List all boards
/journey bountyboard list

Varied task pool: Include tasks of different types and difficulties

Appropriate rotation: Match rotation frequency to task difficulty

  • Quick tasks: 6h-12h rotations (432000-864000 ticks)
  • Medium tasks: Daily rotations (1728000 ticks)
  • Hard tasks: Weekly rotations (12096000 ticks)

Clear access: Make it obvious how players access the board (NPC, sign, etc)

Test rotation: Verify rotation timing works as expected

Balance pool size: Ensure pool is 2-3x larger than displayed tasks


  • Check board ID matches exactly (case-sensitive)
  • Verify config file exists and is valid JSON
  • Ensure player has required permissions
  • Verify rotation interval is in ticks (20 ticks = 1 second)
  • Check server has been running long enough
  • Use /bountyboard rotate to manually trigger
  • Check server logs for errors
  • Verify the command trigger is set up correctly
  • Check server has properly hooked the access method (NPC, sign, etc)
  • Ensure players know how to access the board

Board Definitions:

config/journey/bounty_boards/<name>.json

Important: The lastRotation field is auto-generated by the server. You don’t need to include it when creating new boards - it will be added automatically.