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 渲染路径
相关条目