QyCycleTaskView – 周期任务插件(兼容chemdah)

QyCycleTaskView – 周期任务插件(兼容chemdah)

简介

QyCycleTaskView 是一个循环任务视图插件,支持每日/每周/每月/自定义天数重置的任务系统,使用 DragonCore 作为 GUI 展示。

cdd296e7-b86e-44a4-8487-46dc8132585d

支持一个任务组对应一个GUI界面。

依赖

插件

类型

说明

QySQL

必须

数据库前置

DragonCore

必须

GUI 视图

MythicMobs

可选

KILL_MOB 类型任务和 MM 物品匹配

NeigeItems

可选

NI 物品匹配(含 data)

Chemdah

可选

CHEMDAH 类型任务联动

PlaceholderAPI

可选

占位符支持


指令

主命令:/qct(别名 /qycycletask/cycletask

指令

权限

说明

/qct open <任务组> <界面名>

qct.use

打开指定任务组的界面

/qct reload

qct.admin

重载配置(同步补齐 all 模式缺失任务)

/qct reset <任务组> [玩家]

qct.admin

重置任务组(需30秒内二次确认,重新分配任务)

/qct task add <玩家> <任务组> <任务ID>

qct.admin

添加任务到玩家列表并接取

/qct task complete <玩家> <任务组> <任务ID>

qct.admin

强制完成任务

/qct task reset <玩家> <任务组> <任务ID>

qct.admin

重置单个任务为未接取(不发奖励)

/qct data add <玩家> <data名> <数值>

qct.admin

增加 data 点数

/qct data set <玩家> <data名> <数值>

qct.admin

设置 data 点数

/qct data get <玩家> <data名>

qct.admin

查看 data 点数

/qct info <玩家> <任务组>

qct.admin

查看玩家任务状态

指令说明:

  • reset 重置任务组:random 模式重新随机分配,all 模式全部重新分配。所有进度清零,auto-accept 的任务自动接取。
  • task add:可以追加不在随机分配里的任务,追加后自动接取。
  • task reset:只重置单个任务状态,不影响其他任务。
  • reload:重载配置后,如果模式从 random 切换到 all,会自动补齐缺失的任务到在线玩家列表。

PlaceholderAPI 占位符

占位符

返回值

说明

%qct_<组>_total%

数字

分配的任务总数

%qct_<组>_completed%

数字

已完成任务数

%qct_<组>_claimed%

数字

已领取奖励数

%qct_<组>_progress%

3/5

已完成/总数

%qct_<组>_all_claimed%

true/false

是否全部领取

%qct_<组>_group_reward%

true/false

组奖励是否已领

%qct_<组>_reset_time%

2h30m

距下次重置时间

%qct_<组>_<任务ID>_status%

unaccepted/accepted/completed/claimed

任务状态

%qct_<组>_<任务ID>_progress%

3/10

任务进度

%qct_data_<data名>%

数字

data 当前值


配置文件

config.yml(主配置)

table-prefix: "cycle_task"    # 数据库表前缀

messages:
  no-permission: "&c你没有权限执行此操作"
  task-accepted: "&a成功接取任务: {0}"
  task-already-accepted: "&e你已经接取了该任务"
  task-not-available: "&c该任务当前不可用"
  reward-claimed: "&a成功领取奖励!"
  reward-no-space: "&c背包空间不足,需要 {0} 个空槽位"
  group-reward-claimed: "&a成功领取任务组总奖励!"
  group-not-complete: "&c尚未完成所有任务"
  task-not-complete: "&c任务尚未完成"
  reset-notice: "&e任务已重置,新的任务已刷新"
  reset-confirm: "&e请在30秒内再次输入该指令确认重置"
  reset-success: "&a任务组 {0} 已重置"
  data-added: "&a已为 {0} 增加 {1} 点 {2}"
  data-set: "&a已将 {0} 的 {1} 设置为 {2}"
  player-not-found: "&c找不到玩家: {0}"
  group-not-found: "&c找不到任务组: {0}"
  task-not-found: "&c找不到任务: {0}"

任务组配置(taskgroups/*.yml)

每个任务组一个文件,文件名即为任务组 ID。

# ==================== 重置设置 ====================
# 重置周期: daily / weekly / monthly / custom
reset-type: daily
# 重置时间点(24小时制)
reset-time: "05:00"
# custom 类型时的重置天数
reset-days: 3

# ==================== 分配设置 ====================
# 分配模式: all(全部分配)/ random(随机分配)
assign-mode: random
# random 模式下分配数量
assign-count: 5

# ==================== 组完成奖励 ====================
group-reward:
  required-slots: 2           # 领取所需背包空槽位
  description:                # 奖励描述(发送给客户端显示)
    - "&6&l全勤奖励"
    - "&7完成所有任务的额外奖励"
    - "&e- 金币 x1000"
  commands:                   # 奖励命令组
    - "eco give %player% 1000"
    - "give %player% diamond 5"

# ==================== 任务列表 ====================
tasks:
  # ... 见下方任务类型说明

任务类型

KILL_MOB — 击杀 MythicMobs 怪物

依赖 MythicMobs,未安装时自动隐藏。

tasks:
  kill_zombie:
    name: "&a击杀僵尸精英"
    description:
      - "&7击杀 10 只僵尸精英"
    type: KILL_MOB
    auto-accept: false        # 是否自动接取(默认 false)
    mob-id: "ZombieElite"     # MythicMobs 怪物 ID
    amount: 10                # 需要击杀数量
    reward:
      required-slots: 1
      commands:
        - "eco give %player% 100"

SUBMIT_ITEM — 提交物品

支持 4 种物品来源,提交时优先扣手持,不足再扣背包。

source: vanilla(原版物品)

tasks:
  submit_diamond:
    name: "&b提交钻石"
    description:
      - "&7提交 5 颗钻石"
    type: SUBMIT_ITEM
    auto-accept: true
    items:
      - source: vanilla
        id: "DIAMOND"           # Material 英文名
        amount: 5               # 需求数量
        consume: true           # 是否消耗(默认 true)
        consume-amount: 5       # 消耗数量(默认等于 amount)
    reward:
      required-slots: 1
      commands:
        - "eco give %player% 500"

source: neigeitems(NeigeItems 物品)

items:
  - source: neigeitems
    id: "elite_sword"           # NI 物品 ID
    amount: 1
    consume: true
    consume-amount: 1
    ni-data:                    # NI data 匹配(可选)
      品质: "6"                  # 要求品质为 6
      强化等级: "10"             # 要求强化等级为 10

source: mythicmobs(MythicMobs 物品)

items:
  - source: mythicmobs
    id: "dragon_scale"          # MM 物品 ID
    amount: 3
    consume: true
    consume-amount: 3

source: customitem(自定义匹配)

不需要 id,通过 match 节点定义匹配条件。match 中至少需要一个条件,所有条件都满足才算匹配。

name 和 lore 支持正则表达式:

  • 直接写文本 = 精确匹配
  • .*xxx.* = 包含匹配
items:
  - source: customitem
    amount: 1
    consume: true
    consume-amount: 1
    match:
      # 名称匹配(正则)
      name: ".*传说之剑.*"

      # Lore 匹配(正则列表,每项都必须在 lore 中找到匹配行)
      lore:
        - "传说品质"              # 精确匹配:lore 中有一行完全等于"传说品质"
        - ".*不可交易.*"          # 包含匹配:lore 中有一行包含"不可交易"

      # NBT 节点匹配(路径用 . 分隔)
      nbt:
        - path: "custom.quality"
          value: "6"
        - path: "custom.bound"
          value: "true"

DATA — 插件内置 Data 点数

通过 /qct data add 指令或其他插件调用 API 增加点数,达到目标值即完成。

tasks:
  gather_points:
    name: "&e积累探索点数"
    description:
      - "&7积累 100 探索点数"
    type: DATA
    auto-accept: true
    data:                         # 支持多条件,全部满足才算完成
      - name: "explore_points"    # data 名称
        value: 100                # 需要 >= 此值
        reset-on-accept: true     # 接取时是否重置此 data 为 0
    reward:
      required-slots: 1
      commands:
        - "eco give %player% 500"

CHEMDAH — Chemdah 托管任务

依赖 Chemdah,未安装时自动隐藏。任务的接取/完成/停止完全由 Chemdah 管理。

tasks:
  chemdah_story:
    name: "&c完成主线剧情"
    description:
      - "&7完成主线剧情第三章"
    type: CHEMDAH
    auto-accept: false
    chemdah:
      quest-id: "story_chapter_3"   # Chemdah 任务模板 ID
      task-id: "kill_boss"          # Chemdah quest 内的 task 节点 ID
    reward:
      required-slots: 1
      commands:
        - "eco give %player% 2000"

生命周期:

  • 接取时:自动 reset + accept 对应 Chemdah quest
  • 完成判断:检查 Chemdah quest 的指定 task 节点是否完成
  • 领取奖励时:completeQuest 完成对应 Chemdah quest + 发放奖励
  • 玩家在 Chemdah 侧放弃/失败任务时(未完成状态下):自动重置为”未接取”状态

重置机制

类型

说明

示例

daily

每天重置

每天 05:00 重置

weekly

每周重置

每周一 05:00 重置

monthly

每月重置

每月1号 05:00 重置

custom

自定义天数

每 3 天 05:00 重置

重置时:

  1. 清空所有任务进度
  2. 重新分配任务(随机/全量)
  3. 组奖励状态重置
  4. 自动接取标记为 auto-accept 的任务

分配模式

模式

说明

all

分配所有可用任务(忽略 assign-count)

random

从可用任务中随机选取 assign-count 个

注意事项:

  • 从 random 切换到 all 模式后执行 /qct reload,会自动补齐在线玩家缺失的任务
  • /qct task add 可以追加不在随机分配里的额外任务
  • 不可用的任务(缺少依赖插件)不会被分配

DragonCore GUI

界面配置文件位于 plugins/QyCycleTaskView/graphical/cycle_task_view.yml,可自行修改布局和贴图。

发包协议(供界面开发者参考):

包ID

参数

说明

get_tasks

无 或 (pageSize, page)

获取任务列表

accept_task

taskId

接取任务

claim_reward

taskId

领取奖励

submit_task

taskId

提交物品任务

get_group_reward

获取组奖励状态

claim_group_reward

领取组奖励

动态组件 temp 字段:

字段

说明

$temp.task_id

任务 ID

$temp.name

任务名称

$temp.description

任务描述

$temp.progress

进度文本(如 3/10)

$temp.status

状态:unaccepted/accepted/completed/claimed

界面变量:

变量

说明

界面变量.get_tasks总页数

任务列表总页数

界面变量.get_tasks当前页

当前页码

界面变量.get_group_reward_status

组奖励状态:locked/available/claimed

界面变量.get_group_reward_desc

组奖励描述

界面变量.get_group_reward_slots

组奖励所需空槽位


完整任务组配置示例

reset-type: daily
reset-time: "05:00"
assign-mode: random
assign-count: 4

group-reward:
  required-slots: 2
  description:
    - "&6&l每日全勤奖励"
    - "&7完成所有每日任务可领取"
    - "&e- 钻石 x5"
    - "&e- 金币 x1000"
  commands:
    - "give %player% diamond 5"
    - "eco give %player% 1000"

tasks:
  kill_skeleton:
    name: "&a击杀骷髅弓手"
    description:
      - "&7击杀 15 只骷髅弓手"
    type: KILL_MOB
    auto-accept: false
    mob-id: "SkeletonArcher"
    amount: 15
    reward:
      required-slots: 1
      commands:
        - "eco give %player% 150"

  submit_ore:
    name: "&b提交精炼矿石"
    description:
      - "&7提交 10 个精炼矿石"
    type: SUBMIT_ITEM
    auto-accept: true
    items:
      - source: neigeitems
        id: "refined_ore"
        amount: 10
        consume: true
        consume-amount: 10
    reward:
      required-slots: 1
      commands:
        - "eco give %player% 200"

  submit_custom_weapon:
    name: "&d提交传说武器"
    description:
      - "&7提交任意一把传说品质武器"
    type: SUBMIT_ITEM
    auto-accept: true
    items:
      - source: customitem
        amount: 1
        consume: false
        consume-amount: 0
        match:
          lore:
            - ".*传说品质.*"
    reward:
      required-slots: 1
      commands:
        - "eco give %player% 500"

  explore:
    name: "&e探索世界"
    description:
      - "&7积累 50 探索点数"
      - "&7(击杀怪物、采集资源获得)"
    type: DATA
    auto-accept: true
    data:
      - name: "daily_explore"
        value: 50
        reset-on-accept: true
    reward:
      required-slots: 1
      commands:
        - "eco give %player% 300"

  story_quest:
    name: "&c完成每日剧情"
    description:
      - "&7完成今日剧情任务"
    type: CHEMDAH
    auto-accept: false
    chemdah:
      quest-id: "daily_story"
      task-id: "main_objective"
    reward:
      required-slots: 1
      commands:
        - "eco give %player% 400"
© 版权声明
THE END
QyCycleTaskView - 周期任务插件(兼容chemdah)-清影据点
QyCycleTaskView – 周期任务插件(兼容chemdah)
此内容为付费资源,请付费后查看
40
付费资源