Skip to content

任务配置

任务文件放在:

text
plugins/GTCommission/tasks/

可以创建任意数量的 yml 和子目录。一个文件可以写一个任务,也可以写多个任务。

基础格式

yaml
tasks:
  mine_stone:
    name: "&a石料开采"
    auto-accept: true
    type: MINE
    targets: [STONE, DEEPSLATE]
    amount: 128
    weight: 20
    icon: IRON_PICKAXE
    lore:
      - "&7挖掘石头或深板岩。"
    conditions: []
    rewards:
      - "console: give {player} iron_ingot 8"
字段说明
mine_stone任务 ID,不区分大小写
nameGUI 和消息显示名称,支持 PAPI
auto-accept抽中后是否立即接取并开始记录进度,默认 true
type任务类型
targets允许计入的目标,支持多个,'*' 表示全部
amount完成所需总进度
weight从任务池抽取时的权重
iconGUI 图标,可写原版材质或物品库 ID
lore任务说明,支持 PAPI
conditions玩家满足条件时该任务才会进入抽取候选
rewards领取任务时执行的奖励动作

targets 按完整目标匹配,不区分大小写,不是正则表达式。需要接收全部目标时写:

yaml
targets: ['*']

自动接取

每个任务都有自己的开关:

yaml
auto-accept: true
  • true:任务被任务池抽中后立即接取,和原来的使用方式一致。
  • false:任务先以“未接取”状态显示,玩家点击任务图标后才会接取。

手动接取任务不会补算此前发生的进度。例如挖掘任务未接取时挖了 20 个石头,接取后进度仍从 0 开始。提交物品和 PAPI 条件任务同样需要先接取,第一次点击用于接取,之后再点击才会提交物品或检查条件。

未填写 auto-accept 时按 true 处理。auto-accept 只控制是否自动接取;任务完成后是否自动领取奖励由 config.yml -> daily.auto-claim 控制。

任务类型

类型记录内容targets 示例
KILL_ENTITY击杀原版实体ZOMBIESKELETON
KILL_MYTHIC击杀 MythicMobs 怪物SkeletalKnight
KILL_PLAYER击杀指定玩家或任意玩家Steve'*'
MINE挖掘方块STONEDIAMOND_ORE
PLACE放置方块OAK_LOG
CRAFT工作台合成结果DIAMOND_SWORD
SMELT从熔炉取出的物品IRON_INGOT
ENCHANT附魔的物品材质DIAMOND_SWORD
FISH钓到的物品或实体COD'*'
CONSUME食用或饮用物品GOLDEN_APPLE
BREED繁殖实体COWSHEEP
TAME驯服实体WOLFCAT
PLAY_TIME在线秒数'*'
SUBMIT_ITEM点击任务后提交物品见下文
PAPI_CONDITIONPAPI 条件满足后提交见下文
GTMOBDROPS_OBTAIN获得 GTMobDrops 物品掉落物品 ID
GTGATHER完成 GTGather 采集采集模板 ID
DUNGEON成功通关副本副本 ID、显示名或 插件名:ID
LOGIN玩家登录login
CHAT发送指定完整聊天内容签到'*'
COMMAND执行命令spawnhome
DAMAGE_DEALT对实体造成的最终伤害数值ZOMBIE'*'
DAMAGE_TAKEN玩家受到的伤害数值FIREENTITY_ATTACK
ITEM_BREAK耐久物品损坏DIAMOND_PICKAXE
LEVEL_UP增加的经验等级level
TELEPORT传送到世界或使用指定传送原因world_netherCOMMAND
SHEAR剪羊毛等剪取实体SHEEP
ADVANCEMENT完成原版进度minecraft:story/mine_stone
PICKUP_ITEM拾取物品数量DIAMOND
DROP_ITEM丢弃物品数量COBBLESTONE
CUSTOM由进度命令提交自定义目标

提交物品

原版物品:

yaml
tasks:
  submit_logs:
    name: "&6提交原木"
    type: SUBMIT_ITEM
    amount: 64
    weight: 10
    icon: OAK_LOG
    objective:
      item: "vanilla:OAK_LOG"
    rewards:
      - "console: give {player} emerald 5"

物品库物品:

yaml
objective:
  item: "mm:QuestCrystal"

也可以使用:

yaml
objective:
  match: "ni:quest_material"

玩家在任务 GUI 中点击任务时提交当前拥有的物品。物品不足时只提交已有数量,进度可以分多次完成。

PAPI 条件提交

yaml
tasks:
  reach_level_30:
    name: "&e达到 30 级"
    type: PAPI_CONDITION
    amount: 1
    weight: 5
    icon: EXPERIENCE_BOTTLE
    objective:
      expression: "%player_level% >= 30"
    rewards:
      - "console: give {player} diamond 2"

插件会按 performance.condition-check-seconds 自动检查,玩家也可以在 GUI 中点击任务立即检查。

常用表达式:

yaml
conditions:
  - "%player_level% >= 20"
  - "%vault_eco_balance% >= 10000"
  - "%player_world% == world"

MythicMobs 怪物

yaml
tasks:
  mythic_hunt:
    name: "&d魔物讨伐"
    type: KILL_MYTHIC
    targets: [SkeletalKnight, AngrySludge]
    amount: 10
    weight: 20
    icon: DIAMOND_SWORD
    rewards:
      - "console: eco give {player} 5000"

targets 填 MythicMobs 怪物内部 ID,不填显示名。

副本通关

yaml
tasks:
  castle_clear:
    name: "&9古堡远征"
    type: DUNGEON
    targets:
      - castle
      - "DungeonPlus:castle"
    amount: 3
    weight: 15
    icon: NETHER_STAR
    rewards:
      - "console: give {player} diamond 3"

已支持 DungeonPlus、MythicDungeons、QueDP、BTDungeons。目标写法见 联动与排错

奖励动作

常用写法:

yaml
rewards:
  - "console: give {player} diamond 2"
  - "console: eco give {player} 1000"
  - "message: &a任务奖励已发放。"

可用内部变量:

text
{player}
{uuid}
{task_id}
{task_name}
{pool_id}
{progress}
{required}
{board_id}
{board_name}

动作文本会先替换内部变量和 PAPI,再执行。

任务不生效时

  1. 检查任务 ID 是否被任务池引用。
  2. 检查任务池是否被面板引用。
  3. 检查 conditions 是否满足。
  4. 检查目标 ID 是否和实际事件一致。
  5. 输入 /gtcom reload 查看控制台错误。
  6. /gtcommission progress 玩家 类型 目标 数量 手动提交一次,确认任务配置本身能匹配。