反崩溃

反崩溃

只是一个针对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 在这些故障发生点进行操作,能够捕获并抑制许多非关键异常,防止它们变成致命问题。

目标不是隐藏模组错误——而是让你的服务器持续运行足够长时间,以便你能够识别并修复问题。

安装方法

  1. 下载 AntiCrashy 的 jar 文件。
  2. 将其放入服务器的 mods/ 文件夹中。
  3. 启动服务器。

无需客户端安装。

系统要求

  • 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)