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(方块与实体并集),字段见 数据访问器。
相关条目
- Tooltip 控制符 -
¤¦a{name,args}语法的完整定义 - 内置 Tooltip 渲染器 - 10 个
TTRender*类的注册状态 - 数据访问器 -
IWailaCommonAccessor字段 - IWailaRegistrar -
registerTooltipRenderer所在接口