生物头颅 Iguana Skull

本 mod 唯一的新增「可穿戴头颅」物品,用于承载 Tinkers’ Construct 工具无法通过普通途径获得的几种头颅掉落。

  • 注册名:skullItem
  • 类:iguanaman.iguanatweakstconstruct.mobheads.items.IguanaSkull → net.minecraft.item.ItemSkull
  • 本地化名:iguana.tcon.skull + . + 变体名
  • 容器物品:minecraft:skull(用完归还原版头颅)
  • 可作护甲槽:仅槽位 0(头盔位),isValidArmor 只判断 armorType == 0
  • 无 ItemBlock:头颅的方块形态是本 mod 单独注册的 Iguana Skull 方块,不由本物品派生

变体表(metadata)

变体存在 IguanaSkull.headEntries(Map<Integer, HeadEntry>)中,可在运行时追加:

meta 常量 变体名 纹理 来源
0 META_ENDERMAN enderman skull_enderman 静态初始化
1 META_PIGZOMBIE pigman skull_pigman 静态初始化
2 META_BLAZE blaze skull_blaze 静态初始化
3 META_BLIZZ blizz skull_blizz 仅当 Thermal Foundation 加载

meta 3 的注册发生在 IguanaMobHeads.integrateThermalExpansion(),由 ModSupportHelper.ThermalFoundation 守卫。Thermal Foundation 缺失时 meta 3 不会出现在 headEntries,也就不会出现在创造模式物品栏或被 MobHeadHandler 判定为「已注册」(掉落时不会有 Blizz 头颅)。

行为细节

  • 取名:getUnlocalizedName(ItemStack) 用 getItemDamage() 查 headEntries,查不到时回落到 meta 0(不会崩)。
  • 图标:getIconFromDamage 同样对未注册 meta 回落 0;getSubItems 只遍历 headEntries.keySet(),因此创造模式里只会出现实际注册的变体。
  • 注册图标:registerIcons 遍历全部 HeadEntry.values(),以 iguanatweakstconstruct:<iconString> 注册。

放置

onItemUse 是 ItemSkull 方法的复制粘贴版,唯一改动是把放置的方块换成 IguanaMobHeads.skullBlock(func_149965_a(..., TileEntitySkull) 传入自身 tile 实体以设置朝向/类型)。放置成功后 --stackSize。

掉落来源

掉落由 生物头颅掉落机制 计算,取决于玩家手中工具的 Beheading 修饰符等级;概率见配置表 MobHeads 配置。作为 挖掘等级提升 修饰符的素材使用。

客户端渲染

  • 方块形态的渲染器:mobheads/renderers/IguanaTileEntitySkullRenderer(含 ModelEnderManHead / ModelBucketHelmet / ModelHeadwear 等模型类)
  • 装备在玩家身上的渲染:mobheads/handlers/RenderPlayerHandler
  • 代理:MobHeadClientProxy / MobHeadCommonProxy(@SidedProxy)

以上全部是 @SideOnly(Side.CLIENT) 的纯客户端代码,不注册任何实体。