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 能力行 / 修复材料行

相关