TiCTooltips 归类集成

vexatos.tgregworks.integration.tictooltips.IntegrationTiCTooltips。 装了 TiCTooltips 时,把 28 个部件按 TiC 的工具提示分类归位, 让 NEI/REI 里的部件按"镐头 / 箭羽 / 护手 …"分组而不是混成一坨。

门控与注册

TGregworks.postInit:

if (Loader.isModLoaded(Mods.TiCTooltips)) {
    ticTooltips = new IntegrationTiCTooltips();
    ticTooltips.postInit();
}

postInit() 带 @Optional.Method(modid = Mods.TiCTooltips) 注解, 整个类被 try { … } catch (Exception e) { log.error("Failed adding parts of TiCTooltips integration."); e.printStackTrace(); } 包住。

逐个分类容器的 add() 也是独立 try/catch(catch 里打 "Failed adding parts of TiCTooltips integration."), 所以某个分类失败不会阻断其余 19 个分类。

19 个分类的完整对照

TiC ToolPartHelper 列表 本 mod 加入的 PartTypes 条数
toolHeads PickaxeHead, ShovelHead, ExcavatorHead 3
weaponMiningHeads HammerHead 1
weaponToolHeads AxeHead, ScytheHead, LumberHead 3
weaponHeads SwordBlade, LargeSwordBlade, KnifeBlade, FrypanHead, SignHead 5
weaponGuards Crossbar, MediumGuard, LargeGuard 3
fullWeaponGuards FullGuard 1
bindings Binding 1
toughBindings ToughBind 1
rods ToolRod, ToughRod 2
plates LargePlate 1
shards Chunk 1
arrowHeads ArrowHead 1
chisels ChiselHead 1
shurikenParts Shuriken 1
bowLimbs BowLimb 1
crossbowLimbs CrossbowLimb 1
crossbowBodies CrossbowBody 1

17 个分类、共 28 个部件(3+1+3+5+3+1+1+1+2+1+1+1+1+1+1+1+1 = 28 ✓)。

几个归类上的取舍

源码的分类不是简单按 PartTypes 名字归位,有几处是刻意选的:

  • ScytheHead 与 LumberHead 归 weaponToolHeads(工具类武器头)而不是 weaponHeads, 因为它们对应的武器(镰刀 / 伐木斧)在 TiC 分类里属于"工具";
  • LumberHead 同时是战斧 Battleaxe 的头(见 工具配方表), 但这里只归到一处;
  • HammerHead 单独进 weaponMiningHeads,与其余武器头分开;
  • Chunk 归 shards,与 TiC 的 toolShard 同一组。

实现

@Optional.Method(modid = Mods.TiCTooltips)
private void add(List<Item> toolPartList, PartTypes... parts) {
    try {
        for (PartTypes part : parts)
            toolPartList.add(TGregworks.registry.toolParts.get(part));
    } catch (Exception e) { log.error("Failed adding parts of TiCTooltips integration."); e.printStackTrace(); }
}

用静态 import 直接取 squeek.tictooltips.helpers.ToolPartHelper 的 17 个 List<Item> 字段, list.add(...) 追加而不是替换——所以 TiC 自己的部件仍在原列表里,本 mod 的部件排在后面。

⚠️ 若 TiCTooltips 的某个列表字段为 null(版本差异),add 里的 NPE 会被吞掉并打日志, 该分类静默失效而不崩溃。

与 @Mod 依赖声明的关系

@Mod(… before: "TiCTooltips@[1.2.4,)") —— 声明为 before, 即本 mod 必须先于 TiCTooltips 加载,这样 TiC Tooltips 初始化时列表已经是补全的。

相关条目