- 版权类型
- 原创
- 插件中文名称
- 配置医生
- 插件英文名称
- ConfigDoctor
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Folia
- Purpur
- 语言支持
- 中文(简体)
- 前置组件
- 无
- 适配版本(Java)
- 26.x
- 1.21
- 1.20
- 1.19
- 1.18
[MD]
# 🩺 ConfigDoctor —— 配置检查 & 备份恢复 & 报错解读
> **v1.3.0** | 作者 **LittleWo** | 体检只读,改配置只在你亲手敲命令时
## 💡 简介
配置改了半天,插件却一点反应都没有?控制台报了一屏错,堆栈看得头皮发麻?
那大概率是**配置写错了** —— 而插件一声不吭,安静地用回默认值。
ConfigDoctor 拿插件 jar 里的默认配置当尺子,逐键比对服务器上的实际配置;还能解读报错、备份和对比配置。
**🔒 体检全程只读** —— 扫描不写任何文件;备份、恢复、对比也只在你自己敲命令时才动手。
## ⚙️ 功能特性
**🔍 配置体检** —— 对比 jar 默认配置与服务器配置,一眼揪出:
- 键名拼错或旧版残留;
- 类型不匹配;
- **重复键**(同一个键写了两遍,实际生效的不是你改的那一处);
- 直接读不动的配置文件。
支持全量扫描,也可以只查某一个插件。
**💾 备份 / 恢复 / 对比** —— 动配置之前的保命三件套:
- **备份** —— 单个插件或 `all` 全服,只打包 `.yml/.yaml`,递归包含子目录,存成带时间戳的 zip:`backups/<插件名>/<时间戳>.zip`,按插件分目录、按时间排序、永不覆盖;
- **恢复** —— 先列出该插件全部可用备份(新→旧)任你挑;覆盖前还要**二次确认**,并列出即将被覆盖的文件清单;动手前自动把当前配置快照为 `pre-restore-<时间戳>.zip`,手抖也能反悔;还内置 zip-slip 路径穿越防护;
- **对比** —— 逐键比较任意备份与当前配置,标出**改(旧→新)**、**增**、**删**三类变化;聊天窗口先列前 20 处,完整清单写入 `diff-<时间戳>.txt` 报告。
**📜 报错解读** —— 分析 `logs/latest.log`,按出现频率统计错误事件,对常见异常(ClassCastException、NoSuchMethod、NPE、异步违规、数据库锁定等)给出**人话解释**,不用再对着密密麻麻的报错发呆。
**🙈 忽略** —— 两级降噪,各管一摊:`/cfgdoc ignore <通配>` 忽略某类键(如 `dynmap.*`、`*.markers.*`),写入 `ignores.txt`,改完 `/cfgdoc reload` 生效;`ignore-files` 在 `config.yml` 里按相对路径整份跳过(如 `lang/*.yml`、`translations/**`)。跳过了多少份文件,报告里也会写。
**⌨️ Tab 补全** —— 敲命令时按 Tab 直接补全:子命令、要扫描的插件名、能备份的插件、有备份的插件、以及该插件的历史备份文件名。不用再翻 plugins 目录数文件名了。
## 🎮 命令
主命令 `/configdoctor`,别名 `/cfgdoc`,权限 `configdoctor.use`(默认仅 OP)。
| 命令 | 说明 |
| ---------------------------- | ------------------ |
| `/cfgdoc scan [插件名]` | 体检配置,可全量或指定插件 |
| `/cfgdoc errors` | 分析日志报错并生成解释报告 |
| `/cfgdoc backup <插件名\|all>` | 备份配置 |
| `/cfgdoc restore <插件名> [备份]` | 恢复备份,需二次确认 |
| `/cfgdoc diff <插件名> [备份]` | 对比备份与当前配置 |
| `/cfgdoc report` | 重看最近一次扫描结果 |
| `/cfgdoc ignore <通配>` | 忽略某类键,如 `dynmap.*` |
| `/cfgdoc reload` | 重载自身配置与忽略列表 |
## 📝 配置
`plugins/ConfigDoctor/config.yml`:
```yaml
# 扫描时跳过的插件(与对方 plugin.yml 的 name 一致)
exclude-plugins: []
# 整份跳过对比的配置文件,按相对路径通配,如 lang/*.yml
ignore-files: []
# 语言文件里的多余键只提示不告警
locale-lenient: true
# 生成报告文件
report-file: true
# 是否报告「默认有而用户未设置」的键
show-missing: false
# 匿名统计(也可在 plugins/bStats/config.yml 关闭)
bstats: true
```
键级忽略列表另存于 `plugins/ConfigDoctor/ignores.txt`,由命令写入,也可手改后 `/cfgdoc reload`。
## 📁 报告与备份路径
都在 `plugins/ConfigDoctor/` 下,文件名带时间戳,旧报告统统留着:
| 项目 | 路径 |
| ------ | ------------------------------------- |
| 配置体检 | `report-<时间戳>.txt` |
| 日志报错解读 | `errors-<时间戳>.txt` |
| 配置差异对比 | `diff-<时间戳>.txt` |
| 配置备份 | `backups/<插件名>/<时间戳>.zip` |
| 恢复前快照 | `backups/<插件名>/pre-restore-<时间戳>.zip` |
## 🚀 安装
1. 下载 `ConfigDoctor-x.x.x.jar`,丢进 `plugins/`;
2. 重启服务器;
3. 敲一句 `/cfgdoc scan`,看看你的配置有没有埋雷。
首次启动自动生成默认配置,零前置依赖。
## 🧩 兼容性
- **核心**:Paper / Purpur / Spigot 及兼容 Bukkit API 的衍生核心;
- **版本**:1.18.2 ~ 26.x(服务端需 Java 17+);
- **Folia**:支持;
- **前置**:无,单 jar 即用;
- **统计**:内置 bStats,可在配置里关掉。
## 👆 更新
Version 1.3.0
- 新增忽略文件**`ignore-files` 配置**
- **宽松解析,优化检测逻辑**
- 接入**bStats**
- 修复了一些bug
Version 1.2.1
- 首次公开发布
## 📮 反馈
有问题、有误报请联系作者:`block409@foxmail.com`
[/MD]