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);
}
}
行为细节
- 注入时机:
getSubItems中每次List.add调用后通过@Local int i拿到 metadata;当i == 3时(即原版循环到 zombie/skeleton/wither/steve 第 4 项)注入作者头颅 - NBT 构造:用
NBTUtil.func_152460_a(NBTTagCompound, GameProfile)把 GameProfile 写入SkullOwner子标签 - 图标识别:第二次注入(
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 渲染路径
相关条目
- 物品效果:64x 皮肤解析器 - 玩家头像下载解析
- 1.8 皮肤模型系统 -
ItemSkullRenderer接管渲染