碎片与锭的互换
本页汇总碎片(PartTypes.Chunk)作为中间物的全部配方路径,
是理解"维修材料从哪来"的核心。碎片在 TiC 里叫 Shard,在本 mod 里是第 23 个部件(getID() = 22)。
碎片是什么
| 属性 | 值 |
|---|---|
| 注册名 | TGregworks:tGregToolPartChunk |
PartTypes |
Chunk,getID() = 22,price = 1 |
pattern |
null —— 28 个部件里唯一一个,因此没有任何"pattern 型"配方 |
| 纹理 | tgregworks:items/parts/chunk |
| 本地化名 | tgregworks.toolpart.shard(zh_CN「碎片」) |
| TiC 对应物 | TinkerTools.toolShard(PartTypes.getCounterpart()) |
因为 pattern == null,addGregTechPartRecipes 的部件循环
if (pattern != null) 对它整体跳过——碎片不能由 pattern 加工出来,
只能由锭/熔融材料直接转换。
完整的转换图
| 方向 | 机器 | 配方槽 | 数量 | 时长 | 开关 | 默认 |
|---|---|---|---|---|---|---|
| 1 锭 → 2 碎片 | GT 挤压机 | 1 × 锭 ingot<材料> + 碎片铸件 |
2 | max(160, mDurability) |
ingotToShardRecipe |
true |
| 2 碎片 → 1 锭 | GT 合金炉 | 2 × 碎片 + MetalPatterns.ingot 铸件 |
1 | max(160, mDurability) |
shardToIngotSmelting |
true |
| 144 mB 熔融 → 1 碎片 | GT 流固机 | 碎片铸件 + 144 mB 熔融 | 1 | max(160, mDurability) |
moltenToShardRecipe |
false |
| 1 碎片 → 144 mB 熔融 | GT 流体抽取机 | 1 × 碎片 | 144 mB | max(160, mDurability) |
shardExtractorRecipes |
false |
部件 → n(price) 碎片 |
GT 合金炉 | 1 × 部件 + 碎片铸件 | n(price) |
80 + mDurability × price |
reverseSmelting |
true |
| 黄铜/金板 + 碎片铸件 → 2 碎片 | GT 挤压机 | 1 × 黄铜板/金板 + 碎片铸件 | 2 | 800 | castExtruderRecipes |
条件 |
| 熔融黄铜/金 + 碎片铸件 → 2 碎片 | GT 流固机 | 1000 mB 熔融 + 碎片铸件 | 2 | 800 | castSolidifierRecipes |
false |
n(price) 碎片 → 1 部件 |
GT 挤压机 | n(price) × 碎片 + pattern |
1 | 80 + mDurability × price |
extruderRecipes 且 shardToToolPartRecipe |
true |
n(price) 见 挤压机配方:price 奇数取 price/2+1,偶数取 price/2。
数量比例
- 1 锭 = 2 碎片(压缩比 2:1)
- 反向制作时,部件所需的碎片数 = 该部件所需锭数(
n(price)两处共用同一个price) → 锭与碎片在"做部件"这条路径上是等价的,不存在损耗 - 唯一的比例差是回炉:回炉得到的碎片数也等于锭数,所以同样是等价往返
实际约束:材料必须有锭或宝石
锭↔碎片这一对(以及回炉、碎片制部件)都包在:
ItemStack ingotStack = GT_OreDictUnificator.get(OrePrefixes.ingot, m, 1);
if (addGemToolPartRecipes && ingotStack == null)
ingotStack = GT_OreDictUnificator.get(OrePrefixes.gem, m, 1);
if (stack != null && ingotStack != null) { … }
stack(碎片)永远非空,但 ingotStack 可能为 null →
没有锭形态、也没有宝石形态的材料完全无法进入碎片经济,
既不能做部件也不能修工具(除非走 锭修复 之外的路径)。
gemToolPartRecipes 打开时宝石可以顶替锭,且产出也随之变成宝石。
碎片作为维修材料
registerRepairMaterials()(addShardRepair,默认 true)对每个材料:
ItemStack shard = TGregUtils.newItemStack(m, PartTypes.Chunk, 1);
if (PatternBuilder.instance.materialSets.containsKey(mat.materialName))
PatternBuilder.instance.registerMaterial(shard, 1, mat.materialName);
else
PatternBuilder.instance.registerFullMaterial(shard, 1, mat.materialName, shard, shardRod, matID);
TGregworks.repair.registerShardRepairMaterial(m, 1); // 价值 1
即碎片被注册成 TiC PatternBuilder 的材料,价值 1。
材料已存在时只补一个"最小可修材料"(registerMaterial),
不存在时补齐整套(registerFullMaterial:碎片 1 个、手柄 1 个、ID = matID)。
注意 registerFullMaterial 的第三个参数是碎片自己、第四个是 PartTypes.ToolRod 的碎片手柄——
不是锭。
完整修复公式见 修复修饰符。