ThaumcraftCompatHandler
基本信息
| 属性 | 值 |
|---|---|
| 类 | com.gtnewhorizons.angelica.loading.fml.compat.handlers.ThaumcraftCompatHandler |
| 路径 | src/main/java/com/gtnewhorizons/angelica/loading/fml/compat/handlers/ThaumcraftCompatHandler.java |
| 行数 | 16 |
| 类型 | public class ... implements ICompatHandler(:9) |
| 门控 | CompatConfig.fixThaumcraft(CompatHandlers.java:19) |
它是什么
Thaumcraft 的兼容数据提供者。与 ThaumicHorizons 是同一补丁的两份拷贝,针对两个平行 mod。
唯一覆写:getHUDCachingEarlyReturn(:12-14)
return ImmutableMap.of("thaumcraft.client.lib.RenderEventHandler", ImmutableList.of("renderOverlay"));
一个类、一个方法。补丁内容由 HUDCachingEarlyReturnTransformer 注入:在 renderOverlay 方法指令序列开头插入
INVOKESTATIC HUDCaching$HUDCachingHooks.shouldReturnEarly()Z
IFEQ exitLabel
ICONST_0 / IRETURN (返回值 Z 或 I 时)
RETURN (返回值 V 时)
exitLabel:
即:当 Angelica 的 HUD 缓存命中时,让 Thaumcraft 的 renderOverlay 立刻返回零值,避免它重绘已被缓存的内容造成重复。
耦合点
被补丁的方法名 renderOverlay 与 Thaumcraft RenderEventHandler 里的 Forge RenderGameOverlayEvent 订阅回调同名。Angelica 自己的 HUDCaching 也用同名方法发 ClientEvent(见 HUDCaching :75-76、:90、:187),两者是不同层级但语义对齐的钩子。
已知问题
- 补丁只在 LaunchWrapper 路径存在。装了 RetroFuturaBootstrap 时,
CompatHandlers驱动的全部兼容 transformer 一个都不注册(AngelicaRfbPlugin.makeTransformers只返回 3 个 RFB transformer)。即:RFB + Thaumcraft = HUDCaching 与 Thaumcraft 的 HUD 重复渲染。这是一个真实的功能性缺口,不是配置问题。 - 无类级 Javadoc。
- 目标类名
thaumcraft.client.lib.RenderEventHandler是字符串字面量,Thaumcraft 改包名即静默失效(ClassConstantPoolParser找不到就不变换,不报错)。
相关条目
- ThaumicHorizonsCompatHandler - 同一补丁的平行实现
- HUDCachingEarlyReturnTransformer - 注入早退的通用 transformer
- HUDCaching -
shouldReturnEarly()的提供方 - AngelicaRfbPlugin - RFB 路径拿不到本补丁的原因
- CompatConfig -
fixThaumcraft