部件铸件 Legacy Metal Pattern Cast
条件注册:TGregworks.preInit 里 if (!TConstruct.pulsar.isPulseLoaded("Tinkers' Smeltery"))
才调用 CastLegacy.preInit()。也就是说只有 Tinkers’ Smeltery(Tinkers’ Smeltery 附属)没有加载时
才存在本物品。加载了 Smeltery 时,CastLegacy.metalPattern == null,全部 23 个 subtype 由 TiC 自己的
TinkerSmeltery.metalPattern 顶替(Pattern.MetalPatterns.getPatternItem() 里的三元判断)。
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | TGregworks:metalPattern |
| 类 | tconstruct.smeltery.items.MetalPattern(直接复用 TiC 的类,不是本 mod 的类) |
| 构造 | new MetalPattern("cast_", "materials/") |
| 本地化名 | tconstruct.MetalPattern(复用 TiC 的键,因此需要 Smeltery 的语言条目) |
| 注册位置 | CastLegacy.preInit(),条件为 Smeltery 未加载 |
| 注册到目录 | 23 个 subtype 全部 TConstructRegistry.addItemStackToDirectory("<name>Cast", …) |
23 个 subtype
patternTypes 数组按下标 0–22 依次对应 metadata:
| metadata | 目录名 | 含义 |
|---|---|---|
| 0 | ingotCast |
锭铸件 |
| 1 | toolRodCast |
手柄铸件 |
| 2 | pickaxeHeadCast |
镐头铸件 |
| 3 | shovelHeadCast |
铲头铸件 |
| 4 | hatchetHeadCast |
斧刃铸件 |
| 5 | swordBladeCast |
剑刃铸件 |
| 6 | wideGuardCast |
宽护手铸件 |
| 7 | handGuardCast |
护手铸件 |
| 8 | crossbarCast |
十字柄铸件 |
| 9 | bindingCast |
绑定结铸件 |
| 10 | frypanHeadCast |
盘铸件 |
| 11 | signHeadCast |
牌板铸件 |
| 12 | knifeBladeCast |
刀刃铸件 |
| 13 | chiselHeadCast |
凿刃铸件 |
| 14 | toughRodCast |
坚韧手柄铸件 |
| 15 | toughBindingCast |
坚韧绑定结铸件 |
| 16 | largePlateCast |
大板铸件 |
| 17 | broadAxeHeadCast |
宽斧刃铸件 |
| 18 | scytheHeadCast |
镰刀刀刃铸件 |
| 19 | excavatorHeadCast |
开掘铲头铸件 |
| 20 | largeBladeCast |
宽剑刃铸件 |
| 21 | hammerHeadCast |
锤头铸件 |
| 22 | fullGuardCast |
大型护手铸件 |
⚠️ 只覆盖
MetalPatterns的前 23 个枚举值。Pattern.MetalPatterns共有 28 个值 (含占位的nothing1/nothing2与arrowhead/gem/nugget),后 5 个在 legacy 模式下 会取到 metadata 23–27 的铸件。实际影响为零:没有任何PartTypes引用这 5 个枚举值 (PartTypes只用到ingot…fullguard这 23 个),而 5 个武器部件 (ArrowHead/Shuriken/CrossbowLimb/CrossbowBody/BowLimb)走WeaponryPatterns.getPatternItem(),那里无条件返回TinkerWeaponry.metalPattern, 不受 Smeltery 是否加载影响;Chunk的pattern是null,PartTypes.getPatternItem()直接返回null。
配方
本物品没有自己的获取配方——它只作为 pattern 被 28 个部件的挤压/固化配方消费
(addExtruderRecipe(plate, counterpart, pattern, 800, power) 与
addFluidSolidifierRecipe(counterpart, molten, pattern, 800, power)),
以及被 碎片铸件 类似的黄铜板/金板压制路径消费。见 铸件配方。
缺失映射(remap)
TGregworks.remap(FMLMissingMappingsEvent) → CastLegacy.remap(e):
- 前提:
TinkerSmeltery.metalPattern != null(即后来 Smeltery 又被加载了); - 匹配
mapping.name.equalsIgnoreCase("TGregworks:metalPattern")(忽略大小写)且mapping.type == GameRegistry.Type.ITEM; - 动作:
mapping.remap(TinkerSmeltery.metalPattern),把旧存档里的 23 个 subtype 全部转交给 TiC 的铸件。
这条路径保证"先无 Smeltery 玩、后装了 Smeltery"的存档不会丢铸件。
FMLMissingMappingsEvent 是唯一的加载后钩子,@Mod.EventHandler 签名 public void remap(FMLMissingMappingsEvent e)。
相关条目
- 铸件配方 — 23 个铸件各自的两条获取路径(挤压机 / 流固机)
- 碎片铸件 — 本 mod 自己的 24 号 pattern(Shard’s cast)
- Legacy Metal Pattern 兼容层 — 触发条件、remap 细节与已知缺陷
- 依赖门控 — Smeltery / Weaponry / TiCTooltips / IguanaTweaksTConstruct 各自的分支