Forge 原生 Splash 接管

基本信息

属性 值
触发点 ProgressDisplayer.displayCurrentProgress()
反射目标 cpw.mods.fml.client.SplashProgress
文件 config/splash.properties

行为

首次进度上报时(hasTurnedSplashOff=false)

  1. 调 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)。
  2. 若 hasTurnedOff=true,记录 forgeSplashWasTrue=true,用于关闭时还原。
  3. 调 loadResourceLoader()(仅第一次):
    • 通过反射 Class.forName + setAccessible 加载 lumien.resourceloader.ResourceLoader 类。
    • 调用 preInit(null) 让 ResourceLoader 在启动早期生效(注释:“Resource loader loaded early successfully :)”)。
  4. 调 overrideForgeSplashProgress():
    • 把 SplashProgress.enabled 反射设为 false(让 Forge 原生 splash 立刻消失)。
    • 把 SplashProgress.done 反射设为 true(加速 Forge splash 退出循环)。
    • 失败仅记录日志,不影响后续。
  5. hasInitRL=true,后续不再重试。

ProgressDisplayer.close()

  • 若之前改过 splash.properties(forgeSplashWasTrue=true),重新调 setForgeSplashEnabled(true) 还原。

数值

字段 默认
splash.properties.enabled(被改前) 通常为 true(Forge 默认)
SplashProgress.enabled(被反射改后) false
SplashProgress.done(被反射改后) true

相关条目