黏土熔融桶 Clay Buckets (Tinker’s Liquids)
一个 Item 携带全部 27 种 Tinkers’ 熔融流体,靠 metadata 区分变体。这是本 mod 唯一的多变体物品族。
- 注册名:
clayBucketsTinkers - 类:
iguanaman.iguanatweakstconstruct.claybuckets.items.ClayBucketTinkerLiquids→tconstruct.smeltery.items.FilledBucket - 本地化名:
iguana.tcon.clayBucket - 构造参数:
new ClayBucketTinkerLiquids(null)——内容方块传null - 容器物品:无(
setContainerItem(null))
变体表(27 个 metadata)
metadata 由 FluidContainerRegistry.registerFluidContainer(tinkerFluids[i], new ItemStack(clayBucketsTinkers, 1, i), emptyClayBucket) 的下标 i 决定,顺序严格对应 IguanaItems.preInit 中的数组字面量:
| meta | 流体 | 材料/说明 |
|---|---|---|
| 0 | 熔融铁 | 基础金属 |
| 1 | 熔融金 | |
| 2 | 熔融铜 | |
| 3 | 熔融锡 | |
| 4 | 熔融铝 | |
| 5 | 熔融钴 | 高阶头部材料 |
| 6 | 熔融阿迪特(Ardite) | 高阶手柄材料 |
| 7 | 熔融青铜 | |
| 8 | 熔融铝黄铜 | |
| 9 | 熔融玛玉灵(Manyullyn) | 顶级材料 |
| 10 | 熔融铝土(Alumite) | |
| 11 | 熔融黑曜石 | |
| 12 | 熔融钢 | |
| 13 | 熔融玻璃 | |
| 14 | 熔融石 | |
| 15 | 熔融绿宝石 | |
| 16 | 血 | 液态生物质 |
| 17 | 熔融镍 | |
| 18 | 熔融铅 | |
| 19 | 熔融银 | |
| 20 | 熔融闪长岩(Shiny) | |
| 21 | 熔融因瓦(Invar) | |
| 22 | 熔融金银合金(Electrum) | |
| 23 | 熔融末影 | |
| 24 | 蓝史莱姆液 | TinkerWorld.blueSlimeFluid |
| 25 | 胶水 | glueFluid |
| 26 | 生铁 | pigIronFluid |
重要:每个 meta 只有在对应
Fluid非 null 时才会被注册(if (tinkerFluids[i] != null))。若某个 mod 移除了某种熔融流体,该 meta 就不会出现在FluidContainerRegistry中——用该 metadata 的桶既装不上也倒不出,整条数据依赖加载顺序。整个流体组的前提是TinkerSmeltery.buckets != null,否则这 27 条注册全部跳过。
装填
ClayBucketHandler.bucketFill(FillBucketEvent,HIGHEST)遍历 TinkerSmeltery.fluidBlocks 全部下标,命中后把流体方块 setBlockToAir、返回 new ItemStack(clayBucketsTinkers, 1, id)。创造模式也会清掉方块。
倾倒
覆写 onItemRightClick:若父类 FilledBucket 放置成功后的返回值是 minecraft:bucket,则消耗一个桶(stackSize--)并原样返回,容器物品为空。
渲染
覆写 registerIcons,把父类的 textureNames 换成 iguanatweakstconstruct:clayBucket_<textureNames[i]>(沿用 Tinkers’ 自己的名称数组,只换命名空间前缀)。资源目录中实际存在 clayBucket_iron.png、clayBucket_bronze.png、clayBucket_manyullyn.png、clayBucket_glue.png、clayBucket_aluminum.png 等贴图。