排错与测试
GTSkillView 涉及 GTCore、外部技能插件、客户端 UI、资源包、权限、PAPI 和公式。排错时先把链路拆开,不要同时改多个文件。
启动后插件停止
控制台出现:
GTSkillView 未通过 GTCore 统一授权,插件已停止。处理:
- 检查 GTCore 是否加载成功。
- 检查 GTCore 授权配置是否已按购买说明填写。
- 仍无法启动时联系作者 QQ
1415375222。
/gtsv open 打不开界面
检查:
- 玩家是否有
gtskillview.gui。 ui.prefer-client-ui是否为true。- 当前 UI 插件是否安装并加载。
client-ui/providers.yml中对应 provider 是否启用。fallback-to-vanilla是否开启。- 控制台是否有客户端 UI 注册报错。
快速判断原版 GUI 是否正常:
ui:
default: vanilla
prefer-client-ui: false
fallback-to-vanilla: true重载后执行:
/gtsv open原版 GUI 正常,客户端 UI 异常时,继续查 PaiUI、AX、KongCore 或 DragonCore。
技能不显示
检查 skills.yml:
skills.<id>.enabled是否为true。group是否存在。visible.permissions是否满足。visible.conditions是否成立。- YAML 缩进是否正确。
/gtsv reload是否成功。
先把可见条件清空测试:
visible:
permissions: []
conditions: []如果清空后能显示,问题在权限或条件。
学不了技能
检查:
- 技能点是否足够。
learn.conditions是否成立。learn.permissions是否满足。learn.costs.money是否足够。learn.costs.items是否满足。- 技能是否已经达到
max-level。
临时给技能点:
/gtsv points set 玩家名 20临时降低学习条件:
learn:
conditions: []
costs:
points: 0
money: 0
items: []技能释放失败
按顺序查:
- 玩家是否已经学习技能。
- 技能是否绑定到槽位。
/gtsv cast 技能ID是否能释放。/gtsv cast 槽位是否能释放。- MP 是否足够。
- 冷却是否结束。
conditions是否成立。bind.provider是否正确。bind.id是否真实存在。- 外部技能插件是否加载。
MythicMobs 技能失败:
bind:
provider: mythicmobs
id: "ThunderSlash"确认 MythicMobs 中有同名技能 ThunderSlash。大小写和空格按 MythicMobs 实际配置。
SkillAPI 技能失败:
bind:
provider: skillapi
id: "Blink Step"确认 SkillAPI 中技能名一致。
MP 一直显示在聊天栏
GTSkillView 默认不在聊天栏刷 MP。先检查:
mana:
actionbar:
enabled: false如果聊天栏仍刷 MP:
- 确认服务器加载的是当前版本。
- 检查是否有旧版插件还在
plugins中。 - 检查其他插件是否也在发送 MP 文本。
- 检查客户端 UI 是否把调试文本发到聊天。
AX 报 Top level is not a Map
常见日志:
Cannot load configuration from stream
Top level is not a Map.含义:AX 正在把一段不是 YAML Map 的内容当 UI 配置解析。
检查:
- 使用当前版本 GTSkillView。
- 覆盖或删除旧的
plugins/GTSkillView/client-ui/ax/main.yml。 - 确认
client-ui/ax/main.yml顶层是ui:和controls:。 - 不要把文件路径字符串当成 AX UI YAML 内容。
更新插件后旧模板不会自动覆盖。测试新模板时先备份旧文件,再覆盖:
plugins/GTSkillView/client-ui/ax/main.yml
plugins/GTSkillView/client-ui/ax/hud.ymlAX 左键攻击触发技能
检查:
release.vanilla.require-sneak-for-system是否为true。release.vanilla.combos是否写了普通LEFT_LEFT、RIGHT_RIGHT。- AX HUD 是否用了点击事件释放技能。
- AX key_bind 是否只监听
R/T/Z/X/C等明确按键。 - AX PACKET 标识是否为
gtskillview或gtskillview:action。
AX 按键应走:
plugins/ArcartX/key_bind/simple_key/GTSkillView.yml不要把普通左键攻击当技能键。
AX 按键无效
检查:
providers.yml -> providers.ax.enabled是否为true。providers.ax.mirror-keybind是否为true。- 是否生成
plugins/ArcartX/key_bind/simple_key/GTSkillView.yml。 - 文件中
keys是否是当前要监听的键。 trigger是否执行/gtsv key SLOT_x ax。/gtsv key SLOT_1 ax是否能释放。
默认 AX 按键文件:
GTSkillView_SLOT_1:
keys:
- "R"
trigger:
- "让玩家发送消息{message = /gtsv key SLOT_1 ax}"如果命令能释放,按键不能释放,问题在 AX key_bind 或客户端配置。
AX HUD 挡住鼠标
检查 AX HUD:
ui:
isHud: "true"
defaultOpen: "true"
background: false
through: "true"HUD 文件应是:
client-ui/ax/hud.yml主界面文件是:
client-ui/ax/main.yml不要把主界面当 HUD 打开。主界面有交互区域,会接管鼠标。
PaiUI 按键无效
检查:
providers.paiui.mirror-keyconfig是否为true。plugins/PaiDaXingPlugins/advanced/KeyConfig/KeyConfig.yml是否有 GTSkillView 键。- 旧同名键是否占用了当前按键。
- 命令是否为
/gtsv key SLOT_x paiui。 /gtsv key SLOT_1 paiui是否能释放。
KeyConfig 示例:
R:
client: true
name: "GTSkillView 技能槽 1"
cooldown: 2
commands:
- "[op]gtsv key SLOT_1 paiui"mirror-keyconfig-overwrite: false 时不会覆盖已有同名键。需要换键时,先处理 PaiUI KeyConfig 里的旧键。
PaiUI 图标不显示
检查:
skills.yml是否写了texture。- 客户端资源包是否有对应图片。
- 路径是否一致。
- PaiUI HUD 是否启用动态物品。
- 主界面和 HUD 是否使用同一套图标逻辑。
技能图片:
texture: "textures/gtskillview/thunder_slash.png"普通 HUD 优先用 texture,减少动态物品刷新。
DragonCore 或 KongCore 不生效
检查:
- 对应客户端插件是否加载。
providers.yml中对应 provider 是否启用。variable-prefix是否与模板变量一致。- 模板是否回传
key SLOT_x。 /gtsv key SLOT_1 dragoncore或/gtsv key SLOT_1 kongcore是否成功。
当前默认模板保留按钮点击。物理按键监听按对应 UI 引擎自己的按键系统配置,不在模板里猜。
更新后还是旧界面
原因:默认资源不会覆盖已经存在的文件。
处理:
- 停服。
- 备份:
plugins/GTSkillView/client-ui/- 删除需要刷新的旧模板。
- 启动服务器重新生成。
- 把自定义内容重新合并回新模板。
只更新 AX:
plugins/GTSkillView/client-ui/ax/main.yml
plugins/GTSkillView/client-ui/ax/hud.yml只更新 PaiUI:
plugins/GTSkillView/client-ui/paiui/webgui/gtskillview/
plugins/GTSkillView/client-ui/paiui/KeyConfig.yml性能排查
HUD 卡顿:
performance.hud-sync-interval-ticks不要低于 5。- 不要在客户端页面每帧请求服务端。
- 动态物品不要每帧刷新。
- 冷却遮罩用服务端下发的百分比,不要全量重建 DOM。
- AX/PaiUI HUD 不要放大面积动态模糊或持续动画。
技能释放卡顿:
- 检查 MythicMobs 技能本身是否耗时。
- 检查
actions是否执行大量命令。 - 检查 PAPI 变量是否过多。
- 检查外部物品消耗是否每次扫描大量配置。
最小复现流程
排查任何问题前先做最小链路:
- 使用原版 GUI:
ui:
default: vanilla
prefer-client-ui: false- 使用一个没有条件、0 消耗、0 冷却的技能。
- 用
/gtsv cast 技能ID测试。 - 用
/gtsv bind 1 技能ID绑定。 - 用
/gtsv cast 1测试。 - 再接客户端 UI。
- 最后接真实消耗、条件、权限和资源包。
这样可以分清问题在服务端技能逻辑、外部技能插件、客户端 UI,还是资源文件。
