任务配置
任务文件放在:
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,不区分大小写 |
name | GUI 和消息显示名称,支持 PAPI |
auto-accept | 抽中后是否立即接取并开始记录进度,默认 true |
type | 任务类型 |
targets | 允许计入的目标,支持多个,'*' 表示全部 |
amount | 完成所需总进度 |
weight | 从任务池抽取时的权重 |
icon | GUI 图标,可写原版材质或物品库 ID |
lore | 任务说明,支持 PAPI |
conditions | 玩家满足条件时该任务才会进入抽取候选 |
rewards | 领取任务时执行的奖励动作 |
targets 按完整目标匹配,不区分大小写,不是正则表达式。需要接收全部目标时写:
yaml
targets: ['*']自动接取
每个任务都有自己的开关:
yaml
auto-accept: truetrue:任务被任务池抽中后立即接取,和原来的使用方式一致。false:任务先以“未接取”状态显示,玩家点击任务图标后才会接取。
手动接取任务不会补算此前发生的进度。例如挖掘任务未接取时挖了 20 个石头,接取后进度仍从 0 开始。提交物品和 PAPI 条件任务同样需要先接取,第一次点击用于接取,之后再点击才会提交物品或检查条件。
未填写 auto-accept 时按 true 处理。auto-accept 只控制是否自动接取;任务完成后是否自动领取奖励由 config.yml -> daily.auto-claim 控制。
任务类型
| 类型 | 记录内容 | targets 示例 |
|---|---|---|
KILL_ENTITY | 击杀原版实体 | ZOMBIE、SKELETON |
KILL_MYTHIC | 击杀 MythicMobs 怪物 | SkeletalKnight |
KILL_PLAYER | 击杀指定玩家或任意玩家 | Steve、'*' |
MINE | 挖掘方块 | STONE、DIAMOND_ORE |
PLACE | 放置方块 | OAK_LOG |
CRAFT | 工作台合成结果 | DIAMOND_SWORD |
SMELT | 从熔炉取出的物品 | IRON_INGOT |
ENCHANT | 附魔的物品材质 | DIAMOND_SWORD |
FISH | 钓到的物品或实体 | COD、'*' |
CONSUME | 食用或饮用物品 | GOLDEN_APPLE |
BREED | 繁殖实体 | COW、SHEEP |
TAME | 驯服实体 | WOLF、CAT |
PLAY_TIME | 在线秒数 | '*' |
SUBMIT_ITEM | 点击任务后提交物品 | 见下文 |
PAPI_CONDITION | PAPI 条件满足后提交 | 见下文 |
GTMOBDROPS_OBTAIN | 获得 GTMobDrops 物品 | 掉落物品 ID |
GTGATHER | 完成 GTGather 采集 | 采集模板 ID |
DUNGEON | 成功通关副本 | 副本 ID、显示名或 插件名:ID |
LOGIN | 玩家登录 | login |
CHAT | 发送指定完整聊天内容 | 签到、'*' |
COMMAND | 执行命令 | spawn、home |
DAMAGE_DEALT | 对实体造成的最终伤害数值 | ZOMBIE、'*' |
DAMAGE_TAKEN | 玩家受到的伤害数值 | FIRE、ENTITY_ATTACK |
ITEM_BREAK | 耐久物品损坏 | DIAMOND_PICKAXE |
LEVEL_UP | 增加的经验等级 | level |
TELEPORT | 传送到世界或使用指定传送原因 | world_nether、COMMAND |
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,再执行。
任务不生效时
- 检查任务 ID 是否被任务池引用。
- 检查任务池是否被面板引用。
- 检查
conditions是否满足。 - 检查目标 ID 是否和实际事件一致。
- 输入
/gtcom reload查看控制台错误。 - 用
/gtcommission progress 玩家 类型 目标 数量手动提交一次,确认任务配置本身能匹配。
