生物头颅 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) 的纯客户端代码,不注册任何实体。