DreamCoreMod

基本信息

属性 值
类全名 com.dreammaster.coremod.DreamCoreMod
接口 IEarlyMixinLoader、IFMLLoadingPlugin
FML 容器 modid com.dreammaster.coremod.DreamCoreMod(由 modGroup = com.dreammaster 与 coreModClass = coremod.DreamCoreMod 拼接得出,gradle.properties)
@IFMLLoadingPlugin.MCVersion 1.7.10(DreamCoreMod.java:25)
@IFMLLoadingPlugin.Name DreamCoreMod(DreamCoreMod.java:26)
ASM 变换器 com.dreammaster.coremod.DreamClassTransformer(DreamCoreMod.java:41-43)
mod 容器类 null(DreamCoreMod.java:46-48)
setup 类 null(DreamCoreMod.java:51-53)
Access Transformer 类 null(DreamCoreMod.java:104-106)
入口配置 mixins.dreamcraft.early.json(DreamCoreMod.java:109-111)
配置文件 config/DreamCoreMod.properties(DreamCoreMod.java:69)

功能

DreamCoreMod 是本 mod 的核心模组层(coremod),在 FML 加载早期(mod 类尚未实例化之前)执行。它同时承担三件事:注入 Let’s Encrypt 根证书、管理自己的属性配置文件、以及作为 5 个早期 Mixin 的注册入口。

它是本 mod 唯一实现 IFMLLoadingPlugin 的类 —— 全仓 IFMLLoadingPlugin 命中仅 DreamCoreMod.java 一个文件(grep -rln 'IFMLLoadingPlugin' src/main/java)。

injectData:证书注入与配置初始化

injectData(Map<String,Object> data)(DreamCoreMod.java:56-101)依次完成:

  1. 调用 LetsEncryptAdder.addLetsEncryptCertificates(),失败时降级为一条 warn 日志并继续启动(DreamCoreMod.java:57-62)
  2. 读取 data.get("runtimeDeobfuscationEnabled") 存入静态字段 isObf(DreamCoreMod.java:64)
  3. 写入 4 个默认属性:showConfirmExitWindow=true、downloadOnlyOnce=true、displayedModpackVersion=Refstrings.MODPACKPACK_VERSION(DreamCoreMod.java:65-67)
  4. 在 mcLocation/config/ 下建目录并打开 DreamCoreMod.properties(DreamCoreMod.java:68-70)
  5. 检测 config/modpack-update 标记文件,设置 modpackHasUpdated(DreamCoreMod.java:73-76)

模组包升级检测

  • 若 config/modpack-update 存在 → modpackHasUpdated = true(DreamCoreMod.java:72-74)
  • 若配置中的 savedVersion 不等于 Refstrings.VERSION → 同样置 modpackHasUpdated = true,随后回写 savedVersion(DreamCoreMod.java:81-85)

该标志位被 MainRegistry.serverLoad 消费:整合包升级后自动执行 /bq_admin default load 载入 BetterQuesting 默认任务库(MainRegistry.java:469-476)。

数值

属性名 默认值 来源
showConfirmExitWindow true DreamCoreMod.java:65
downloadOnlyOnce true DreamCoreMod.java:66
displayedModpackVersion Refstrings.MODPACKPACK_VERSION = 2.9.x DreamCoreMod.java:67
downloadUA Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:147.0) Gecko/20100101 Firefox/147.0 DreamCoreMod.java:97-98
savedVersion 由 Refstrings.VERSION 自动回写 DreamCoreMod.java:88

交互

触发 行为
玩家在退出确认窗口点击「不退出」 调用 disableShowConfirmExitWindow(),把 showConfirmExitWindow 持久化为 false(DreamCoreMod.java:131-139)
模组包版本变化 下次启动自动置 modpackHasUpdated,触发 BetterQuesting 任务库重载

异常处理

全仓仅 1 处空捕获(catch 块体内只有注释),位于 DreamCoreMod.java:80:

} catch (FileNotFoundException ignored) {
    // not a problem
}

这是良性探测 —— 首次启动时 DreamCoreMod.properties 尚不存在属正常情况,方法继续使用第 65-67 行写入的默认值。不作为缺陷记录。

catch (Throwable) 全仓 2 处,均非缺陷:GT_CraftingRecipeLoader.java:96 在新版配方构造器抛错时回退到 GTModHandler.addCraftingRecipe(GT_CraftingRecipeLoader.java:97);client/util/GTNHPauseScreen.java:114 打开链接失败时记录 error 日志(GTNHPauseScreen.java:115)。

相关条目