
反崩溃
只是一个针对Neoforge的崩溃修复模组
AntiCrashy
一个服务端 NeoForge 模组,适用于 Minecraft 1.21.1,可在模组出现异常时帮助你的服务器保持在线。
AntiCrashy 是什么?
Minecraft 服务器并不总是因为灾难性故障而崩溃。有时只需一个存在缺陷的模组在错误位置抛出异常就足以导致问题。AntiCrashy 在这些故障与你的服务器之间充当安全层,在常见的崩溃场景发生前将其捕获。
当某个模组尝试加载仅客户端类或在实体刻处理中失败时,AntiCrashy 不会让你面对崩溃的服务器;而是记录问题、收集诊断信息,并尽可能让服务器继续运行。
它无法神奇地修复损坏的模组,但可以防止许多此类故障导致服务器下线。
功能特性
事件异常保护
拦截 NeoForge 的 EventBus 中由模组事件处理器抛出的异常,防止它们变成致命的服务器崩溃。
这特别有助于解决以下问题:
- 在专用服务器上加载仅客户端类
- RuntimeDistCleaner 异常
- 通常会导致服务器终止的事件处理器故障
实体刻处理保护
将实体刻处理包装在安全层中,使单个损坏的实体或模组刻处理器无法立即导致整个服务器崩溃。
看门狗挂起检测
在原版看门狗介入之前监控服务器刻处理时间并检测挂起。
当检测到挂起时,AntiCrashy 会:
- 跟踪逐级升级的警告等级
- 自动捕获线程转储
- 记录诊断信息供后续分析
线程干预
如果服务器陷入僵局,AntiCrashy 会尝试识别阻塞线程并采取纠正措施。
根据配置,它可以:
- 中断有问题的线程
- 延长看门狗超时时间
- 尝试恢复程序
- 在无法恢复时触发受控重启
高级诊断
AntiCrashy 会生成详细的故障排查数据,远超标准 Minecraft 崩溃报告。
诊断内容包括:
- 完整线程转储
- 内存使用统计
- 挂起分析报告
- 锁竞争信息
- 疑似模组参与评分
所有报告写入以下位置:
logs/anticrashy/
玩家通知
可选择在服务器出现严重延迟或执行恢复操作时通知在线玩家。
自动重启支持
包含一个可选的 JVM 关闭钩子,可在任何关闭后自动重新启动服务器,有助于减少停机时间。
为什么需要这个模组
某些模组组合可能触发 Minecraft 和 NeoForge 处理不佳的崩溃。一个常见例子是模组尝试在专用服务器上访问仅客户端类,导致 NeoForge 的 RuntimeDistCleaner 抛出异常。该异常通过 EventBus 传播,最终导致服务器崩溃。
AntiCrashy 在这些故障发生点进行操作,能够捕获并抑制许多非关键异常,防止它们变成致命问题。
目标不是隐藏模组错误——而是让你的服务器持续运行足够长时间,以便你能够识别并修复问题。
安装方法
- 下载 AntiCrashy 的 jar 文件。
- 将其放入服务器的
mods/文件夹中。 - 启动服务器。
无需客户端安装。
系统要求
- NeoForge 1.21.1
- Java 21
配置
AntiCrashy 使用标准的 NeoForge 配置系统。
你可以自定义:
- 挂起检测阈值
- 看门狗响应行为
- 玩家警告消息
- 诊断保留限制
- 自动重启设置
- 单个保护功能
兼容性
AntiCrashy 完全为服务端模组。
玩家无需安装该模组即可加入游戏。
日志与诊断
当 AntiCrashy 检测到崩溃、挂起或恢复事件时,诊断信息会写入:
logs/anticrashy/
如果你正在排查问题,这应该是你首先查看的地方。生成的报告通常能比 Minecraft 默认的崩溃报告更容易识别导致问题的模组、线程或系统资源。
命令
AntiCrashy 包含多个管理命令,用于实时监控服务器健康状态、收集诊断信息以及管理恢复操作。
| 命令 | 描述 |
|---|---|
/anticrashy status |
显示实时服务器状态,包括内存使用、线程数、看门狗状态及已启动的缓解措施。 |
/anticrashy dump |
捕获完整的诊断报告,包括线程转储、内存统计和服务器状态信息。 |
/anticrashy interrupt <thread> |
按名称中断特定线程。用于在服务器挂起期间处理阻塞或失控线程。 |
/anticrashy config <key> <value> |
更新配置值,无需重启服务器。 |
/anticrashy restart [delay] |
安排安全重启服务器。可指定可选的延迟时间(以秒为单位)。 |
/anticrashy cancel |
取消所有待处理的 AntiCrashy 操作,包括计划的重启和自动恢复操作。 |
权限
默认情况下,所有 AntiCrashy 命令需要操作员权限(OP 等级 4),专供服务器管理员使用。
(P.S: 感谢 Gattonori 给了我这个制作模组的想法 <3)
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。