跳转至

方块朝向

自定义方块可以通过多种方式实现朝向功能。本文介绍四种常见的朝向类型及其实现方式。

轴对齐朝向

轴对齐朝向类似于原版木头(木原木)的放置方式——方块沿X、Y或Z轴对齐,根据玩家放置时所在的面决定轴向。

使用 minecraft:placement_direction 特质并启用 minecraft:facing_direction,然后在置换中用旋转变换对应:

BP/blocks/axial_block.json
{
    "format_version": "1.26.10",
    "minecraft:block": {
        "description": {
            "identifier": "wiki:axial_block",
            "traits": {
                "minecraft:placement_direction": {
                    "enabled_states": ["minecraft:facing_direction"]
                }
            }
        },
        "components": {
            "minecraft:geometry": "geometry.axial_block",
            "minecraft:material_instances": {
                "*": { "texture": "wiki:axial_side" },
                "end": { "texture": "wiki:axial_end" }
            }
        },
        "permutations": [
            {
                "condition": "q.block_state('minecraft:facing_direction') == 'up' || q.block_state('minecraft:facing_direction') == 'down'",
                "components": { "minecraft:transformation": { "rotation": [0, 0, 0] } }
            },
            {
                "condition": "q.block_state('minecraft:facing_direction') == 'north' || q.block_state('minecraft:facing_direction') == 'south'",
                "components": { "minecraft:transformation": { "rotation": [90, 0, 0] } }
            },
            {
                "condition": "q.block_state('minecraft:facing_direction') == 'east' || q.block_state('minecraft:facing_direction') == 'west'",
                "components": { "minecraft:transformation": { "rotation": [0, 0, 90] } }
            }
        ]
    }
}

方块面附着朝向

类似于按钮和火把——方块附着在某个面上。使用 minecraft:placement_position 特质并启用 minecraft:block_face

description > traits
"minecraft:placement_position": {
    "enabled_states": ["minecraft:block_face"]
}

置换中根据 minecraft:block_face 的值(updownnorthsoutheastwest)旋转模型:

permutations(节选)
{
    "condition": "q.block_state('minecraft:block_face') == 'down'",
    "components": { "minecraft:transformation": { "rotation": [180, 0, 0] } }
},
{
    "condition": "q.block_state('minecraft:block_face') == 'north'",
    "components": { "minecraft:transformation": { "rotation": [90, 0, 0] } }
},
{
    "condition": "q.block_state('minecraft:block_face') == 'south'",
    "components": { "minecraft:transformation": { "rotation": [-90, 0, 0] } }
},
{
    "condition": "q.block_state('minecraft:block_face') == 'east'",
    "components": { "minecraft:transformation": { "rotation": [0, 0, -90] } }
},
{
    "condition": "q.block_state('minecraft:block_face') == 'west'",
    "components": { "minecraft:transformation": { "rotation": [0, 0, 90] } }
}

基本四向朝向(水平)

类似于原版熔炉和发射器——方块面向玩家放置时的方向。使用 minecraft:placement_direction 特质并启用 minecraft:cardinal_direction,用 y_rotation_offset: 180.0 使方块面向玩家:

description > traits
"minecraft:placement_direction": {
    "enabled_states": ["minecraft:cardinal_direction"],
    "y_rotation_offset": 180.0
}

在置换中应用Y轴旋转:

permutations
[
    {
        "condition": "q.block_state('minecraft:cardinal_direction') == 'north'",
        "components": { "minecraft:transformation": { "rotation": [0, 0, 0] } }
    },
    {
        "condition": "q.block_state('minecraft:cardinal_direction') == 'south'",
        "components": { "minecraft:transformation": { "rotation": [0, 180, 0] } }
    },
    {
        "condition": "q.block_state('minecraft:cardinal_direction') == 'east'",
        "components": { "minecraft:transformation": { "rotation": [0, -90, 0] } }
    },
    {
        "condition": "q.block_state('minecraft:cardinal_direction') == 'west'",
        "components": { "minecraft:transformation": { "rotation": [0, 90, 0] } }
    }
]

面朝向(六面)

类似于漏斗和活塞——方块可以朝向六个方向中的任意一个。使用 minecraft:placement_direction 特质并启用 minecraft:facing_direction,再在置换中处理六个方向:

description > traits
"minecraft:placement_direction": {
    "enabled_states": ["minecraft:facing_direction"],
    "y_rotation_offset": 180.0
}

六个方向对应的旋转变换:

permutations(节选)
{
    "condition": "q.block_state('minecraft:facing_direction') == 'up'",
    "components": { "minecraft:transformation": { "rotation": [-90, 0, 0] } }
},
{
    "condition": "q.block_state('minecraft:facing_direction') == 'down'",
    "components": { "minecraft:transformation": { "rotation": [90, 0, 0] } }
},
{
    "condition": "q.block_state('minecraft:facing_direction') == 'north'",
    "components": { "minecraft:transformation": { "rotation": [0, 0, 0] } }
},
{
    "condition": "q.block_state('minecraft:facing_direction') == 'south'",
    "components": { "minecraft:transformation": { "rotation": [0, 180, 0] } }
},
{
    "condition": "q.block_state('minecraft:facing_direction') == 'east'",
    "components": { "minecraft:transformation": { "rotation": [0, -90, 0] } }
},
{
    "condition": "q.block_state('minecraft:facing_direction') == 'west'",
    "components": { "minecraft:transformation": { "rotation": [0, 90, 0] } }
}

16向朝向(斜角方向)

如果需要16个方向(4个基本方向加12个斜向),游戏目前没有内置特质支持,需要结合脚本API自定义实现。详见16向朝向教程。