TiC Tooltips
[!INFO] Git Commit:
c3e1b60| Updated: 2026-10-01
给 TinkersConstruct 的工具与工具部件(tool part)追加详细 tooltip 的
纯客户端附属,modid 为 TiCTooltips。本身不注册任何方块、物品、实体或多方块结构。
身份
| 属性 | 实测值 |
|---|---|
| modid | TiCTooltips(混合大小写,ModInfo.java:5) |
| modName | TiC Tooltips(gradle.properties) |
| 资源域 | tictooltips(全小写,src/main/resources/assets/) |
| Java 文件 | 15(2 540 行),TooltipHandler.java 一个类就占 1 078 行 |
| 注册内容 | 0(无 block / item / entity / worldgen) |
| 配置项 | 0(源码中无 @Config、无 Configuration) |
| 依赖注册 | 仅 init 挂一个 ItemTooltipEvent 监听器 |
[!NOTE] 分类名 ≠ modid ≠ 资源域 —— 三者全不一样
- Wiki 分类名:
tic-tooltips(来自仓库名TiC-Tooltips)- 实际 modid:
TiCTooltips- 资源域:
tictooltips(lang 文件在assets/tictooltips/lang/)mcmod.info六个字段全是${modId}之类构建期占位符,modid 只能从gradle.properties的modId = TiCTooltips与ModInfo.MODID实读。
[!IMPORTANT] 定位:Tinkers’ Construct 的客户端附属,不是本体 FML 依赖串(
ModTiCTooltips.java:26):required-after:TConstruct+ 版本区间[1.7.10-1.8,), 之后after:ExtraTiC; after:TSteelworks; after:Mariculture(完整原文见 ModTiCTooltips)。 即TConstruct是唯一硬依赖,且被版本区间限制在[1.7.10-1.8,)。 Tinkers 本体的内容见 tinkersconstruct,此处不复述。关于仓库名里的
TiC:它确实指 Tinkers’ Construct(硬依赖可证), 但TiC在本 mod 里同时是第二重含义 ——ProxyExtraTiC指的是另一个模组 ExtraTiC(glassmaker.extratic),二者是同一个人(作者squeek)的两个项目, 极易混淆。判定依据要看Loader.isModLoaded的实参,不是看名字。
依赖关系(实测 dependencies.gradle + FML 串)
| 依赖 | 作用域 | 说明 |
|---|---|---|
| TinkersConstruct | api |
唯一硬依赖,1.14.110-GTNH;并 exclude 自身 TiC-Tooltips |
| GTNHLib | api |
只用 NumberFormatUtil.formatNumber(千分位) |
| Battlegear2 | compileOnly |
⚠️ 源码中零引用,见「源码缺陷」 |
| ExtraTiC | FML after: |
软依赖,有 ProxyExtraTiC 反射接入 |
| TSteelworks | FML after: |
⚠️ 声明了但无任何代码,见「源码缺陷」 |
| Mariculture | FML after: |
软依赖,有 ProxyMariculture |
| IguanaTweaksTConstruct | 仅 Loader.isModLoaded |
软依赖,有 ProxyIguanaTweaks |
iguanatweakstconstruct 与 gtnhlib 已在分类登记表中 (后者尚未成文,属前向引用)。ExtraTiC / TSteelworks / Mariculture / Battlegear2 不在收录范围, 故本文只以纯文本提及,不建分类、不加链接。
交互模型
三个按键状态决定 tooltip 内容,判定入口在
TooltipHandler 的 onItemTooltip:
| 状态 | 行为 |
|---|---|
| 无按键 | 在 TiC 原生提示末尾追加「按住 Shift 查属性 / 按住 Ctrl 查材料」两行引导 |
Shift |
追加完整数值属性(耐久、攻击、矿级、附魔、弹药、弓速、投射物、修饰符) |
Ctrl |
清空除首行外的所有 tooltip,只留材料下界/上界构成 |
Shift+Ctrl |
同时命中时走 Shift 分支(shiftDown && !ctrlDown 为假) |
按键读取在 KeyHelper:Mac 上 Ctrl 同时接受
KEY_LMETA / KEY_RMETA(Command),因为 GuiScreen.isCtrlKeyDown 在 Mac 只认 Option。
数值着色
所有属性都按「当前存档全部材料的相对位置」着色,实现在
ColorHelper:
7 级色阶 DARK_RED → RED → GOLD → YELLOW → DARK_GREEN → GREEN → AQUA,
线性插值 index = (val - min) / (max - min) * 6。
越界时:高于上界为 WHITE+BOLD,低于下界为 DARK_RED+BOLD;min == max 时返回 RESET。
色阶基准由 ToolPartHelper 的
determineMinAndMaxValues() 在 postInit 扫描 TConstructRegistry 全表得出。
源码缺陷
ToolPartHelper.getBowStringDurabilityModifierString取错区间 ——ToolPartHelper.java:387-390用了minBowStringDrawspeedModifier/maxBowStringDrawspeedModifier,而函数名与实参都是 durability。应改成minBowStringDurabilityModifier/maxBowStringDurabilityModifier(这两个字段在ToolPartHelper.java:197-198已存在且被determineMinAndMaxValues正确赋值)。 后果:弓弦耐久修正值的颜色按「弓弦拉速修正」的区间算,可能整列同色或全白。after:TSteelworks是空声明 ——ModTiCTooltips.java:26声明了软依赖, 但全仓grep -i steelworks只命中这一行本身:无ProxyTSteelworks、 无Loader.isModLoaded("TSteelworks")、无Class.forName。 对比 ExtraTiC / Mariculture / IguanaTweaks 都有真代码。- Battlegear2 依赖未被使用 ——
dependencies.gradle声明compileOnly('com.github.GTNewHorizons:Battlegear2:1.4.3:api'), 但src/中grep -ri battlegear零命中,FML 依赖串里也没有它。属残留依赖。 getAmmoTooltip/getThrownTooltip是空实现 ——TooltipHandler.java:883-886与899-903建了ArrayList直接return, 弹药数与投掷物属性永远不显示(调用点TooltipHandler.java:985、:994仍在跑)。- 若干 min 值从未被播种 ——
minAccuracy、minWeight、minFletchingDurabilityModifier、minArrowDurabilityModifier在determineMinAndMaxValues()里没有对应的needsInit赋值分支, 始终停留在字段默认0f(ToolPartHelper.java:176-206)。 其中minShoddiness被显式初始化为0f(:157)且此后不再更新, 三个 shoddiness 字段的更新又只写在else分支(:220-223), 所以第一个材料的 shoddiness 永远不参与极值计算。
分类索引
核心
- ModTiCTooltips - 模组主类:FML 依赖串、客户端事件注册、三个软依赖探测
- TooltipHandler - 唯一业务类(1 078 行):tooltip 分派、按键分支、数值拼装
- ModInfo - 三个常量:MODID / MODNAME / VERSION
辅助类
- ToolPartHelper - 部件分类表 21 组、材料极值扫描、着色字符串入口
- ToolHelper - ToolCore 查询与 NBT 数值提取(63 个方法)
- StringHelper - 数值→本地化文本(伤害换算心数、罗马数字强化等级)
- ColorHelper - 7 级相对色阶
- PatternHelper - 图纸合法材料枚举(遍历 TConstructRegistry.customMaterials)
- CompatibilityHelper - Fletching/FletchlingLeaf 双路兼容
- KeyHelper - Shift / Ctrl 读取,含 Mac Command 兼容
- RomanNumeralHelper - 整数与罗马数字互转
- MathHelper - 浮点近似相等(ULP 比较)
兼容层
- ProxyExtraTiC - ExtraTiC 部件反射映射,28 个 PartInfo + 材料 ID 区间
- ProxyMariculture - Mariculture 钛系工具部件反射注册
- ProxyIguanaTweaks - 读 Iguana Tweaks 配置修正锄/锤显示矿级
源码:/Users/evlos/a/mirror/TiC-Tooltips/
关系登记:见 data/relation.md(全局 Wiki 分类映射表)