跳转至

方块

方块(Block)是Minecraft基岩版世界的基本构成单元。世界中的地形、建筑、植被等一切静态环境都由方块组成。方块占据世界网格中的一个1×1×1立方空间,拥有固定的整数坐标位置。

概述

方块是Minecraft世界的最基础元素。每个方块都有一个赋命名空间标识符和一系列属性,包括硬度、透明度、亮度、可燃性等。方块之间的组合和排列构成了世界的地形和生态。

方块在世界中的位置由一组整数坐标(x, y, z)唯一确定。与实体不同,方块不能自由移动(落沙等特殊方块的下落实际上是通过实体实现的)。方块只能被放置和摧毁,或通过游戏逻辑改变其状态。

方块状态

方块状态(Block State)是方块的可变属性,用于描述方块在不同条件下的不同表现。例如,台阶方块有上半和下半两种放置状态,活塞方块有朝向和是否伸出等状态。

每种方块可以拥有若干个方块状态属性,每个属性有一个固定的值域。方块的所有状态属性的取值组合称为该方块的一个方块置换(Block Permutation)。游戏内部通过方块置换来唯一确定一个方块的完整状态。

在附加包中,自定义方块可以在定义文件的states字段中声明自定义的方块状态属性,并使用permutations字段为不同的方块置换指定不同的组件集。

方块萃取

方块萃取(Block Trait)是一种将常见的方块状态属性和相关逻辑打包为可复用模块的机制。方块萃取允许自定义方块通过简单的声明来获得放置方向、朝向等常见行为,而无需手动定义方块状态和置换逻辑。

方块实体

方块实体(Block Entity)是附着在特定方块上的数据容器,用于存储超出方块状态所能表达的复杂数据。箱子中的物品、告示牌上的文字、酿造台的配方进度等都通过方块实体存储。

注意

在早期文档和代码中,方块实体也被称为瓦片实体(Tile Entity)。两者是同一概念的不同称呼。

方块实体的数据以NBT格式存储在存档数据库中。并非所有方块都拥有方块实体,只有需要存储额外数据的方块才会创建方块实体。

数据驱动

自定义方块通过行为包中的定义文件以数据驱动方式创建。定义文件位于行为包的blocks/目录中,根键为minecraft:block,主要包含以下部分:

  • 描述(Description):声明方块的标识符和所属的创造模式物品栏类别。
  • 组件(Components):定义方块的各项属性,例如硬度、摩擦力、亮度、碰撞箱、选取箱、几何体模型等。
  • 方块状态(States):声明自定义的方块状态属性。
  • 方块置换(Permutations):为不同的方块状态组合指定不同的组件。
  • 方块萃取(Traits):声明复用的方块状态模块。
  • 事件(Events):定义可被触发的事件逻辑。

方块形状

方块形状(Block Shape)是硬编码的方块渲染模型。原版方块大多使用预定义的方块形状来定义其外观,例如完整方块、台阶、楼梯、栅栏、火把等形状。方块形状本身不可通过附加包自定义,但可以通过数据驱动将原版方块切换到不同的方块形状。

自定义方块也可以使用几何体模型替代方块形状来定义外观,以获得更大的造型自由度。

含水

含水(Waterlog)是一种方块特性,允许水源方块与非完整方块共存于同一方块位置。含水方块在视觉上会在方块的空隙处显示水面,在逻辑上同时具有水和宿主方块的特性。

方块标签

方块可以被赋予标签(Tag),用于在命令、配方、战利品表等场景中按类别批量引用方块。原版游戏定义了大量方块标签,例如stonewood等。附加包也可以为自定义方块添加标签。