Forge 原生 Splash 接管
基本信息
| 属性 | 值 |
|---|---|
| 触发点 | ProgressDisplayer.displayCurrentProgress() |
| 反射目标 | cpw.mods.fml.client.SplashProgress |
| 文件 | config/splash.properties |
行为
首次进度上报时(hasTurnedSplashOff=false)
- 调
setForgeSplashEnabled(false):- 读
Minecraft.getMinecraft().mcDataDir/config/splash.properties;不存在则记录 info 并继续。 - 把
enabled字段改成false后写回,记录 “Turned Forge splash screen off in splash.properties”。 - 返回
hasTurnedOff = wasEnabled && !enabled(旧值 true 且新值 false 才返回 true)。
- 读
- 若
hasTurnedOff=true,记录forgeSplashWasTrue=true,用于关闭时还原。 - 调
loadResourceLoader()(仅第一次):- 通过反射 Class.forName + setAccessible 加载
lumien.resourceloader.ResourceLoader类。 - 调用
preInit(null)让 ResourceLoader 在启动早期生效(注释:“Resource loader loaded early successfully :)”)。
- 通过反射 Class.forName + setAccessible 加载
- 调
overrideForgeSplashProgress():- 把
SplashProgress.enabled反射设为false(让 Forge 原生 splash 立刻消失)。 - 把
SplashProgress.done反射设为true(加速 Forge splash 退出循环)。 - 失败仅记录日志,不影响后续。
- 把
hasInitRL=true,后续不再重试。
ProgressDisplayer.close()
- 若之前改过
splash.properties(forgeSplashWasTrue=true),重新调setForgeSplashEnabled(true)还原。
数值
| 字段 | 默认 |
|---|---|
splash.properties.enabled(被改前) |
通常为 true(Forge 默认) |
SplashProgress.enabled(被反射改后) |
false |
SplashProgress.done(被反射改后) |
true |
相关条目
- Coremod 安装 - 启动主流程
- ResourceLoader 兼容 - loadResourceLoader() 实现