跳到主要内容

自定义头颅

下载

本包用于创建更多自定义头颅

在 Java 版中,可以使用特定的命令获取特定玩家的头颅。本包旨在方便创作者根据玩家皮肤自定义一种新的自定义头颅。

温馨提示

本文假定您已经能够独立编写属于自己的自定义方块。如果您还不能编写自定义方块,请阅读模块 2 的教程:5.1 数据驱动方块

注意事项
  1. 目前,自定义头颅只支持 4 向放置,原版为 16 向。这有望在更高版本中使用最新的minecraft:placement_direction方块特征解决,因此未来可能会继续更新。
  2. 目前,自定义头颅暂时不支持烟火之星的合成配方。
  3. 包的最低需求版本为1.21.110,然而这是由方块模型文件的item_display_transforms引起的。若需要,读者可以删除相关字段,并将模型文件的格式版本改为1.12.0,这样包的最低需求版本就会降低为1.21.90,但如此做后会牺牲自定义头颅在物品栏、物品展示框、掉落物上的展示效果。

文件架构

下面的文件架构中,粗体部分代表本包的核心文件。在您合并包时应当着重关注下面被粗体的文件。

其中可能会出现多个文件冲突。如果在粘贴过程中遇到冲突,请务必选择跳过这些文件而非覆盖您原有的文件,并按照下面可能需要修改的文件列表进行选择性粘贴。

  • BP_custom_player_head 文件图标BP_custom_player_head:行为包根目录
    • blocks 文件图标blocks:方块定义
      • player_head 文件图标player_head:玩家头颅
        • andy7343.block.json 文件图标andy7343.block.jsonAndy7343 的头 方块定义
        • greeleaf.block.json 文件图标greeleaf.block.jsonGreeLeaf 的头 方块定义
        • kriswenyu.block.json 文件图标kriswenyu.block.jsonKrisWenYu 的头 方块定义
        • pigeonki.block.json 文件图标pigeonki.block.jsonPigeonKI 的头 方块定义
        • pumpkinjui.block.json 文件图标pumpkinjui.block.jsonPumpkinJui 的头 方块定义
        • yzbwdlt.block.json 文件图标yzbwdlt.block.jsonYZBWDLT 的头 方块定义
    • items 文件图标items:物品定义
      • player_head 文件图标player_head:玩家头颅
        • andy7343.item.json 文件图标andy7343.item.jsonAndy7343 的头 物品定义
        • greeleaf.item.json 文件图标greeleaf.item.jsonGreeLeaf 的头 物品定义
        • kriswenyu.item.json 文件图标kriswenyu.item.jsonKrisWenYu 的头 物品定义
        • pigeonki.item.json 文件图标pigeonki.item.jsonPigeonKI 的头 物品定义
        • pumpkinjui.item.json 文件图标pumpkinjui.item.jsonPumpkinJui 的头 物品定义
        • yzbwdlt.item.json 文件图标yzbwdlt.item.jsonYZBWDLT 的头 物品定义
    • manifest.json 文件图标manifest.json:(有冲突风险)清单文件
    • pack_icon.png 文件图标pack_icon.png:包图标
  • RP_custom_player_head 文件图标RP_custom_player_head:资源包根目录
    • attachables 文件图标attachables:附着物定义
      • player_head 文件图标player_head:玩家头颅
        • andy7343.attachable.json 文件图标andy7343.attachable.jsonAndy7343 的头 附着物定义
        • greeleaf.attachable.json 文件图标greeleaf.attachable.jsonGreeLeaf 的头 附着物定义
        • kriswenyu.attachable.json 文件图标kriswenyu.attachable.jsonKrisWenYu 的头 附着物定义
        • pigeonki.attachable.json 文件图标pigeonki.attachable.jsonPigeonKI 的头 附着物定义
        • pumpkinjui.attachable.json 文件图标pumpkinjui.attachable.jsonPumpkinJui 的头 附着物定义
        • yzbwdlt.attachable.json 文件图标yzbwdlt.attachable.jsonYZBWDLT 的头 附着物定义
    • models 文件图标models:模型
      • blocks 文件图标blocks:方块模型
        • custom_player_head.geo.json 文件图标custom_player_head.geo.json自定义玩家头颅 方块模型
      • entity 文件图标entity:实体模型
        • custom_player_head.geo.json 文件图标custom_player_head.geo.json自定义玩家头颅 实体附着物模型
    • texts 文件图标texts:文本
      • zh_CN.lang 文件图标zh_CN.lang有冲突风险)中文翻译文本
      • en_US.lang 文件图标en_US.lang有冲突风险)英文翻译文本
    • textures 文件图标textures:贴图
      • entity 文件图标entity:实体贴图
        • andy7343.png 文件图标andy7343.pngAndy7343 皮肤
        • greeleaf.png 文件图标greeleaf.pngGreeLeaf 皮肤
        • kriswenyu.png 文件图标kriswenyu.pngKrisWenYu 皮肤
        • pigeonki.png 文件图标pigeonki.pngPigeonKI 皮肤
        • pumpkinjui.png 文件图标pumpkinjui.pngPumpkinJui 皮肤
        • yzbwdlt.png 文件图标yzbwdlt.pngYZBWDLT 皮肤
      • terrain_texture.json 文件图标terrain_texture.json有冲突风险)方块贴图定义文件
    • manifest.json 文件图标manifest.json:(有冲突风险)清单文件
    • pack_icon.png 文件图标pack_icon.png:包图标

