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 配置关闭则不装载

限制

第三方 mod 集成

仅针对 com.rwtema.extrautils (Extra Utilities) mod。

相关条目