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)依次完成:
- 调用
LetsEncryptAdder.addLetsEncryptCertificates(),失败时降级为一条warn日志并继续启动(DreamCoreMod.java:57-62) - 读取
data.get("runtimeDeobfuscationEnabled")存入静态字段isObf(DreamCoreMod.java:64) - 写入 4 个默认属性:
showConfirmExitWindow=true、downloadOnlyOnce=true、displayedModpackVersion=Refstrings.MODPACKPACK_VERSION(DreamCoreMod.java:65-67) - 在
mcLocation/config/下建目录并打开DreamCoreMod.properties(DreamCoreMod.java:68-70) - 检测
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)。
相关条目
- CoreMod 配方破坏器 - 本 coremod 加载的 ASM 变换器
- Early Mixin - 由本类的
getMixins()注册的 5 个早期 Mixin - DreamCoreMod.properties 配置 - 本 coremod 读取的独立配置文件