使用方法

您可正常使用我们提供的 6 个预设头颅。它们和原版的头颅具有相同的碰撞箱、选择箱,并且都会被水冲掉,且会隐藏定位栏。

自定义新头颅

基于我们的预设,您完全可以自行设定任意数量的新玩家头颅。但在此之前,您需要先准备一个或多个皮肤文件。下面的教程中,我们假设您准备了一个皮肤playername.png 文件图标playername.png。现在请按照以下步骤进行:

  1. 在行为包的blocks 文件图标blocks - player_head 文件图标player_head中新建playername.block.json 文件图标playername.block.json,将yzbwdlt.block.json 文件图标yzbwdlt.block.json的内容复制过去,然后替换掉所有带yzbwdlt的字段(也就是高亮部分):

    方块定义
    playername.block.json
    {
    "format_version": "1.21.90",
    "minecraft:block": {
    "description": {
    "identifier": "player_head:playername",
    "menu_category": { "category": "items", "group": "minecraft:itemGroup.name.skull" },
    "traits": {
    "minecraft:placement_direction": {
    "enabled_states": [ "minecraft:cardinal_direction" ],
    "y_rotation_offset": 180
    },
    "minecraft:placement_position": {
    "enabled_states": [ "minecraft:block_face" ]
    }
    }
    },
    "components": {
    "minecraft:geometry": { "identifier": "geometry.custom_player_head", "bone_visibility": { "player_head_wall": "false" } },
    "minecraft:material_instances": { "*": { "texture": "player_head_playername", "render_method": "alpha_test" } },
    "minecraft:collision_box": { "origin": [ -4, 0, -4 ], "size": [ 8, 8, 8 ] },
    "minecraft:selection_box": { "origin": [ -4, 0, -4 ], "size": [ 8, 8, 8 ] },
    "minecraft:destructible_by_explosion": { "explosion_resistance": 1 },
    "minecraft:destructible_by_mining": { "seconds_to_destroy": 1 },
    "minecraft:liquid_detection": { "detection_rules": [ { "on_liquid_touches": "popped" } ] },
    "minecraft:destruction_particles": { "texture": "soul_sand", "particle_count": 50 }
    },
    "permutations": [
    {
    "condition": "q.block_state('minecraft:block_face') != 'up' && q.block_state('minecraft:block_face') != 'down'",
    "components": {
    "minecraft:collision_box": { "origin": [ 0, 4.5, -4 ], "size": [ 8, 8, 8 ] },
    "minecraft:selection_box": { "origin": [ 0, 4, -4 ], "size": [ 8, 8, 8 ] },
    "minecraft:geometry": { "identifier": "geometry.custom_player_head", "bone_visibility": { "player_head_ground": "false" } }
    }
    },
    {
    "condition": "q.block_state('minecraft:cardinal_direction') == 'north' || q.block_state('minecraft:block_face') == 'north'",
    "components": { "minecraft:transformation": { "rotation": [ 0, 90, 0 ] } }
    },
    {
    "condition": "q.block_state('minecraft:cardinal_direction') == 'west' || q.block_state('minecraft:block_face') == 'west'",
    "components": { "minecraft:transformation": { "rotation": [ 0, 180, 0 ] } }
    },
    {
    "condition": "q.block_state('minecraft:cardinal_direction') == 'south' || q.block_state('minecraft:block_face') == 'south'",
    "components": { "minecraft:transformation": { "rotation": [ 0, 270, 0 ] } }
    }
    ]
    }
    }
  2. 在行为包的items 文件图标items - player_head 文件图标player_head中新建playername.item.json 文件图标playername.item.json,将yzbwdlt.item.json 文件图标yzbwdlt.item.json的内容复制过去,然后替换掉所有带yzbwdlt的字段(也就是高亮部分):

    物品定义
    playername.item.json
    {
    "format_version": "1.21.90",
    "minecraft:item": {
    "description": {
    "identifier": "player_head:playername",
    "menu_category": { "category": "items", "group": "minecraft:itemGroup.name.skull" }
    },
    "components": {
    "minecraft:block_placer": { "block": "player_head:playername", "replace_block_item": true },
    "minecraft:wearable": { "slot": "slot.armor.head", "hides_player_location": true },
    "minecraft:display_name": { "value": "tile.player_head:playername.name" },
    "minecraft:rarity": "uncommon"
    }
    }
    }
  3. 在资源包的attachables 文件图标attachables - player_head 文件图标player_head中新建playername.attachable.json 文件图标playername.attachable.json,将yzbwdlt.attachable.json 文件图标yzbwdlt.attachable.json的内容复制过去,然后替换掉所有带yzbwdlt的字段(也就是高亮部分):

    附着物定义
    playername.attachable.json
    {
    "format_version": "1.10.0",
    "minecraft:attachable": {
    "description": {
    "identifier": "player_head:playername",

    "render_controllers": [ "controller.render.default" ],
    "materials": { "default": "armor" },
    "textures": { "default": "textures/entity/playername" },
    "geometry": { "default": "geometry.custom_player_head.entity" }
    }
    }
    }
  4. 更改资源包的texts 文件图标texts中的en_US.lang 文件图标en_US.langzh_CN.lang 文件图标zh_CN.lang,新增方块名称。

    语言文件
    en_US.lang
    ## ===== Blocks =====
    tile.player_head:yzbwdlt.name=YZBWDLT's Head
    tile.player_head:andy7343.name=Andy7343's Head
    tile.player_head:greeleaf.name=GreeLeaf's Head
    tile.player_head:pigeonki.name=PigeonKI's Head
    tile.player_head:pumpkinjui.name=PumpkinJui's Head
    tile.player_head:kriswenyu.name=KrisWenYu's Head
    tile.player_head:playername.name=PlayerName's Head
    zh_CN.lang
    ## ===== Blocks =====
    tile.player_head:yzbwdlt.name=YZBWDLT 的头
    tile.player_head:andy7343.name=Andy7343 的头
    tile.player_head:greeleaf.name=GreeLeaf 的头
    tile.player_head:pigeonki.name=PigeonKI 的头
    tile.player_head:pumpkinjui.name=PumpkinJui 的头
    tile.player_head:kriswenyu.name=KrisWenYu 的头
    tile.player_head:playername.name=PlayerName 的头
  5. 更改资源包的textures 文件图标textures中的terrain_texture.json 文件图标terrain_texture.json,新增方块贴图 ID。

    方块贴图定义
    terrain_texture.json
    {
    "resource_pack_name": "player_head",
    "texture_data": {
    "player_head_yzbwdlt": { "textures": "textures/entity/yzbwdlt" },
    "player_head_andy7343": { "textures": "textures/entity/andy7343" },
    "player_head_greeleaf": { "textures": "textures/entity/greeleaf" },
    "player_head_pigeonki": { "textures": "textures/entity/pigeonki" },
    "player_head_pumpkinjui": { "textures": "textures/entity/pumpkinjui" },
    "player_head_kriswenyu": { "textures": "textures/entity/kriswenyu" },
    "player_head_playername": { "textures": "textures/entity/playername" }
    }
    }
  6. 在资源包的textures 文件图标textures - entity 文件图标entity,将玩家的皮肤复制进去并命名为playername.png 文件图标playername.png

现在大退重进游戏,你就能够得到一个新的玩家头颅了!