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:14 public 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!”。 ⇒ 服务端安装无任何作用。

功能条目

注入点一览

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 无游戏内容条目,维度按崩溃处理流程的实际功能面划分。