CompatibilityHelper
Fletching / FletchlingLeaf 双路兼容
基本信息
| 属性 | 值 |
|---|---|
| 路径 | squeek.tictooltips.helpers.CompatibilityHelper |
| 行数 | 28 |
| 源码注释 | // for backwards-compatibility-related things(:8) |
三个方法
| 方法 | 实现 | 用途 |
|---|---|---|
getLocalizedAbility(ToolMaterial) |
return mat.ability() (:12) |
直接调 TCon 的 ability() |
getLocalizedName(ToolMaterial) |
return mat.localizedName() (:16) |
直接调 TCon 的 localizedName() |
getFletchingMaterial(int matID) |
见下 | 箭羽材料双路取值 |
前两个方法没有任何加工,是为 TCon API 改名预留的转接点:
一旦 1.7.10 分支的 ToolMaterial 方法名再变,只需改这两个方法,
[TooltipHandler](../core/tooltip-handler) 的调用点不用动。
⚠️ 注释说 “backwards-compatibility” 但没有版本判定,
也没有 Loader.isModLoaded 守卫 —— 纯编译期转接。
getFletchingMaterial(:19-27)
FletchingMaterial fletching = (FletchingMaterial) TConstructRegistry
.getCustomMaterial(matID, FletchingMaterial.class);
if (fletching == null)
fletching = (FletchingMaterial) TConstructRegistry.getCustomMaterial(matID, FletchlingLeafMaterial.class);
return fletching;
两级回退:
| 顺序 | 查询类型 | 对应物品 |
|---|---|---|
| 1 | FletchingMaterial |
箭羽(TinkerWeaponry.fletching) |
| 2 | FletchlingLeafMaterial |
箭翎 / 飞叶 |
FletchlingLeafMaterial 是 TCon 内部的子类/近亲类型,
在 1.7.10 的 TCon 里与 FletchingMaterial 字段布局一致
(accuracy / breakChance / durabilityModifier),
所以能直接向上转型成 FletchingMaterial 复用同一套读取代码。
⚠️ 这个向上转型没有 try-catch。若某版本 TCon 里两者不构成继承关系,
会抛 ClassCastException 而非返回 null,
进而让整个 determineMinAndMaxValues()(ToolPartHelper 的 :295)
在 postInit 阶段崩掉。
三个调用点
| 调用方 | 位置 | 用途 |
|---|---|---|
getFletchingMaterial |
ToolPartHelper :295 |
极值扫描 |
getFletchingMaterial |
TooltipHandler :249 |
箭羽部件 tooltip |
getLocalizedAbility / getLocalizedName |
TooltipHandler :213 / :968 |
能力行 / 修复材料行 |
相关
- PatternHelper - 同样处理
FletchlingLeafMaterial(图纸侧) - ToolPartHelper - 极值扫描的消费者