Skip to content

诊断码

导航:文档首页 · 目录 · 诊断与排错 · FAQ · 术语表 · 模块系统

本页汇总 QinhCoreLib(QCL)各子系统的状态码与错误码,按子系统分组。每个码给出含义、触发场景与处理建议。

这些码会出现在三个地方:

出现位置谁产生怎么看到
/qcl status / /qcl status detail 的诊断行各诊断器(DiagnosticResult.code游戏内或控制台执行命令
开发者 API 返回值ResolveResult.code(物品)、ScriptExecutionResult.code(脚本)、EconomyTransactionResult.code(经济)代码里读取返回对象
控制台日志启动探针 / 各桥服务端日志文件

🧱 两层状态:启用 vs 可用

读码之前先理解 QCL 对「模块」和「桥」区分的两层状态/qcl status detail 会同时显示):

维度字段含义由什么决定
启用 / 未启用enabled这个模块/桥是否被开启config.ymlmodules.* 开关 + load()/enable() 是否成功
可用 / 不可用available运行期是否真的能工作对应软依赖是否安装、运行时是否就绪

一个桥可以「启用但不可用」(开关开着,但对应插件没装 → NO_HOOK),也可以「未启用」(被 modules.* 关掉)。排错时先分清是哪一层。详见 模块系统


❤️ 健康码(HealthReport / 桥状态)

HealthReport.code,也是 /qcl status 里「健康码 / 模块健康 / 各桥健康」显示的值。

含义触发场景处理建议
OK正常模块/桥已挂钩并正常运行无需处理
NO_HOOK无软依赖挂钩对应外部插件未安装,桥按设计跳过属正常降级;需要该能力时安装对应插件
DEGRADED降级(可恢复)装了对应插件但运行受损(API 变动、版本不匹配等)message / suggestion,修复后 /qcl reload 或重启

⚠️ NO_HOOK 不是错误,是「没装软依赖」的正常状态;只有 DEGRADED 才需要关注。一个全新、未装任何软依赖的服务器,/qcl status 大量显示 NO_HOOK 是完全正常的。


📦 物品解析码(ItemSource)

ItemSourceManager.parseItemReference 的物品引用解析返回,也是开发者 API ItemManagerAPI.resolve(...)ResolveResult.code

含义触发场景处理建议
OK解析成功引用有效,物品已构建无需处理
PARSE_FAILED引用串解析失败引用格式错误(空串、非法分隔等)核对引用格式,见 物品源引用
MATERIAL_NOT_FOUND原版材质未找到vanilla: 材质名拼写错或该版本不存在检查 Material 枚举名(全大写)拼写
SOURCE_NOT_FOUND物品源未找到引用所指的源未注册(对应插件没装/没启用)安装对应物品源插件,或改用其它源
MODULE_BUILD_FAILED模块构建失败物品源模块构建物品时抛错查日志,检查该源自身配置是否有效
ITEM_NOT_FOUND物品未找到该源中不存在此 ID核对物品 ID 是否真实存在于对应源

🔎 /qcl status 末尾的「物品引用诊断」用 vanilla:stone自检——它返回 OK 表示物品源解析链路本身正常;某个具体引用失败要单独用 ItemManagerAPI.diagnose(ref, player) 排查。详见 物品 API


📜 脚本错误码(JavaScript / GraalVM)

ScriptExecutionResult.code,脚本执行(GUI 条件/动作、API 调用)返回。

含义触发场景处理建议
SCRIPT_UNAVAILABLE脚本子系统不可用GraalJS 运行时缺失(多为纯 Spigot 没拉到库),或 javascript.enabled=false用 Paper/Purpur;检查 config javascript.enabled
SCRIPT_PARSE_FAILED引用串解析失败脚本引用格式错(非 命名空间:路径.js[:函数名]修正引用格式
SCRIPT_NOT_FOUND脚本文件未找到指定脚本文件不存在核对脚本所在目录与路径
SCRIPT_FUNCTION_MISSING函数缺失脚本中没有目标函数检查函数名,或 config javascript.default-function
SCRIPT_FAILED执行失败脚本运行期抛异常javascript.debug.print-stacktrace 看堆栈

详见 脚本入门脚本 API


💰 经济码(Economy)

EconomyTransactionResult.code,经济操作(查/存/取/设)返回。

含义触发场景处理建议
OK成功经济操作完成无需处理
CURRENCY_REQUIRED需要指定货币用 ExcellentEconomy 但未指定货币且无默认economy.default-currency,或调用/动作里显式传货币
INSUFFICIENT_FUNDS余额不足玩家资金不够(多见于 take_money正常业务结果,按需提示玩家
NO_PROVIDER无经济提供方未安装任何经济插件,或指定的 provider 未注册安装经济插件并配 economy.default-provider

EconomyDiagnostics(经济诊断)

/qcl status 的经济桥诊断与开发者诊断 API 使用。

含义触发场景处理建议
ECONOMY_UNAVAILABLE经济整体不可用经济子系统无任何可用后端检查 Vault/ExcellentEconomy/PlayerPoints 是否安装并启用
ECONOMY_PROVIDER_MISSING缺少提供方指定的 provider 未注册核对 economy.default-provider,或确认该后端插件已装
ECONOMY_CURRENCY_MISSING缺少货币指定/默认货币在 ExcellentEconomy 中不存在economy.default-currency 或核对货币 ID(money/silver/gold…)

详见 经济动作经济插件经济 API


🧰 DiagnosticResult 字段(开发者)

所有诊断结果统一用 DiagnosticResult<T> 容器承载,理解字段有助于读懂状态:

字段类型含义
successBoolean本次诊断是否成功
valueT?诊断附带的数据(如解析出的物品、桥状态列表)
codeString状态码(即上表各码)
messageString人类可读消息
sourceString诊断来源(模块/桥名)
recoverableBoolean是否可恢复(DEGRADED 类一般 true)
suggestionString修复建议
traceIdString追踪 ID,便于串联日志

构造用伴生方法 DiagnosticResult.ok(...) / DiagnosticResult.fail(...)。详见 模块系统 · 诊断模型


🕹️ 相关命令

命令别名权限说明
/qcl statusprobeqcl.status状态摘要
/qcl status detailfullqcl.status完整状态(逐模块/逐桥 + 脚本扩展行)
/qcl reloadrlqcl.admin重载配置/经济/脚本/外部物品模块/GUI

继续阅读