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 是无状态的颜色/亮度覆写。

已知问题

  1. ImmutableMap.of(...) 的 5 对上限是隐式约束,没有注释说明。
  2. 本类完全没有类级 Javadoc,为什么只有 CT 类需要 per-thread 实例在仓库里无任何记录。
  3. 本 handler 不覆写 extraTransformers(),走接口默认的 null,因此不产生专属 transformer 类——它完全依赖 GenericCompatTransformer 的通用通道。这是 5 个 handler 里唯一一个「纯数据、无专属代码」的。

相关条目