TooltipHandler

基本信息

属性 值
文件 src/main/java/com/slprime/chromatictooltips/(根包,6 类之一)
启用版本 Minecraft 1.7.10

tooltip 渲染的总线。mixin 注入点最终都落到这里。

setRendererClass(Class)

由 ClientProxy 的 preInit 调用:

TooltipHandler.setRendererClass(TooltipRenderer.class);

⚠️ 传入的是类对象(Class)而非实例 —— 渲染器实例化时机与生命周期由 TooltipHandler 掌管。 这与 TooltipRegistry 的 addEnricher(ITooltipEnricher) 传实例 形成对比。

⚠️ 由于渲染器不是在 ClientProxy.preInit 里 new 的, 在 preInit 之后替换渲染器类仍可能生效(取决于 TooltipHandler 何时实例化)。

与 mixin 的关系

4 个 mixin 的 5 个注入点 (renderToolTip ×2、drawHoveringText、addInformation) 全部是 cancellable = true + at = @At("HEAD"):

Mixin 注入(HEAD,cancel)
  └─> TooltipHandler
        └─> TooltipRenderer(setRendererClass 指定的实现)
              ├─> 12 个 enricher(TooltipRegistry)
              ├─> 3 个行转换器(TooltipRegistry)
              └─> 11 个 component

根包 6 个类

类 作用
ChromaticTooltips mod 入口(@Mod)
CommonProxy / ClientProxy 两侧代理
TooltipHandler 本条目:渲染总线
TooltipRegistry enricher / 转换器注册中心
TooltipRenderer 渲染器实现

⚠️ 根包只有 6 个类,是全 mod 最小的包; 大量逻辑在 api/(16)、util/(15)、event/(15)等子包。

关联