- 版权类型
- 原创
- 插件中文名称
- 白桦林的插件报错显示面板
- 插件英文名称
- BirchError
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Purpur
- Leaves
- 其他核心
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 26.x
- 1.21
- 1.20
[MD]
# 🌲 BirchError 错误分析面板
> 专为 Minecraft 1.20.1+ 服主打造的智能错误拦截与溯源工具
告别枯燥的日志滚动!`BirchError` 会在服务器启动时自动注册全局日志监听器,并在 GUI 面板或控制台中实时拦截 `SEVERE` 级别异常。内置智能分析引擎,自动定位报错插件、提取文件路径、诊断错误原因,并给出针对性的修复建议。让新手服主也能像老手一样快速排查故障。
---
## ✨ 核心特性
| 功能 | 说明 |
|:---|:---|
| **智能溯源分析** | 自动识别问题插件及 `.jar` 绝对路径,内置 10+ 种常见错误诊断模型(版本不兼容、缺依赖、配置损坏、空指针、内存溢出等)。 |
| **独立 GUI 面板** | 深色主题 + 等宽字体 + 中文适配。 |
| **一键修复建议** | 不仅告诉你"哪里错了",更提供"怎么修"的具体步骤(如升级 Java、安装前置、修改配置等)。 |
| **无头模式兼容** | 自动检测服务器环境,Linux/无桌面环境下自动降级为纯控制台模式,绝不崩溃阻塞。 |
---
## 📦 环境要求
- **服务端**:Paper / Spigot / Purpur / Mohist `1.20.1+`
- **Java 版本**:`Java 17` 或更高
- **依赖**:✅ 无(纯 Java 原生实现,无需任何前置插件)
---
## 🚀 安装与使用
1. 将 `BirchError-1.0.0-obf.jar` 放入服务器 `plugins/` 目录。
2. **⚠️ 关键步骤**:为确保插件最先加载并捕获所有错误,请将文件重命名为:
```bash
00_BirchError-obf.jar
[I](Bukkit 默认按字母顺序加载插件,00_ 前缀可保证其最早执行 onLoad())[/I]
3. 启动服务器。首次运行会自动在 plugins/BirchError/ 生成 config.yml。
4. 检查控制台是否输出 BirchError ASCII 横幅,并确认独立窗口是否弹出。
## ⚙️ 配置文件
首次运行后生成 `plugins/BirchError/config.yml`:
```yaml
settings:
# 是否启用独立 GUI 管理面板
enable-panel: true
# 面板窗口标题
panel-title: "BirchError 错误分析面板"
# 是否将分析结果同步输出到控制台日志(方便日志归档)
mirror-to-console: true
# 是否显示详细的错误原因与修复建议
detailed-analysis: true
```
---
## 📊 运行效果示例
当其他插件发生严重异常时,面板/控制台将输出结构化报告:
```text
[14:32:05] ⚠️ 有可能是 MythicLib 出现问题!
└ 文件路径: C:\server\plugins\[MM]MythicLib-1.5.jar
└ 🔴 错误原因: API 版本不匹配/方法不存在
└ 💡 建议: 插件编译时使用的 API 版本与当前服务端不匹配。请检查插件是否支持当前服务端版本(1.20.1)。
────────────────────────────────────────────────────────────────
原始日志: Could not pass event PlayerJoinEvent to MythicLib v1.5
java.lang.NoSuchMethodError: 'void org.bukkit.event.Event.<init>(boolean)'
```
---
## ❓ 常见问题 (FAQ)
| 问题 | 解决方案 |
|:---|:---|
| **启动后没有弹出窗口?** | 1. 检查 `config.yml` 中 `enable-panel: true`<br>2. 若服务器无桌面环境(Linux 终端),请移除启动参数中的 `-Djava.awt.headless=true`,插件会自动降级为控制台模式。 |
| **面板中文显示乱码/错位?** | 已内置字体回退机制。若仍异常,请右键 BAT 窗口 → 属性 → 字体 → 选择 `Consolas` 或 `新宋体`。 |
| **为什么显示"未知插件/核心代码"?** | 错误可能来自服务端底层(Paper/NMS)或未规范注册 Logger 的插件。此时请结合"原始日志"堆栈手动排查,或联系对应插件作者。 |
| **使用 `/reload` 后插件失效?** | 本插件依赖底层日志流,**不支持热重载**。请使用 `/restart` 或重启服务器以确保拦截器正确注册与清理。 |
| **如何查看混淆前的源码报错?** | 构建时会在 `target/mapping.txt` 生成映射表。可使用 ProGuard GUI 或在线工具将混淆后的堆栈还原为原始类名/行号。 |
---
🌲 **BirchError** —— 让每一次报错,都成为排查的起点。
如有功能建议或遇到兼容性问题,欢迎提交 Issue 或 Pull Request!
[/MD]