ResourceLoader 兼容
基本信息
| 属性 | 值 |
|---|---|
| 调用方 | ProgressDisplayer.loadResourceLoader() |
| 兼容对象 | lumien.resourceloader.ResourceLoader |
| 调用时机 | 首次 displayCurrentProgress() 之后,hasInitRL=true 之后不再调用 |
行为
- 通过
Class.forName("lumien.resourceloader.ResourceLoader")反射获取类。 resLoaderClass.newInstance()创建一个新实例;把静态字段INSTANCE通过Field.set(null, instance)写入。- 拿到
preInit(FMLPreInitializationEvent)方法,调m.invoke(instance, new Object[]{null})(事件传 null,避开 ResourceLoader 实际需要的字段)。 - 成功 → 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 前生效。
相关条目
- Forge Splash 接管 - 同一系列反射