Skip to content

可旋转方块

本页面镜像自
BedrockWiki

根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。

格式与最低引擎版本 1.20.30

本教程假设您已掌握方块基础知识,包括方块状态方块特性
开始前请先阅读方块指南

旋转类型

  • 基本方向旋转

    • 适用于雕刻南瓜和熔炉
    • 4个方向 - 'north'(北)、'south'(南)、'east'(东)、'west'(西)
  • 面向方向旋转

    • 适用于发射器和观测器
    • 6个方向 - 'down'(下)、'up'(上)、'north'(北)、'south'(南)、'east'(东)、'west'(西)
  • 方块面附着旋转

    • 适用于梯子和物品展示框
    • 6个附着方向 - 'down'(下)、'up'(上)、'north'(北)、'south'(南)、'east'(东)、'west'(西)
  • 原木/柱体旋转

    • 适用于原木和玄武岩
    • 3个轴对齐方向
  • 精确旋转

    • 适用于头颅、告示牌和旗帜
    • 16个方向(以22.5度递增)
    • 4个侧面附着方向

基本方向旋转

特性

使用minecraft:placement_direction方块特性并启用minecraft:cardinal_direction状态来设置方块方向。

json
"description": {
  "identifier": "wiki:cardinal_direction_example",
  // 在此处定义方块特性
  "traits": {
    "minecraft:placement_direction": {
      "enabled_states": ["minecraft:cardinal_direction"], // 可在查询中使用,例如`q.block_state('minecraft:cardinal_direction') == 'north'`
      "y_rotation_offset": 180 // 朝向玩家
    }
  }
}

置换

通过方块置换实现旋转。每个置换包含minecraft:transformation组件,检查minecraft:cardinal_direction状态并应用相应旋转。

下方旋转值假设模型正面朝北

json
"permutations": [
  // 面向北
  {
    "condition": "q.block_state('minecraft:cardinal_direction') == 'north'",
    "components": {
      "minecraft:transformation": { "rotation": [0, 0, 0] }
    }
  },
  // 面向西
  {
    "condition": "q.block_state('minecraft:cardinal_direction') == 'west'",
    "components": {
      "minecraft:transformation": { "rotation": [0, 90, 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] }
    }
  }
]

面向方向旋转

特性

使用minecraft:placement_direction方块特性并启用minecraft:facing_direction状态来设置方块方向。

json
"description": {
  "identifier": "wiki:facing_direction_example",
  // 在此处定义方块特性
  "traits": {
    "minecraft:placement_direction": {
      "enabled_states": ["minecraft:facing_direction"], // 可在查询中使用,例如`q.block_state('minecraft:facing_direction') == 'north'`
    }
  }
}

置换

通过方块置换实现旋转。每个置换包含minecraft:transformation组件,检查minecraft:facing_direction状态并应用相应旋转。

下方旋转值假设模型正面朝北

json
"permutations": [
  // 朝下
  {
    "condition": "q.block_state('minecraft:facing_direction') == 'down'",
    "components": {
      "minecraft:transformation": { "rotation": [-90, 0, 0] }
    }
  },
  // 朝上
  {
    "condition": "q.block_state('minecraft:facing_direction') == 'up'",
    "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') == 'west'",
    "components": {
      "minecraft:transformation": { "rotation": [0, 90, 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] }
    }
  }
]

方块面附着旋转

特性

使用minecraft:placement_position方块特性并启用minecraft:block_face状态来设置方块附着面。

json
"description": {
  "identifier": "wiki:facing_direction_example",
  // 在此处定义方块特性
  "traits": {
    "minecraft:placement_position": {
      "enabled_states": ["minecraft:block_face"], // 可在查询中使用,例如`q.block_state('minecraft:block_face') == 'north'`
    }
  }
}

置换

通过方块置换实现旋转。每个置换包含minecraft:transformation组件,检查minecraft:block_face状态并应用相应旋转。

下方旋转值假设模型正面朝北

json
"permutations": [
  // 朝下
  {
    "condition": "q.block_state('minecraft:block_face') == 'down'",
    "components": {
      "minecraft:transformation": { "rotation": [-90, 0, 0] }
    }
  },
  // 朝上
  {
    "condition": "q.block_state('minecraft:block_face') == 'up'",
    "components": {
      "minecraft:transformation": { "rotation": [90, 0, 0] }
    }
  },
  // 朝北
  {
    "condition": "q.block_state('minecraft:block_face') == 'north'",
    "components": {
      "minecraft:transformation": { "rotation": [0, 0, 0] }
    }
  },
  // 朝西
  {
    "condition": "q.block_state('minecraft:block_face') == 'west'",
    "components": {
      "minecraft:transformation": { "rotation": [0, 90, 0] }
    }
  },
  // 朝南
  {
    "condition": "q.block_state('minecraft:block_face') == 'south'",
    "components": {
      "minecraft:transformation": { "rotation": [0, 180, 0] }
    }
  },
  // 朝东
  {
    "condition": "q.block_state('minecraft:block_face') == 'east'",
    "components": {
      "minecraft:transformation": { "rotation": [0, -90, 0] }
    }
  }
]

原木旋转

实现与原版原木相同的旋转方式

实验性功能

需要启用假日创作者功能来触发事件

方块状态

json
"states": {
  "wiki:axis": [0, 1, 2]
}

方块事件与触发

使用Molang表达式通过查询方块附着面来确定坐标轴方向(转换为0、1或2)

json
"wiki:set_axis": {
  "set_block_state": {
    "wiki:axis": "数学运算.floor(q.block_face / 2)"
  }
}

使用minecraft:on_player_placing触发器组件调用事件

json
"minecraft:on_player_placing": {
  "event": "wiki:set_axis"
}

置换

json
"permutations": [
  {
    "condition": "q.block_state('wiki:axis') == 0",
    "components": {
      "minecraft:transformation": { "rotation": [0, 0, 0] }
    }
  },
  {
    "condition": "q.block_state('wiki:axis') == 1",
    "components": {
      "minecraft:transformation": { "rotation": [90, 0, 0] }
    }
  },
  {
    "condition": "q.block_state('wiki:axis') == 2",
    "components": {
      "minecraft:transformation": { "rotation": [0, 0, 90] }
    }
  }
]

原木旋转示例

实验性功能

本示例需要启用假日创作者功能以使用minecraft:unit_cube