Skip to content

QuestGPS 任务导航

付费模块

本模块为付费模块。授权由 云端平台 统一管理:在 cloud.021209.xyz 购买/领取授权后,于「装备模块」页面勾选到对应服务器即可,无需填写 passwordlicense.yml

功能定位

将 Chemdah 任务系统的追踪和导航功能,通过 ArcartX 客户端实现零服务端开销的沉浸式 RPG 导航体验。

核心特性

  • Waypoint 罗盘导航:ArcartX 客户端内置罗盘/距离指示器,自动指向追踪目标(纯客户端渲染)
  • 3D 模型标记:在导航目标位置生成客户端 3D 模型标记(Adyeshach 发包实体 + ArcartX 模型),支持自定义模型和动画
  • 路径寻路:从玩家到目标沿地面生成多个导航标记实体,智能绕开障碍物、液体和危险方块,支持 ±1 格台阶处理,玩家移动时动态更新路径
  • 任务指引 HUD:RPG 风格左侧竖排浮窗,显示当前任务名、目标清单(最多 3 条)、完成进度和导航坐标
  • 任务菜单:分类浏览任务、查看描述/奖励预览、接取/放弃/追踪操作
  • Chemdah 联动:Chemdah 为任务 SSOT(名称、描述、目标进度、奖励执行);quests/*.yml 仅作 overlay 白名单与可选覆盖
  • EventPacket 联动:可通过 EventPacket 的 questgps.offer / questgps.accept / questgps.track 动作自动推送任务
  • 主线门禁:未完成必要主线时自动屏蔽支线/奇遇入口和部分命令

性能架构

组件渲染位置服务端开销
Waypoint 罗盘客户端追踪变更时 1 次发包
3D 模型标记客户端(Adyeshach 包级别实体)路径更新时发包(可配置间隔)
任务指引 HUD客户端 UI追踪变更时 1 次发包
地图目标同步服务端 → Map 模块追踪变更时 1 次内部调用

所有可视化均为客户端渲染,追踪期间服务端零 tick 开销。

依赖

类型依赖作用缺少时表现
必需ArcartX任务菜单 UI、路点罗盘、模型渲染、指引 HUD模块无法启动
必需Chemdah读取任务、目标、追踪状态和奖励预览模块不会加载
可选Adyeshach在导航目标生成客户端假实体作为模型载体3D 标记功能跳过,罗盘仍可用
可选Map 模块将任务目标同步为地图临时目标地图联动关闭,其他功能正常
可选EventPacket 模块通过事件动作推送任务接取/追踪不影响 Chemdah 原生任务读取

启用步骤

yaml
modules:
  questgps:
    enabled: true

命令

玩家命令

命令权限说明
/questgpsarcartxsuite.questgps.use打开任务菜单(等同 /questgps open
/questgps openarcartxsuite.questgps.use打开任务菜单
/questgps cleartrackarcartxsuite.questgps.use清除当前导航追踪

管理员命令

命令权限说明
/axs questgps statusarcartxsuite.admin查看模块状态(已配置任务数、追踪玩家数、导航就绪)
/axs questgps open <玩家>arcartxsuite.admin为指定在线玩家打开任务菜单
/axs questgps reloadarcartxsuite.admin提示使用 /axs reload questgps 重载模块

权限

权限节点默认说明
arcartxsuite.questgps.usetrue玩家命令
arcartxsuite.adminop管理员命令(宿主 /axs 统一校验)

Chemdah 整合

QuestGPS 以 Chemdah 为单一事实来源,overlay 只负责「哪些任务进菜单」以及可选覆盖项。

层级职责
Chemdah任务名称、描述、目标 key/进度、tracker 导航、奖励实际发放
QuestGPS overlay白名单登记、排序、门禁、hooks、可选导航坐标与展示字段覆盖
QuestGPS 菜单分类 Tab、接取/放弃、追踪、奖励预览、指引 HUD

overlay 根键 = Chemdah Template.getId(),使用裸 ID(如 example_mainline_quest),不要使用 main/example_quest 这类路径式前缀。

配置

配置文件路径:plugins/ArcartXSuite/data/questgps/ArcartXQuestGPS.yml
任务 overlay 目录:data/questgps/quests/*.yml(目录名由根级 quests-directory 配置,默认 quests

ArcartXQuestGPS.yml 配置项一览

debug

字段类型默认值说明
enabledbooleanfalse开发者调试日志

client

字段类型默认值说明
packet-idstringAXS_QUESTGPS发包协议 ID,须与 UI 脚本一致
menu-ui-idstring / listAXS:questgps_menu任务菜单 UI;支持列表多 UI 同时发包,见 多 UI 发包
guide-ui-idstring / listAXS:questgps_guide追踪时左侧指引 HUD UI
register-ui-on-enablebooleantrue模块启用时向 ArcartX 注册 UI 资源
overwrite-ui-filesbooleanfalse是否覆盖服内已有 UI 文件

presentation

字段类型默认值可选值说明
sourcestringchemdahchemdah / overlayUI 展示全局唯一来源:名称、描述、目标文案、目标说明、奖励预览均读同一侧

单任务可在 overlay 写 presentation.source 覆盖。presentation.*-sourcemerge 均不再支持。

category

字段类型默认值可选值说明
sourcestringchemdahchemdah / meta-type / meta_type / overlay分类 Tab 全局唯一来源
source分类由谁决定
chemdah / meta-type / meta_typeChemdah meta.type,须在 categories 注册
overlay每条 overlay 的 category 字段
category.fallback(兜底分类)

未匹配任何已注册分类的任务,按下列配置归入兜底分类(而非静默丢弃):

字段类型默认值说明
enabledbooleanfalse(代码默认)/ true(随附配置文件)true 时未匹配分类的任务归入兜底分类;false 恢复旧的静默丢弃行为
idstringuncategorized兜底分类 ID
display-namestring未分类兜底分类显示名
sort-orderint1000兜底分类排序

删除 categories 段可关闭分类 Tab。

discovery

字段类型默认值可选值说明
modestringautooverlay / auto任务列表来源(随附默认配置文件为 auto;配置项缺失时代码回退为 overlay
模式行为
overlayquests/*.ymlenabled: true 的任务进菜单
auto扫描全部 Chemdah 模板;无 overlay 的模板自动生成最小定义

categories

定义任务菜单顶部的分类 Tab。无内置分类,须在此注册;Chemdah meta.type 或 overlay category 必须与下列 根键 ID 一致。

每个分类条目:

字段类型默认值说明
display-namestring分类 IDTab 显示名
sort-orderint300Tab 排序,越小越靠前

默认示例 ID:mainline(主线)、side(支线)、encounter(奇遇)。可新增如 dailyL1

yaml
categories:
  mainline:
    display-name: "主线"
    sort-order: 0
  daily:
    display-name: "日常"
    sort-order: 300
字段类型默认值可选值说明
enabledbooleantrue是否启用导航(waypoint + marker)
waypoint-style-idstringdefaultArcartX waypoint/*.yml 中的样式 ID(全局默认);overlay navigation.point.style-id 可覆盖单点
quest-id-prefixstringAXS-questgps-内部 waypoint ID 前缀
remove-on-finishbooleantrue任务/目标完成后自动清除追踪
modestringhybridchemdah / overlay / hybrid导航坐标来源
mode坐标来源
chemdah仅 Chemdah tracker
overlay仅 overlay navigation / tasks.*.navigation
hybridChemdah tracker 优先,无 tracker 时用 overlay
字段类型默认值说明
enabledbooleantrue是否启用 3D 模型路径标记;关闭后仅 waypoint 罗盘
model-idstringnav_beaconArcartX 模型 ID
scaledouble1.0模型缩放
default-statestringidle模型默认状态
animationstringrotate循环动画名
y-offsetdouble2.0模型相对目标 Y 偏移(格)
path-intervaldouble3.0路径标记间距(格)
path-max-markersint20路径标记最大数量
path-update-ticksint10路径更新间隔(tick,20=1秒)
path-max-distancedouble64路径最大渲染距离(格)
path-max-iterationsint2000A* 寻路最大迭代(100–50000)

Waypoint 罗盘样式在 ArcartX 的 waypoint/ 目录定义,与 waypoint-style-id / overlay style-id 对应。

database

与 QuestGPS 菜单无关,仅影响 Chemdah 玩家任务进度 的存储后端。

字段类型默认值说明
enabledbooleanfalsetrue = QuestGPS 启动时为 Chemdah 注册 MySQL 数据库
load-in-join-eventbooleantrue玩家进服加载 Chemdah 档案
release-in-quit-eventbooleantrue玩家退服释放档案
disable-auto-savebooleanfalsetrue = 禁止 Chemdah 自动保存
disable-auto-create-tablebooleanfalsetrue = 禁止自动建表

何时需要开启

Chemdah config.yml 使用 database.use=LOCAL(本地)时保持 enabled: false
使用 database.use=SQL(MySQL)时设 enabled: true。QuestGPS 会优先使用内置 DatabaseMySQL(基于 Chemdah 免费版 Relational),免费版通常无需 patched JAR。

gate(主线门禁)

required-mainline-quest-ids 为空时整段门禁关闭,下列 blocked-* 均不生效。

字段类型默认值填写说明填写示例
required-mainline-quest-idslist[]全部完成的 Chemdah 任务裸 ID;过关后解锁下方限制example_mainline_quest
blocked-categorieslist未过关时锁定的分类 Tab ID,须与 categories 根键一致sideencounter
blocked-command-prefixeslist未过关时拦截的命令前缀(不含 /warprtpshop
blocked-module-entrieslist[]未过关时锁定的模块入口 ID;其他模块打开 UI 前调用 QuestGpsNavigable.moduleEntryLocked(player, id)marketregions_warp
blocked-event-rule-idslist[]未过关时不触发的 EventPacket 规则 ID,与 data/eventpacket/rules/*.yml 根键一致first_join_offer_mainlinekill_zombie_trigger_encounter
deny-messagestring见配置拦截时聊天提示(支持 & 颜色码)&c请先完成主线
deny-chat-cardstring""可选,ArcartX 聊天卡片 IDquest_gate_deny
deny-subtitlestring""可选,announcer 模块字幕组 IDmainline_gate
yaml
gate:
  required-mainline-quest-ids:
    - "example_mainline_quest"
  blocked-categories:
    - side
    - encounter
  blocked-command-prefixes:
    - "warp"
    - "rtp"
  blocked-module-entries:
    - "market"
  blocked-event-rule-ids:
    - "first_join_offer_mainline"
    - "kill_zombie_trigger_encounter"
  deny-message: "&c你需要先完成必要主线任务。"
  deny-chat-card: ""
  deny-subtitle: ""
拦截项触发时机
blocked-categories任务菜单中无法查看/接取该分类
blocked-command-prefixes玩家聊天命令被 PlayerCommandPreprocessEvent 取消
blocked-module-entries其他模块查询 moduleEntryLocked 为 true 时自行拒绝打开
blocked-event-rule-idsEventPacket 执行规则前查询 eventRuleLocked 为 true 则跳过

其他根级字段

根级 quests-directory 会被读取QuestGpsModule 据此定位 overlay 目录,默认 quests)。

config-version 由模块基类 AbstractAXSModule 统一读取用于配置版本校验(默认字段名 config-version、当前版本 1),QuestGPS 自身不额外读取。

配置示例(精简)

yaml
debug:
  enabled: false

client:
  packet-id: "AXS_QUESTGPS"
  menu-ui-id: "AXS:questgps_menu"
  guide-ui-id: "AXS:questgps_guide"
  register-ui-on-enable: true
  overwrite-ui-files: false

presentation:
  source: chemdah

category:
  source: chemdah

discovery:
  mode: auto

categories:
  mainline:
    display-name: "主线"
    sort-order: 0
  side:
    display-name: "支线"
    sort-order: 100
  encounter:
    display-name: "奇遇"
    sort-order: 200

navigation:
  enabled: true
  waypoint-style-id: "default"
  quest-id-prefix: "AXS-questgps-"
  remove-on-finish: true
  mode: hybrid
  marker:
    enabled: true
    model-id: "waypoint"
    scale: 1.0
    default-state: "idle"
    animation: "rotate"
    y-offset: 0.0
    path-interval: 3.0
    path-max-markers: 20
    path-update-ticks: 10
    path-max-distance: 64
    path-max-iterations: 2000

database:
  enabled: false

gate:
  required-mainline-quest-ids: []
  blocked-categories:
    - side
    - encounter
  blocked-command-prefixes:
    - "warp"
  blocked-module-entries: []
  blocked-event-rule-ids: []
  deny-message: "&c你需要先完成必要主线任务。"

quests/*.yml overlay 配置项一览

任务文件位于 data/questgps/quests/*.yml根键 = Chemdah Template.getId()(裸 ID,如 example_mainline_quest)。

任务级字段

字段类型默认值说明
enabledbooleantruefalse 不进菜单(discovery.mode: overlay 时等同于未登记)
sort-orderint0菜单内排序,越小越靠前
allow-abandonbooleanfalse是否显示 UI「放弃」按钮
categorystringcategory.source=overlay必填;值须为 categories 已注册 ID
required-mainlinelist[]接取前须完成的主线 Chemdah ID 列表
display-name-overridestring""presentation.source=overlay 时覆盖任务名
descriptionlist[]presentation.source=overlay 时 overlay 描述行
presentation.sourcestring继承全局单任务覆盖 presentation.source
rewardslist[]奖励预览(仅 UI),见下方「奖励预览」
navigationmap见下任务级导航坐标
tasksmap子目标 overlay,key = Chemdah 目标 ID
hooksmapEventPacket command-signal 信号名,见下

hooks 各阶段信号

说明示例信号名
triggered任务出现在菜单 / 被 offerquestgps_main_triggered
acceptedChemdah 接取成功questgps_main_accepted
abandoned玩家放弃任务questgps_main_abandoned
completed任务完成questgps_main_completed
track-changed开始/取消导航追踪questgps_track_changed
字段类型说明
enabledboolean是否启用该级导航坐标
point.worldstring世界名
point.x / y / zdouble坐标
point.titlestringwaypoint 罗盘显示标题
point.style-idstringwaypoint 样式 ID,对应 ArcartX waypoint/*.yml;空则用全局 waypoint-style-id
point.map-labelstring同步到 Map 模块时的标签

tasks.<id>.navigation(子目标级)

子目标导航坐标直接写在 navigation,不需要再包一层 point

字段类型说明
enabledboolean是否启用该子目标导航坐标
worldstring世界名
x / y / zdouble坐标
titlestringwaypoint 罗盘显示标题
style-idstringwaypoint 样式 ID;空则用全局 waypoint-style-id
map-labelstring同步到 Map 模块时的标签

navigation.mode: hybrid 时 Chemdah tracker 优先;无 tracker 时使用上述 overlay 坐标。子目标 tasks."0".navigation 覆盖任务级坐标。

tasks.<id> 子目标

字段类型说明
sort-orderint子目标在 UI 中的排序
display-textstringoverlay 目标文案(presentation.source=overlay 时)
descriptionlistoverlay 目标说明行
navigationmap该子目标独立导航点(字段见上表「子目标级」,直接写 world/x/y/z,无需 point

任务 overlay 示例

yaml
# data/questgps/quests/mainline.yml
example_mainline_quest:
  enabled: true
  sort-order: 10
  allow-abandon: false
  required-mainline: []
  hooks:
    triggered:
      - "questgps_main_triggered"
    accepted:
      - "questgps_main_accepted"
    completed:
      - "questgps_main_completed"
    track-changed:
      - "questgps_track_changed"
  navigation:
    enabled: true
    point:
      world: "world"
      x: 0
      y: 80
      z: 0
      title: "初入岛屿"
      style-id: "default"
      map-label: "主线目标"
  tasks:
    "0":
      sort-order: 10
      navigation:
        world: "world"
        x: 12
        y: 80
        z: -8
        title: "与长老对话"
        style-id: "default"
        map-label: "任务目标"

奖励预览配置详解

rewards 段只影响任务菜单中的奖励预览图标与文案,不会在接取/完成时自动发放物品。实际奖励仍由 Chemdah 任务模板执行。

展示数据来源由 presentation.source(或单任务 presentation.source)控制:

行为
chemdah(默认)奖励预览读 Chemdah QUEST_COMPLETED agent / reward 列表
overlay仅使用 overlay rewards 列表

支持的 type

type依赖插件 / 说明主要 ID 字段
neigeitemsNeigeItemsneige-item-id
mythicmobs / mythicitemsMythicMobsmythic-item-id(别名:mythicmobs-item-iditem-id
overtureOvertureoverture-item-id(别名:overture-id
mmoitemsMMOItemstype-id + id(别名:mmo-type/mmoitems-typemmo-id/mmoitems-id
material / itemstack原版 Bukkit 材质material(如 DIAMOND
titleTitle 模块(可选)title-id
text纯文本行,无物品图标

通用可选字段

字段说明
amount数量,默认 1
display-name预览标题(覆盖物品/称号默认名)
text预览描述副文案
lore物品 lore 行(material / 物品库类型可用)
fallback-material物品库未安装或 ID 无效时,用该原版材质占位显示

各物品库完整示例

yaml
rewards:
  # NeigeItems
  - type: neigeitems
    neige-item-id: "starter_sword"
    amount: 1
    display-name: "&6新手长剑"
    text: "&7NeigeItems 示例武器"
    lore:
      - "&7完成任务后可从 Chemdah 获得"
    fallback-material: "IRON_SWORD"

  # MythicMobs(mythicitems 与 mythicmobs 等价)
  - type: mythicmobs
    mythic-item-id: "starter_relic"
    amount: 1
    display-name: "&d远古遗物"
    fallback-material: "AMETHYST_SHARD"
  # 等价写法:
  # - type: mythicitems
  #   item-id: "starter_relic"

  # Overture
  - type: overture
    overture-item-id: "treasure_chest"
    amount: 2
    display-name: "&6宝箱"
    text: "&7Overture 自定义物品"
    fallback-material: "CHEST"

  # MMOItems(type + id 双字段)
  - type: mmoitems
    type-id: "SWORD"
    id: "STEEL_LONGSWORD"
    amount: 1
    display-name: "&b钢之长剑"
    fallback-material: "IRON_SWORD"
  # 等价字段名:
  #   mmo-type / mmoitems-type  → type-id
  #   mmo-id / mmoitems-id      → id

  # 原版材质(material 与 itemstack 等价)
  - type: material
    material: "GOLD_INGOT"
    amount: 16
    display-name: "&e金锭"
    lore:
      - "&7基础货币奖励"

  # Title 称号预览(需 Title 模块;通过 TitleConfigQueryable 读取显示名/品质)
  - type: title
    title-id: "newcomer"
    duration: "permanent"          # permanent 显示「永久」;其他值显示「限时 xxx」
    display-name: "&e称号: 初来乍到"
    text: "&7完成主线后解锁"

  # 纯文本(无物品 JSON,适合经验/货币等 Chemdah 脚本奖励说明)
  - type: text
    display-name: "&a经验 +500"
    text: "&7实际数值由 Chemdah agent 发放"
    amount: 1

物品库未安装时

对应 type 会尝试用 fallback-material 生成占位图标;若仍失败,则退化为 text 样式并打服务端 fine 日志。

与 Chemdah 奖励的关系

overlay rewards 不会替代 Chemdah 发奖逻辑。请保证 Chemdah 任务模板内已配置真实 give / item agent;此处仅用于让玩家在菜单里提前看到奖励外观。

支线与奇遇示例

yaml
# data/questgps/quests/side.yml
example_side_quest:
  enabled: false
  sort-order: 100
  allow-abandon: true
  required-mainline:
    - "example_mainline_quest"

# data/questgps/quests/encounter.yml
example_encounter_quest:
  enabled: false
  sort-order: 200
  allow-abandon: true

命令

管理命令(权限:arcartxsuite.admin

命令说明
/axs questgps help查看子命令帮助(无参数时默认执行)
/axs questgps status查看任务导航模块状态和已加载任务数
/axs questgps reload重载任务导航配置和 UI
/axs questgps open <玩家>为在线玩家打开任务导航界面

玩家命令(权限:arcartxsuite.questgps.use

命令说明
/questgps/questgps open打开任务导航菜单
/questgps cleartrack清除当前追踪,关闭所有导航可视化

导航系统

导航触发流程

玩家在菜单中点击"追踪任务"或"追踪目标"

  ├─① Waypoint 罗盘 — ArcartXWaypointBridge.addWaypoint()
  │   客户端显示罗盘方向指示 + 距离数字

  ├─② 路径寻路 + 3D 模型标记
  │   异步计算路径 → 沿路径采样点生成多个 ArmorStand 私有实体
  │   + ArcartXNetworkSender 点对点发包附加模型 + 动画
  │   + 玩家移动时动态更新路径,实体复用池避免重复创建

  ├─③ 任务指引 HUD — bridge.openUi() + sendPacket()
  │   左侧浮窗显示任务名、目标列表、进度条、坐标

  └─④ 地图目标同步 — MapNavigable.upsertExternalTarget()
      (如果 Map 模块可用)

玩家点击"取消追踪"或 HUD 上的 ✕

  ├─① removeWaypoint()
  ├─② hideMarker() → 清除所有路径标记实体
  ├─③ closeGuide()
  └─④ clearExternalTargets()

Waypoint 罗盘

ArcartX 客户端内置的路点系统,在玩家屏幕上方/指定位置显示方向箭头和距离。样式由 ArcartX 插件的 waypoint/*.yml 配置控制:

  • 指南针指针方向
  • 距离数字格式
  • 指示器图标和颜色
  • 到达范围和淡出动画

配置 waypoint-style-id 即可切换不同的路点显示风格。

3D 模型标记 + 路径寻路

从玩家到导航目标沿地面生成多个自定义 3D 模型标记(如箭头、光柱、水晶等),形成一条可视化导航路径。技术实现:

  1. 路径寻路 — 异步计算从玩家到目标的地面路径,智能绕开固体障碍物、液体、危险方块(仙人掌、岩浆块、营火等),支持 ±1 格台阶
  2. 路径采样 — 简化原始路径后按配置间距采样,生成最终标记点序列
  3. Adyeshach 私有临时实体 — 每个标记点生成一个不可见的 ArmorStand(Marker 模式,无碰撞体积),仅对追踪玩家可见
  4. ArcartX 模型附加 — 通过 ArcartXNetworkSender 点对点发包为每个实体附加自定义模型 + 动画
  5. 实体朝向 — 每个标记实体面向下一个路径点,最后一个面向目标终点
  6. 动态更新 — 玩家移动时异步重新计算路径,现有实体通过传送复用,多余实体移除、不足时创建新实体

特点

  • 真实路径寻路,智能绕开障碍物和危险方块
  • 异步计算 + 主线程实体操作,不卡服
  • 实体复用池,减少创建/销毁开销
  • 支持任意 ArcartX 模型(blockbench 导出等)
  • 支持自定义动画和状态
  • 单人可见(不影响其他玩家)

任务指引 HUD

追踪任务时自动打开的左侧竖排浮窗(ArcartX-Suite:questgps_guide),内容包括:

  • 任务名 — 当前追踪的任务名称
  • 进度条 — 绿色点阵进度条 ■■■□□ 显示完成比例
  • 目标列表 — 最多 3 条任务目标, 已完成 / 进行中
  • 导航坐标 — 目标位置的世界名和 XYZ 坐标
  • 关闭按钮 — 点击 ✕ 取消追踪

视觉风格:深色半透明背景 + 左侧金色强调竖条 + 首次打开滑入动画。

UI / Packet

菜单 UI 发包结构对齐 Title 模块:Map + entryKey 模板列表,分类 Tab 由服务端 categories Map 动态驱动(不再硬编码主线/支线/奇遇)。

功能UI ID说明
任务菜单ArcartX-Suite:questgps_menu动态分类 Tab、任务列表、详情、奖励预览、接取/放弃/追踪
任务指引 HUDArcartX-Suite:questgps_guide追踪中显示任务目标(最多 3 条)与导航坐标
字段说明
packetId包标识(AXS_QUESTGPS
categoriesMap<categoryId, {id, name, sort_order, selected}>,驱动分类 Tab
pagesMap<pageId, {id, name, count, selected}>(available / active / completed)
questsMap<questId, {id, name, summary, state, trackable, selected}>,当前页任务列表
tasksMap<taskId, {id, text, status, completed, trackable, tracked}>,选中任务的目标
rewardsMap<rewardId, {id, title, description, type, amount, ...}>,选中任务的奖励预览
categoryId / categoryName当前分类
pageId / pageName当前页签
availableCount / activeCount / completedCount各页签任务数量
selectedQuestId / selectedQuestName / …选中任务详情摘要
canAccept / canAbandon / canTrackQuest / canTrackTask / canClearTrack操作按钮可见性
navigationReady导航子系统是否就绪

客户端 packetHandler 收到包后,为模板控件绑定 entryKey(与 Title 菜单相同模式),再渲染列表。

Guide Packet 主要字段

字段说明
active是否有活跃追踪
questName追踪的任务名称
completedCount / totalCount / progressText目标完成进度
tasksMap<taskId, {id, text, completed, status}>,最多展示 3 条
taskCount当前 tasks Map 条目数
hasNav / navWorld / navX / navY / navZ导航目标坐标

EventPacket 联动

QuestGPS 的 hooks 字段向 EventPacket 发出 command-signal,并通过 QuestGpsNavigable capability 接收来自 EventPacket 的任务推送动作:

动作类型参数说明
questgps.offerquest-idopen-menu向玩家推送任务并可选打开菜单
questgps.acceptquest-id直接为玩家接取任务
questgps.trackquest-idtask-id为玩家开始追踪指定任务;带 task-id 时追踪具体子目标,否则追踪整条任务
questgps.open直接为玩家打开任务菜单

上述动作的 quest-id / task-id 参数均兼容驼峰写法 questId / taskIdquestgps.offeropen-menu 默认为 true

EventPacket 配置示例(data/eventpacket/rules/onboarding.yml):

yaml
first_join_questgps:
  enabled: true
  trigger: command-signal
  signal: "first_register"
  repeatable: false
  actions:
    - type: questgps.offer
      quest-id: "example_mainline_quest"
      open-menu: true

基于 GPL-3.0 许可发布