跳到主要内容

潮汐委托任务 JSON

实际任务目录

服务器运行时读取:

config/tidalcommission/tasks/<来源>/<文件>.json

数据包或 KubeJS 可提供初始任务:

data/<命名空间>/tidal_commission_tasks/<来源>/<文件>.json

内置和数据包任务只会在配置任务目录为空时写入。此后应直接维护 config/tidalcommission/tasks/,再执行 /tc reload。旧目录 data/<命名空间>/tasks/ 不会被读取。

基础结构

{
"id": "my_pack:harbor_supplies",
"tier": 1,
"source": "official",
"stars": 1,
"brief_description": "为港口补齐装瓶物资。",
"full_description": "玻璃瓶可以分批存入;指南针只检查,不会被消耗。",
"weight": 10,
"duration": 1.0,
"requirements": [
{
"type": "item",
"target": "minecraft:glass_bottle",
"count": 12,
"delivery_mode": "deposit"
},
{
"type": "item",
"target": "minecraft:compass",
"count": 1,
"delivery_mode": "check_only"
}
],
"objective_logic": {
"mode": "all"
},
"accept_cost": {
"primary": { "item": "minecraft:gold_ingot", "count": 1 }
},
"rewards": {
"primary": { "item": "minecraft:emerald", "count": [8, 10] },
"extras": [
{ "type": "experience", "count": 40 }
]
}
}

根字段

字段说明
id推荐使用 <命名空间>:<路径>,同一任务 ID 不能重复。
tier任务档位,范围 1~3。
sourcecommission_rules.json 中存在且启用的来源 ID。
stars界面星级,通常与档位一致。
brief_description / full_description接取前简介与详情说明。
weight同来源、同档位任务的基础抽取权重。
duration作者描述字段;实际限时仍由主配置的时间规则决定。
requirements一个目标对象或目标数组。
objective_logic多目标完成规则,省略时为 all
accept_cost接取成本,primary 必填,extra 可选。
rewards固定奖励、可选方案,或两者同时存在。
repeat可选的重复完成规则。
prerequisites可选的前置任务 ID 数组。
stage_rules可选的阶段条件与权重修正,见阶段与诊断

目标类型

物品与标签

{ "type": "item", "target": "minecraft:iron_ingot", "count": 16 }
{ "type": "tag", "target": "minecraft:logs", "count": 12 }

标签名不含 #。物品和标签目标的 delivery_mode 支持:

  • consume:提交并消耗,默认值。
  • check_only:只检查持有,不消耗。
  • deposit:允许多次分批存入。

物品组件匹配

{
"type": "item",
"target": "minecraft:potion",
"count": 3,
"match_mode": "contains_components",
"components": {
"minecraft:potion_contents": {
"potion": "minecraft:water"
}
},
"delivery_mode": "consume"
}

match_mode 支持:

  • item_only:只检查物品 ID。
  • contains_components:物品必须包含配置的组件和值,允许还有其他组件。
  • exact_components:组件数据必须完全一致。

1.21.1 中这里使用的是物品组件系统。它可用于兼容仍习惯称为 NBT 的酒类、药水等数据物品;建议在游戏内编辑器中用“使用当前手持物品”读取组件,减少手写错误。

击杀与群系

{ "type": "kill_entity", "target": "minecraft:zombie", "count": 8 }
{ "type": "visit_biome", "target": "#minecraft:is_ocean", "count": 1 }

击杀目标使用实体 ID。群系目标可使用群系 ID,也可在前面加 # 使用群系标签。它们由事件自动推进,不消耗物品。

多目标组合

"objective_logic": {
"mode": "at_least",
"required": 2
}
mode说明
all全部目标完成。
any任意一个目标完成。
at_least至少完成 required 项。

固定与可选奖励

固定奖励使用 primaryextras。只有可选奖励时可以省略它们:

"rewards": {
"options": [
{
"id": "emeralds",
"display": "绿宝石报酬",
"rewards": [
{ "item": "minecraft:emerald", "count": [12, 16] }
]
},
{
"id": "provisions",
"display": "远行补给",
"rewards": [
{ "item": "minecraft:cooked_cod", "count": [12, 16] },
{ "item": "minecraft:bread", "count": [6, 9] }
]
}
],
"choose": 1
}

若同时写入固定奖励和 options,玩家会先取得固定部分,再选择方案。choose 表示需要选择多少个不同方案。

前置与重复规则

"repeat": {
"mode": "daily",
"max_completions": 0
},
"prerequisites": [
"my_pack:harbor_supplies"
]

repeat.mode 支持 unlimitedoncecooldowndailyweekly。使用 cooldown 时通过 cooldown_seconds 设置间隔;max_completions 大于 0 时还会限制总完成次数。

扩展目标与奖励

1.5.0 提供目标类型与奖励类型注册接口。兼容模组可以加入自己的类型;没有安装对应兼容模组时,引用未知类型的任务会在校验中报告错误,而不会悄悄作为普通物品任务运行。

发布前检查

  1. 确认 JSON、物品/实体/群系/标签 ID 和来源 ID 有效。
  2. 修改任务后执行 /tc reload
  3. 执行 /tc doctor;使用阶段规则时再执行 /tc doctor <玩家>
  4. 在测试存档中实际完成一次多目标、组件匹配和可选奖励流程。