Tooltip 渲染器 API

基本信息

属性 值
基础接口 mcp.mobius.waila.api.IWailaTooltipRenderer(IWailaTooltipRenderer.java:5)
变宽扩展 mcp.mobius.waila.api.IWailaVariableWidthTooltipRenderer(42 行)
注册方法 IWailaRegistrar.registerTooltipRenderer(String,IWailaTooltipRenderer)(IWailaRegistrar.java:88)
存储位置 ModuleRegistrar.tooltipRenderers(ModuleRegistrar.java:59)

这是 addon 往 HUD 行里插入图形化内容(血条、进度条、能量条)的扩展点,区别于只能输出纯文本的 provider。

功能

IWailaTooltipRenderer

两个方法(IWailaTooltipRenderer.java:14、IWailaTooltipRenderer.java:24):

方法 返回 行 契约
getSize(String[] params, IWailaCommonAccessor) java.awt.Dimension 14 返回预留区域尺寸
draw(String[] params, IWailaCommonAccessor) void 24 绘制;GL 矩阵已被自动移动到预留区左上角,所有调用以 (0,0) 为原点

params 数组的第一个元素是渲染器名本身,后续为 tooltip 中 RENDER 参数里传入的参数,格式为 {rendername, param1, param2, ...}(IWailaTooltipRenderer.java:9-10、IWailaTooltipRenderer.java:20-21)。

IWailaVariableWidthTooltipRenderer

在基础接口上追加 2 个方法(IWailaVariableWidthTooltipRenderer.java):

方法 返回 用途
setMaxLineWidth(int width) void 告知当前行最大可用宽度
getMaxLineWidth() int 读回该宽度

适用于进度条一类需要按行宽伸缩的图形。getSize 签名与父接口一致(重写而非新增)。

内置渲染器

Waila 自带 10 个 TTRender* 实现(src/main/java/mcp/mobius/waila/overlay/tooltiprenderers/),其中 7 个在 ProxyClient.java:57-64 注册:

注册名 实现类 注册行
waila.health TTRenderHealth 57
waila.stack TTRenderStack 58
waila.bar TTRenderBar 59
waila.progress TTRenderProgressBar 60
waila.fluid TTRenderFluidBar 61
waila.rfenergy TTRenderRFBar 62
waila.tcaspect TTRenderAspectString 64

TTRenderIcon、TTRenderString、TTRenderTrueTyper 三个类存在于源码目录但未在 ProxyClient 中以该名称注册(registerTooltipRenderer 调用见 ProxyClient.java:57-64,仅 7 处)。完整清单见 内置 Tooltip 渲染器。

交互

调用方通过 Tooltip 控制符 的 SpecialChars.getRenderString(name, params...)(SpecialChars.java:83-90)在输出行里嵌入渲染调用,生成的模式串由 SpecialChars.patternRender(SpecialChars.java:48-54)解析。上下文用 IWailaCommonAccessor(方块与实体并集),字段见 数据访问器。

相关条目