ResourceLoader 兼容

基本信息

属性 值
调用方 ProgressDisplayer.loadResourceLoader()
兼容对象 lumien.resourceloader.ResourceLoader
调用时机 首次 displayCurrentProgress() 之后,hasInitRL=true 之后不再调用

行为

  1. 通过 Class.forName("lumien.resourceloader.ResourceLoader") 反射获取类。
  2. resLoaderClass.newInstance() 创建一个新实例;把静态字段 INSTANCE 通过 Field.set(null, instance) 写入。
  3. 拿到 preInit(FMLPreInitializationEvent) 方法,调 m.invoke(instance, new Object[]{null})(事件传 null,避开 ResourceLoader 实际需要的字段)。
  4. 成功 → log debug “Resource loader loaded early successfully :)”。

失败处理

  • ClassNotFoundException → log warn “Resource loader not loaded, not initialising early”。
  • 其它异常 → log error “Resource Loader Compat FAILED!” + t.printStackTrace()。

使用场景

  • 资源包风格的客户端(多资源包 mod 整合),让 ResourceLoader 在 BLS 接管 splash 前生效。

相关条目