黏土熔融桶 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 等贴图。