ExtraUtilsCompatHandler
基本信息
| 属性 | 值 |
|---|---|
| 类 | com.gtnewhorizons.angelica.loading.fml.compat.handlers.ExtraUtilsCompatHandler |
| 路径 | src/main/java/com/gtnewhorizons/angelica/loading/fml/compat/handlers/ExtraUtilsCompatHandler.java |
| 行数 | 25 |
| 类型 | public class ... implements ICompatHandler(:9) |
| 门控 | CompatConfig.fixExtraUtils(CompatHandlers.java:17) |
它是什么
Extra Utilities(rwtema)的兼容数据提供者。只覆写 1 个方法,是 5 个 handler 里最轻的。
唯一覆写:getThreadSafeISBRHAnnotations(:12-23)
5 个类,perThread 标注有真有假:
| 目标类 | perThread |
|---|---|
com.rwtema.extrautils.block.render.RenderBlockColor |
false |
com.rwtema.extrautils.block.render.RenderBlockConnectedTextures |
true |
com.rwtema.extrautils.block.render.RenderBlockConnectedTexturesEthereal |
true |
com.rwtema.extrautils.block.render.RenderBlockFullBright |
false |
com.rwtema.extrautils.block.render.RenderBlockSpike |
false |
5 个条目是硬编码的字面量顺序(ImmutableMap.of 最多支持 5 对),恰好占满上限。再加一个类就必须改写成 ImmutableMap.builder() 形式——仓库里其他 handler(如 ImmersiveEngineering)已经这么做了。
分界线的语义很明确:两个 CT(ConnectedTextures)渲染类标 true,其余三个标 false。CT 渲染需要按方块状态缓存纹理,实例状态多;RenderBlockColor/RenderBlockFullBright/RenderBlockSpike 是无状态的颜色/亮度覆写。
已知问题
ImmutableMap.of(...)的 5 对上限是隐式约束,没有注释说明。- 本类完全没有类级 Javadoc,为什么只有 CT 类需要 per-thread 实例在仓库里无任何记录。
- 本 handler 不覆写
extraTransformers(),走接口默认的null,因此不产生专属 transformer 类——它完全依赖 GenericCompatTransformer 的通用通道。这是 5 个 handler 里唯一一个「纯数据、无专属代码」的。
相关条目
- ICompatHandler - 本类实现的接口
- CompatHandlers - 枚举项
EXTRA_UTILS(:17) - ThreadSafeISBRHAnnotationTransformer - 唯一消费方
- ThreadSafeISBRH - 被打上的注解本体
- CompatConfig -
fixExtraUtils