BetterCrashes
[!INFO] Git Commit:
811ba4c| Updated: 2026-10-01(首次源码通读)
BetterCrashes(modid bettercrashes)是 Minecraft 1.7.10 的
纯客户端 coremod(Mixin 实现),是 VanillaFix 崩溃处理功能的 1.7.10 移植
(代码版权 MIT,见各文件头部注释)。
内容统计:0 方块、0 物品、0 实体、0 配方、0 维度、0 TileEntity。
命名与注册约定(审计要点)
- modid =
bettercrashes(BetterCrashes.java:14public static final String MODID = "bettercrashes")。 ⚠️mcmod.info写的是构建期占位符"modid": "${modId}"; 真实值另有第二处声明在gradle.properties的modId = bettercrashes。 三处只有前两处是占位符,必须读 Java 常量或 gradle.properties。 gradle.properties明确minecraftVersion = 1.7.10、forgeVersion = 10.13.4.1614、mappingsVersion = 12(stable 通道)。- 客户端专属:
MixinPlugin.getMixins(:46-53)在服务端返回空列表,preInit在服务端只打一行 “BetterCrashes has been installed on a server, it will do nothing here, it can be removed!”。 ⇒ 服务端安装无任何作用。
功能条目
- 崩溃界面(Minecraft crashed!) - 崩溃后回主菜单继续玩;4 个按钮含上传并复制链接
- 启动错误界面(Minecraft failed to start!) - 启动失败时自建渲染管线与独立 GUI 循环,只有 2 个按钮
- 通用配置(General) - 6 个配置项:崩溃日志限流、上传服务、issue 链接、不支持 mod 列表、反混淆开关
- 崩溃报告上传(mclo.gs) - POST 到
api.mclo.gs/1/log,唯一可选服务,异步上传 - 嫌疑模组识别(Suspected Mods) - 沿异常树反查类所属 jar,报告与界面各显示一次
- 堆栈反混淆与报告格式 - 下载 FML methods.csv 校验 SHA-256,重写
getCompleteReport
注入点一览
| Mixin | 目标 | 方式 | 侧 |
|---|---|---|---|
MinecraftMixin |
Minecraft |
@Overwrite run() / displayCrashReport() |
客户端 |
CrashReportMixin |
CrashReport |
@Overwrite getCompleteReport() / getSectionsInStringBuilder();@Inject populateEnvironment HEAD+TAIL |
客户端 |
CrashReportMixin 优先级 500(:40),即高于默认优先级,会先于其他
crash 相关 mixin 应用。
崩溃报告落盘
CrashUtils.outputReport(:29-50)在 report.getFile() == null 时写:
- 文件名:
crash-yyyy-MM-dd_HH.mm.ss-client.txt或-server.txt(func_152345_ab()判定) - 目录:客户端
<gameDir>/crash-reports,服务端./crash-reports - 无论是否写盘,都会把完整报告以
fatal级别打进日志
语言文件
assets/bettercrashes/lang/ 有 en_US.lang(22 键)与 zh_CN.lang(18 键)。
⚠️ zh_CN 缺 4 个键,中文环境下这 4 处会显示原始 key:
bettercrashes.gui.common.issueTracker、
bettercrashes.gui.common.openUploadedCrashReport、
bettercrashes.gui.common.paragraph4、
bettercrashes.gui.common.paragraph5。
依赖
dependencies.gradle为空,@Mod注解没有dependencies字段。- ⚠️
README.md声明「Requires SpongeMixins to work」, 但源码与构建脚本中都没有任何对该 mod 的声明。 缺失时 FML 不会给出友好提示,会直接因 mixin 框架类缺失而失败。 - 实际使用的外部库:Gson(上传响应)、Guava(SHA-256)、commons-lang3。
这些由 Forge/LaunchWrapper 环境提供,未在
dependencies.gradle显式声明。
审计状态
- 本页 6 条目已于 2026-10-01 全量回源码逐条核对。
- 本 mod 无游戏内容条目,维度按崩溃处理流程的实际功能面划分。