Roadhog360 头颅(Roadhog360 Skull)

基本信息

属性 值
注册名 minecraft:skull(metadata=3)
实际游戏内名称 “Roadhog360’s Head”
物品类型 ItemSkull 子类注入(无新物品 ID)
创造栏标签 minecraft:tabDecorations(继承 ItemSkull)
最大堆叠 64(继承自 ItemSkull)
附魔适用 是
UUID 390d0a39-5541-4e8e-8f07-115bb41684c4(作者 UUID)

功能

通过 Mixin 在 ItemSkull 创造栏列表末尾注入一个 metadata=3 的"Roadhog360’s Head"头颅物品。该物品 NBT 写死作者 UUID + 名字,纹理为 mod 提供的 assets/simpleskinbackport/textures/items/skull_roadhog360.png。

实现(MixinItemSkull)

@Inject(method = "getSubItems", at = @At(value = "INVOKE",
    target = "Ljava/util/List;add(Ljava/lang/Object;)Z", shift = At.Shift.AFTER))
private void injectMySkull(Item p_150895_1_, CreativeTabs p_150895_2_, List<ItemStack> p_150895_3_, CallbackInfo ci,
    @Local int i) {
    if (i == 3) {
        ItemStack skull = new ItemStack(p_150895_1_, 1, 3);
        NBTTagCompound nbt = new NBTTagCompound();
        NBTTagCompound skullOwner = new NBTTagCompound();
        NBTUtil.func_152460_a(skullOwner, new GameProfile(
            UUID.fromString("390d0a39-5541-4e8e-8f07-115bb41684c4"), "Roadhog360"));
        nbt.setTag("SkullOwner", skullOwner);
        skull.setTagCompound(nbt);
        p_150895_3_.add(skull);
    }
}

行为细节

  1. 注入时机:getSubItems 中每次 List.add 调用后通过 @Local int i 拿到 metadata;当 i == 3 时(即原版循环到 zombie/skeleton/wither/steve 第 4 项)注入作者头颅
  2. NBT 构造:用 NBTUtil.func_152460_a(NBTTagCompound, GameProfile) 把 GameProfile 写入 SkullOwner 子标签
  3. 图标识别:第二次注入(registerIcons)注册 simpleskinbackport:skull_roadhog360 图标;getIconIndex 重写为:当 damage == 3 且 NBT SkullOwner 名字为 Roadhog360 时返回该自定义图标,否则走原版逻辑

使用方式

使用方式 触发条件 使用效果
装备(头盔槽) 放入头盔槽 渲染对应玩家头颅作为 3D 头盔(mod 的 ItemSkullRenderer 接管 1.7.10 原版缺失的 3D 渲染)
放置(方块状态) 右键方块表面 作为 minecraft:skull 方块放置;metdata=3 走 vanilla 路径,但作者头像纹理由 ItemSkullRenderer 处理
创造栏取出 在创造栏搜索 Roadhog360 或翻到头颅分类 获得 ItemStack(skull, 1, 3) 带 SkullOwner NBT

数值

数值 值 来源
metadata 值 3 ItemStack(p_150895_1_, 1, 3)
GameProfile ID 390d0a39-5541-4e8e-8f07-115bb41684c4 UUID.fromString("...")
GameProfile Name Roadhog360 new GameProfile(uuid, "Roadhog360")
图标注册 ID simpleskinbackport:skull_roadhog360 registerIcon(MOD_ID + ":skull_roadhog360")

关联机制

步骤 位置
1. 创造栏列表填充 ItemSkull.getSubItems 调用 → mixin 注入第 4 项
2. 图标注册 ItemSkull.registerIcons 调用 → mixin 注册 skull_roadhog360
3. 物品栏渲染 ItemSkullRenderer 通过 MinecraftForgeClient.registerItemRenderer(Items.skull, ...) 接管 3D 渲染
4. TileEntity 渲染 TileEntitySkullRenderer + MixinModelSkull 给 skull 加 hat layer

第三方 mod 集成

  • Botania(可选):通过 MixinRenderTileSkullOverride.fixDefaultTexture 让所有 skull(含作者头颅)走 64x 渲染路径

相关条目