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)等子包。
关联
- ClientProxy -
setRendererClass的调用方 - TooltipRenderer - 被指定的渲染器
- TooltipRegistry - enricher 注册
- mixin 类清单 - 5 个注入点