Skip to content

Task Givers

VoidAnomaly edited this page Nov 1, 2026 · 2 revisions

Task givers and categories

A task giver is a guild on the board and journal. It connects reputation, categories, and reward pools. Adding one does not create an NPC, villager profession, or village building.

Add a task giver

Create config/taskbound/data/mytasks/task_givers/watch.json:

{
  "id": "mytasks:watch",
  "display_name": "Village Watch",
  "reputation": {
    "thresholds": {
      "1": 0,
      "2": 10,
      "3": 25,
      "4": 45,
      "5": 70,
      "6": 100,
      "7": 135,
      "8": 175,
      "9": 220,
      "10": 270,
      "11": 325,
      "12": 385,
      "13": 450,
      "14": 520,
      "15": 595,
      "16": 675,
      "17": 760,
      "18": 850,
      "19": 945,
      "20": 1045
    }
  },
  "rank_names": {
    "1": "Recruit",
    "5": "Patroller",
    "10": "Guardian",
    "15": "Captain",
    "20": "Commander"
  },
  "category_ids": [
    "mytasks:watch/starter"
  ],
  "reward_pool_ids": [
    "mytasks:watch"
  ],
  "reward_multiplier": 1.0,
  "enabled": true,
  "icon_item": "minecraft:shield"
}

Create the category below, Zombie Patrol, and its reward entry before reloading. Display and rank names may be plain text or translation keys. icon_item must be a registered item ID.

Add a category

Create config/taskbound/data/mytasks/task_categories/watch/starter.json:

{
  "id": "mytasks:watch/starter",
  "giver_id": "mytasks:watch",
  "minimum_reputation_level": 1,
  "maximum_reputation_level": null,
  "base_weight": 5.0,
  "soft_boost_after": 3,
  "recency_boost_per_miss": 0.2,
  "guarantee_after": 8,
  "template_ids": [
    "mytasks:watch/zombie_patrol"
  ],
  "required_capabilities": [],
  "new_unlock_weight_multiplier": 2.0,
  "new_unlock_boost_draws": 3
}

References must agree both ways: the giver lists the category; its giver_id points back; the category lists each template; and each template points back with category_id. Do not repeat IDs in these lists. Every category needs at least one template.

Setting Meaning
minimum_reputation_level Required guild level; templates may require higher levels
maximum_reputation_level Last eligible level, or null to retain the category
base_weight Positive relative selection weight
soft_boost_after Eligible missed selections before a recency boost starts
recency_boost_per_miss Additional weight factor per further miss; 0 disables it
guarantee_after Positive eligible-miss count at which the category is due for selection
new_unlock_weight_multiplier Positive multiplier during the initial unlock boost
new_unlock_boost_draws How many boosted draws; 0 disables the boost

Change progression and payouts

Reputation thresholds are total accumulated points. Start level 1 at zero and use strictly increasing values. Changing thresholds recalculates levels from existing points; it does not reset the points. rank_names controls milestone titles.

reward_pool_ids selects pools, not individual reward IDs. An empty array allows all pools. reward_multiplier scales the item-selection budget and must be zero or positive. Zero removes that budget but does not remove the task's separate base reputation reward.

Intermediate levels add offers automatically as shown in Guilds and reputation. These offer increases are independent of level gifts and active-task capacity.

Disable or remove a task giver

To hide a guild temporarily, set enabled to false and reload. Keep its category/template references valid: disabled files are still checked.

To remove it entirely, remove its giver JSON and reload. Its categories, templates, and level gifts are omitted from the active definitions while it is absent; their files can remain for later restoration. Shared reward files are not automatically removed.

Accepted tasks and saved payouts remain. At a board, select Active, then click the selected guild again to show All active tasks and reach work from a removed giver. If no guilds remain, this view opens automatically. Reputation remains saved if the giver is restored.

Check datapacks as well. Deleting a config file does not remove a giver supplied by a datapack; deleting an override can reveal the underlying config giver. To hide an underlying giver through a datapack, override its definition with enabled: false and valid references.

To remove only a category, unlink it from the giver, remove its category file and templates, and save the full change before reloading.

Clone this wiki locally