ExtraUtilsCompatHandler
基本信息
| 属性 | 值 |
|---|---|
| 类名 | com.gtnewhorizons.angelicacompat.asm.handlers.ExtraUtilsCompatHandler |
| 实现接口 | CompatHandler |
| 启用条件 | PatchesConfig.patchExtraUtils == true |
| 注册枚举 | CompatHandlers.EXTRA_UTILS |
| 启用版本 | Minecraft 1.7.10(仅客户端) |
功能
为 Extra Utilities 的 5 个 RenderBlocks 子类预先声明 @ThreadSafeISBRH(perThread=...) 注解,使其在 Angelica 的 Sodium 多线程 ISBRT 路径下能正确表现:
| 目标类 | perThread |
解读 |
|---|---|---|
com.rwtema.extrautils.block.render.RenderBlockColor |
false |
缓存颜色数据,不能并发 |
com.rwtema.extrautils.block.render.RenderBlockConnectedTextures |
true |
已通过 Mixin 改造为实例字段 newFakeRender,安全 |
com.rwtema.extrautils.block.render.RenderBlockConnectedTexturesEthereal |
true |
已通过 Mixin 改造为实例字段 newFakeRenderEthereal,安全 |
com.rwtema.extrautils.block.render.RenderBlockFullBright |
false |
全亮渲染管线与纹理缓存同步相关 |
com.rwtema.extrautils.block.render.RenderBlockSpike |
false |
与尖刺动画共享缓存 |
实现要点
getThreadSafeISBRHAnnotations() 返回 ImmutableMap<String, Boolean>,由 CompatRegistry 收集到 Map<String, Boolean> threadSafeISBRHAnnotations,供 ThreadSafeISBRHAnnotationTransformer 在 transform() 阶段读取并写入 cn.visibleAnnotations。
仅返回这一种映射;其它 getFieldLevelTessellator/getTileEntityNullGuard/getHUDCachingEarlyReturn/extraTransformers 均返回 null,表示本 handler 不为这些 transformer 提供目标。
ClassWriter 标志
不由本 handler 控制;下游 transformer 自行决定(这里下游是 ThreadSafeISBRHAnnotationTransformer,使用 COMPUTE_MAXS | COMPUTE_FRAMES)。
输出与调试
无独立日志;统一通过 AngelicaCompatCore 在 DUMP_CLASSES 模式下输出改写后字节码。
数值
| 数值 | 默认 | 含义 |
|---|---|---|
| 注册目标数 | 5 | RenderBlockColor/ConnectedTextures/ConnectedTexturesEthereal/FullBright/Spike |
perThread=true 数 |
2 | ConnectedTextures + ConnectedTexturesEthereal |
perThread=false 数 |
3 | Color/FullBright/Spike |
| 触发开关 | PatchesConfig.patchExtraUtils |
配置关闭则不装载 |
限制
- 仅声明注解;具体线程安全改造由 MixinRenderBlockConnectedTextures 与 MixinRenderBlockConnectedTexturesEthereal 配套完成。
- 注解值需逐类手工评估;新增 EU 渲染类不会自动获得适配。
第三方 mod 集成
仅针对 com.rwtema.extrautils (Extra Utilities) mod。
相关条目
- ThreadSafeISBRHAnnotationTransformer - 读取本 handler 映射
- CompatRegistry - 中央注册表
- CompatHandlers - 启用开关
- MixinRenderBlockConnectedTextures -
RenderBlockConnectedTextures实际线程安全改造 - MixinRenderBlockConnectedTexturesEthereal -
RenderBlockConnectedTexturesEthereal实际线程安全改造 - PatchesConfig -
patchExtraUtils开关