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 初始化时列表已经是补全的。