排错与测试
这一页按实际测试顺序排。先确定插件启动,再看队伍,再看副本,再看跨服和客户端 UI。
启动后先看三条命令
/gdt status
/gdt providers
/gdt help/gdt status 看总状态。/gdt providers 看副本适配器。/gdt help 看命令是否注册正常。
插件没有启用
先看控制台完整报错,不要只看最后一行。
常见方向:
| 报错 | 处理 |
|---|---|
| 找不到 GTCore | 安装 GTCore,确认先于 GTDungeonTeam 启用 |
| 找不到 Kotlin 类 | 使用新版构建包,确认没有被错误混淆或删库 |
1.12 出现 InventoryView 类/接口错误 | 使用兼容构建,GUI 不应直调高版本字节码 |
| 依赖插件红色 | 先修依赖插件 |
| Java 版本不对 | 1.12 常用 Java 8,高版本常用 Java 17 |
/gdt 能打开,但界面是原版 GUI
说明客户端 UI 没打开成功,插件回到了原版 GUI。
检查:
ui:
default: paiui
prefer-client-ui: true再看:
plugins/GTDungeonTeam/client-ui/providers.yml确认对应 provider 的 enabled 是 true。
PaiUI 页面没有更新
检查源文件:
plugins/GTDungeonTeam/client-ui/paiui/webgui/gtdungeonteam/执行:
/gdt reload如果还是旧页面,检查是否同步到了 PaiUI 目录:
plugins/PaiDaXingPlugins/advanced/WebGui/layout/gtdungeonteam/
plugins/PaiUI/advanced/WebGui/layout/gtdungeonteam/看配置:
providers:
paiui:
mirror-webgui: true
mirror-overwrite-newer-source: true如果你直接改 PaiUI 目标目录,而 GTDungeonTeam 源文件没改,重载时可能被覆盖。
PaiUI 点击无效
先看 client-ui/providers.yml:
providers:
paiui:
action-route: "gtdungeonteam.action"
data-route: "gtdungeonteam.data"
sync-on-open: true再看页面是否引用:
ui.js
ui.css点击不生效通常是:
- 页面没有发 action-route。
- PaiUI 服务端桥没有启动。
- 页面缓存没清。
- 改的是目标目录,重载又被源目录覆盖。
- 玩家客户端没有对应 PaiUI 能力。
原版 GUI 物品能拿出来
这是严重问题。正常情况下,插件自己的 GUI 点击和拖拽都会被取消。
排查:
- 确认用的是最新构建。
- 看控制台是否有
InventoryClickEvent报错。 - 如果报错里有
InventoryView,说明版本兼容包不对。 - 如果没有报错,看是否是其他插件在高优先级改了事件。
- 临时关掉其他背包插件测试。
没有副本显示
检查:
plugins/GTDungeonTeam/dungeons/至少要有一个 .yml,并且有:
dungeon:
id: forest
provider: command重载:
/gdt reload
/gdt providers
/gdt dungeon list如果 /gdt providers 显示目标适配器不可用,先检查副本插件是否启用。
队长不能选择副本
如果副本配置了入口限制:
entry:
require-open-command: true队长必须先从入口执行:
/gdt dungeon open 副本ID不能直接从列表里跳过详情选择。
开始副本失败
按提示逐条查:
| 提示 | 处理 |
|---|---|
| 请先创建或加入队伍 | 玩家还没有队伍 |
| 只有队长可以开始副本 | 换队长操作 |
| 请先选择副本 | 先打开副本详情并选择 |
| 未找到副本配置 | dungeons/ 里没有该 ID |
| 人数不足/过多 | 调整队伍人数或副本人数限制 |
| 未满足进入条件 | 检查 PAPI 和 requirements.list |
| 体力不足 | 检查体力配置和玩家体力 |
| 经济扣除失败 | 检查 GTCore 经济或 Vault |
| 适配器拒绝启动 | 看对应副本插件自己的配置和控制台 |
体力显示 0/0
检查:
stamina:
enabled: true
max: 120
initial: 120如果用了公式:
max: "{calc:120+%player_level%*2}"确认 %player_level% 能被 PlaceholderAPI 正常解析。PAPI 返回空或非数字时,公式可能算成 0。
入队条件不生效
先看模板:
team:
join-requirements:
templates:
power:
name: "战斗力"
placeholder: "%player_zhandouli%"
default-operator: ">="再让队长查看模板:
/gdt team req templates设置条件:
/gdt team req add power >= 50000如果申请者明明满足但失败,先用 PAPI 测申请者自己的变量值。
掉落分配不生效
检查:
loot:
enabled: true
mode: random
require-team-toggle: true
require-active-run: false如果 require-team-toggle: true,队长还要执行:
/gdt team loot on如果 require-active-run: true,普通野外组队不会分配,必须在副本运行状态里。
如果物品 Lore 含黑名单关键词,也不会分配:
blacklist:
lore-keywords:
- "绑定"竞拍不触发
检查:
loot:
auction:
enabled: true
require-active-run: true
rules:
rare:
include:
lore-keywords:
- "史诗"常见原因:
enabled没开。require-active-run: true,但当前不在副本中。- 物品没有命中
names、lore-keywords、nbt-keywords、materials。 - 掉落分配本身没开启。
- 队伍没有成员或候选成员都不在线。
竞拍扣款失败
金币模式先看是否有 GTCore 经济或 Vault。
自定义货币先看:
balance: "%playerpoints_points%"
take-actions:
- "[console] points take <player> <amount>"
give-actions:
- "[console] points give <player> <amount>"检查:
balance返回的是数字。- 扣款命令能在控制台手动执行。
<amount>不要带中文单位。- 货币插件命令权限正常。
跨服不启动
先查:
/gdt status确认:
- 存储不是各服独立 local。
- 所有子服用同一套 MySQL 或 Redis。
proxy.enabled: true。proxy.type正确。server-id和代理端服务器名一致。- 副本文件
target-server写的是目标副本服。 - 目标服也安装 GTDungeonTeam。
- 目标服
/gdt providers里对应适配器可用。
重载没生效
/gdt reload 会读取大部分配置,但下面情况建议重启:
- 刚改数据库连接。
- 刚改代理类型。
- 刚安装或卸载副本插件。
- 刚安装或卸载客户端 UI 插件。
- 修改了服务端核心或 Java。
客户端 UI 文件改完后,除了 /gdt reload,玩家也要关闭并重新打开界面。
建议的上线前测试表
| 项目 | 结果 |
|---|---|
/gdt 能打开 | |
| 创建队伍正常 | |
| 邀请、接受正常 | |
| 公开房间能看到队伍 | |
| 入队申请能同意和拒绝 | |
| 队伍名和介绍能修改 | |
| 入队条件能拦住不满足玩家 | |
| 副本详情页能打开 | |
| 副本展示掉落显示正确 | |
| 开始副本能扣体力 | |
| 开始副本能扣金币 | |
| 开始副本能扣门票 | |
| 掉落分配不会分配黑名单物品 | |
| 竞拍物品能进入竞拍池 | |
| 出价会刷新倒计时 | |
| 竞拍胜利后能扣款、给物品、分红 | |
| 跨服能把队伍送到目标服 | |
| 目标服能自动启动副本 | |
| 结算页能显示结果 |
