跳转至

方块特质

方块特质(Block Trait)是自定义方块用于复用部分原版方块状态和相关设置逻辑的机制。方块特质使自定义方块可以通过声明获得类似原版方块的放置方向、附着位置或连接关系,而无需完整手写对应的状态更新逻辑。

概述

方块特质不是普通组件。普通组件通常直接定义方块的某项属性或行为,而方块特质更接近一组由引擎维护的状态和状态设置规则。方块放置、邻近方块变化或特定交互发生时,特质可以自动更新其启用的方块状态。

方块特质的核心价值在于复用原版方块已有的常见模式。例如,许多方块需要根据玩家放置时的朝向旋转;许多附着型方块需要记录被放置在地面、墙面还是天花板;栅栏或玻璃板类方块需要根据相邻方块决定连接方向。

常见特质

基岩版公开的方块特质会随版本扩展。常见特质包括:

特质 主要启用状态 作用
minecraft:placement_direction minecraft:cardinal_directionminecraft:facing_directionminecraft:corner_and_cardinal_directionminecraft:sixteen_way_rotation 根据玩家放置方块时的朝向设置方向相关状态
minecraft:placement_position minecraft:block_faceminecraft:vertical_half 根据方块相对于相邻方块的放置位置设置附着面、上下半部等状态
minecraft:connection minecraft:connection_northminecraft:connection_eastminecraft:connection_southminecraft:connection_west 根据相邻方块关系设置水平连接状态
minecraft:multi_block minecraft:multi_block_part 使一个定义表示跨越多个方块位置的多方块结构

具体可用特质、可启用状态和实验性要求应以对应游戏版本的官方参考为准。

与方块状态

方块特质通常通过启用一个或多个原版方块状态发挥作用。例如,minecraft:placement_direction可以启用水平朝向、六面朝向或楼梯角部相关状态,minecraft:placement_position可以启用附着面或上下半部相关状态。启用后,这些状态会成为该自定义方块置换的一部分。

方块特质生成或维护的是状态值,而不是最终外观本身。方块要根据这些状态改变几何体、材质、碰撞箱或其他组件,仍然需要通过方块置换配置相应组件。

放置方向

minecraft:placement_direction记录玩家放置方块时面对的方向。该特质可以启用minecraft:cardinal_directionminecraft:facing_directionminecraft:corner_and_cardinal_directionminecraft:sixteen_way_rotation。其中,minecraft:cardinal_direction提供northsoutheastwest四个水平取值;minecraft:facing_direction在水平四向之外增加updownminecraft:corner_and_cardinal_direction还会使minecraft:corner提供noneinner_leftinner_rightouter_leftouter_right等角部取值;minecraft:sixteen_way_rotation则提供十六向的旋转状态。

该特质还可以使用y_rotation_offset改变记录的水平朝向偏移。偏移值以逆时针方向计,可使用0.090.0180.0270.0。当启用minecraft:corner_and_cardinal_direction时,还可以通过blocks_to_corner_with限定哪些方块会参与转角判定;未显式指定时,默认只与同名方块形成转角。

在较新的格式版本中,minecraft:placement_direction已不再要求实验性开关;较低格式版本仍可能要求启用“Upcoming Creator Features”实验性玩法。

放置位置

minecraft:placement_position记录方块相对于其他方块被放置的位置。该特质可以启用minecraft:block_faceminecraft:vertical_halfminecraft:block_face表示该方块附着的相邻方块面,取值为northsoutheastwestupdownminecraft:vertical_half表示方块被放置在相邻方块的上半或下半,取值为topbottom

该特质在较新的格式版本中已不再要求实验性开关;较低格式版本仍可能要求启用“Upcoming Creator Features”实验性玩法。

连接关系

minecraft:connection记录方块是否与相邻方块连接。该特质目前只能启用minecraft:cardinal_connections,并由此提供minecraft:connection_northminecraft:connection_southminecraft:connection_eastminecraft:connection_west四个可查询布尔状态。当方块本身或相邻方块发生变化时,这些状态会由引擎重新计算。

在较新的格式版本中,minecraft:connection已不再要求实验性开关;较低格式版本仍可能要求启用“Upcoming Creator Features”实验性玩法。

多方块

minecraft:multi_block用于把一个方块定义扩展为沿单一方向展开的多方块结构。该特质会启用minecraft:multi_block_part状态,用于记录当前方块在整组结构中的部件位置。

该特质可以使用parts指定结构的部件数量,当前有效范围为24;还可以使用direction指定结构展开方向,目前只支持updown。与放置方向、放置位置等较早稳定的特质不同,多方块特质目前仍与实验性玩法密切相关。

与组件和事件

组件用于声明方块的属性,事件用于响应触发条件,方块特质用于提供一组常见状态的维护逻辑。三者可以组合使用,但职责不同。

例如,一个自定义灯具可以使用minecraft:placement_position记录自身附着在哪个面,再通过方块置换为不同附着面应用不同几何体;同时,它还可以使用组件定义光照,并使用事件处理玩家交互。

版本影响

方块特质与格式版本和实验性开关关系密切。部分特质最初需要实验性玩法,之后才进入稳定接口;较新的特质可能仍处于实验性阶段。文档编写和附加包开发时应同时关注方块定义的格式版本、世界实验性开关和目标游戏版本。