黏土牛奶桶 Clay Bucket (Milk)

  • 注册名:clayBucketMilk
  • 类:iguanaman.iguanatweakstconstruct.claybuckets.items.ClayBucketMilk → net.minecraft.item.ItemBucketMilk
  • 本地化名:iguana.tcon.clayBucket.Milk
  • 纹理:iguanatweakstconstruct:clayBucketMilk
  • 堆叠上限:默认 64(ItemBucketMilk 允许堆叠)
  • 容器物品:烧制黏土桶

双重效果

牛奶桶同时具备两条互不相关的功能。

1. 饮用

onEaten 覆写的做法是构造一个原版牛奶桶喂给父类,再翻译返回值:

ItemStack vanillaMilkStack = new ItemStack(Items.milk_bucket);
ItemStack result = super.onEaten(vanillaMilkStack, world, player);
if (result.getItem() == Items.bucket) return new ItemStack(IguanaItems.clayBucketFired);
return result;

super.onEaten 会清除一切负面效果(中毒、凋零、缓慢),并把 milk_bucket 变成 bucket;此覆写再把铁桶换成烧制黏土桶。因此奶桶可以被回收并再次挤奶。

2. 挤奶容器

ClayBucketHandler.EntityInteract 中,玩家手持 烧制黏土桶 右键 EntityCow 时产出本物品 1 个。若背包已满则 dropPlayerItemWithRandomChoice 掉落在地。

OreDict

OreDictionary.registerOre("listAllmilk", clayBucketMilk)——注释直言「i suppose this is for pams harvestcraft」,沿用 Pam’s HarvestCraft 的 ore 名。

本物品没有注册进 FluidContainerRegistry(牛奶不是 Forge 流体),仅靠上述两条路径参与游戏。