# JSON组件

# format_version

基岩版自定义方块的json结构曾经过多次调整,当填写format_version时,需要按照对应版本的json结构编写components。

你可以在以下两个版本进行选择:

  • 1.16.0

    该版本的components结构详见bedrock.dev

  • 1.10.0

    该版本的components结构详见bedrock.dev。该版本相比于1.16.0,component的值为一个Json Object,例如minecraft:destroy_time,在1.10.0中为

    "minecraft:destroy_time": {
        "value": 4.0
    }
    

    而在更高的版本中为

    "minecraft:destroy_time": 4.0
    

# description

类型 默认值 解释
identifier str 包括命名空间及物品名。需要全局唯一。
建议使用mod名称作为命名空间
register_to_create_menu bool false 是否注册到创造栏
category str Nature 注册到创造栏的分类,可选的值有:
Construction
Nature
Equipment
Items
custom_item_type str 自定义物品类别,可选值有:
weapon
armor
egg
ranged_weapon
projectile_item

# components

目前行为包中自定义方块json中支持的component包括原版component和网易独有的component。minecraft开头的为原版component,netease开头的为网易独有component。

对于原版component,你可以在上方的format_version解释中找到更多的参数及解释。

# minecraft:loot

可用于使用loot table控制掉落物

可参考CustomBlocksMod的customblocks:customblocks_test_ore方块

# minecraft:destroy_time

可用于控制挖掘所需的时间。该值的含义与官方wiki的“硬度”一致

主要用于挖掘的功能

# minecraft:block_light_emission

可用于设置方块亮度。关于亮度及方块光源可参考官方wiki

主要用于亮度的功能

# minecraft:explosion_resistance

可用于设置爆炸抗性。原版方块的爆炸抗性见官方wiki

# minecraft:block_light_absorption

可用于设置方块的透光率。具体可参考官方wiki

默认为不透光。

主要用于亮度的功能

# minecraft:map_color

可用于设置方块显示在地图上的颜色

# netease:tier

用于设置与挖掘相关的属性

主要用于挖掘的功能

类型 默认值 解释
digger string 必须设置。表示方块使用此工具挖掘时有速度加成。
可选的值有:
shovel:铲
pickaxe:镐
hatchet:斧
destroy_special bool false 可选。
当设置为true时,表示只有使用digger设置的工具进行挖掘才会产生掉落物。
level int 0 可选。
当destroy_special为true时才会生效。表示挖掘所需的工具等级,若手持工具等级小于该值,则不会产生掉落物。
原版工具的等级:
空手/其他非工具物品:0
木制/金制工具:0
石制工具:1
铁制工具:2
钻石工具:3

# netease:aabb

用于设置方块的碰撞盒

注意事项:

  1. 无碰撞箱的方块请将collision的每个项都设置为0
  2. 有碰撞箱的方块,clip的范围需要小于或等于collision的范围,否则弹射物命中时会异常
  3. aabb的min不要小于[-1, -1, -1],max不要大于[2, 2, 2]

可参考CustomBlocksMod的customblocks_model_flower及customblocks_model_wire方块。

类型 默认值 解释
collision object或array 计算与物体碰撞时用的碰撞盒
clip object或array 计算射线检测时用的碰撞盒。如准心选取及弹射物碰撞。
(那么当该AABB没有体积时,准心与弹射物都会无视这个方块)

当collision或clip为object时,用于表示恒定大小的单一碰撞盒,结构为:

类型 默认值 解释
min array(float) [0, 0, 0] min的三个值必须小于等于max的三个值
max array(float) [1, 1, 1]

当collision或clip为array时,用于可变化的多个碰撞盒的组合,通常用于可变化的自定义方块模型。元素的结构为:

类型 默认值 解释
enable molang true 控制是否开启该碰撞箱
目前仅支持is_connect查询,详见netease:connection
min array(float) [0, 0, 0] min的三个值必须小于等于max的三个值
max array(float) [1, 1, 1]

# netease:face_directional

用于设置方块的多面向

主要用于多面向的功能

类型 默认值 解释
type string direction:四面向方块
facing_direction:六面向方块

# netease:render_layer

用于设置方块渲染时使用的材质

可参考CustomBlocksMod的customblocks:customblocks_model_flower方块。

类型 默认值 解释
value string 目前支持的材质有:
opaque:不透明,即“terrain_opaque”材质。默认为此项
alpha:全透明,即“terrain_alpha”材质,如火焰,树叶。
blend:半透明,即“terrain_blend”材质,如彩色玻璃

# netease:solid

用于设置方块是否为实心方块主要与生物在方块内时是否受到窒息伤害有关。

可参考CustomBlocksMod的customblocks:customblocks_model_flower方块。

类型 默认值 解释
value bool true 为true时,生物在方块内会受到窒息伤害
为false时,生物在方块内不会受到窒息伤害

# netease:pathable

用于设置游戏内AI在进行寻路时,方块是否被当作障碍物。

可参考CustomBlocksMod的customblocks:customblocks_model_flower方块。

类型 默认值 解释
value bool false 为true时,寻路时被当作空气
为false时,寻路时被当作障碍物,并且可在其上方行走

# netease:block_entity

用于给自定义方块添加自定义方块实体

可参考CustomBlocksMod的customblocks:customblocks_test_block_entity方块。

类型 默认值 解释
tick bool false 为true时,当玩家进入方块tick范围时,该方块每秒会发送20次ServerBlockEntityTickEvent事件
为false时,该方块不会发送ServerBlockEntityTickEvent事件
movable bool true 为true时,该方块可被粘性活塞拉回
为false时,该方块不可被粘性活塞拉回

# netease:random_tick

用于给自定义方块定义是否可以随机tick,并且设置该tick事件是否发送到脚本层。

类型 默认值 解释
enable bool false 方块是否随机tick
tick_to_script bool false 是否发送事件BlockRandomTickServerEvent到python脚本

# netease:redstone_property

用于给自定义方块设置红石属性

类型 默认值 解释
value str None 目前只支持break_on_push,设置之后,方块可以被活塞破坏变成掉落物,否则,方块会被活塞推动而不破坏

# netease:neighborchanged_sendto_script

类型 默认值 解释
value bool false 方块周围环境变化是否发送事件BlockNeighborChangedServerEvent到脚本层

# netease:connection

用于给自定义方块定义“连接”属性

使用枚举的方式配置该方块与哪些方块具有“连接”属性,并且此属性是单向的。不支持附加值。

由于方块更新的特性,“床”和“旗帜”方块在区块边缘放置时,与其他方块会出现连接失败。

可参考CustomBlocksMod的customblocks_model_wire方块。

类型 解释
blocks array(string) 数组元素为方块的identifier

目前该属性只用于netease:aabb自定义方块模型的is_connect查询:

名称 解释
query.is_connect 传入一个参数,返回该方块与对应临面上的方块是否有connection属性
参数取值与对应的面:
0-down面,1-up面,2-north面,3-south面,4-west面,5-east面。

# netease:redstone

用于配置自定义红石源与自定义红石机械元件;

可以配置自定义红石的类型,如红石源或者红石机械元件;

可以配置初始信号强度,默认为15。

类型 默认值 说明
type str 红石类型:
producer:红石源
consumer:红石机械元件
strength int 15 红石信号值,范围[0,15]

# netease:listen_block_remove

用于配置自定义方块是否监听方块的BlockRemoveServerEvent事件

类型 默认值 说明
value bool false 是否监听事件

# netease:may_place_on

用于配置自定义方块可存在于哪些方块的上面。

会生效于玩家右键放置方块时;以及已存在的方块下方的方块发生改变时。

可参考CustomBlocksMod示例中的customblocks_model_flower

类型 默认值 说明
block list(str) 方块identifier的列表。这些方块的所有方块状态都可放置
block_state list(object) 方块状态的列表。
每个元素只对应一个特定的方块状态,如果方块有多个种类的状态,需要考虑排列组合的所有情况
最终可在上面放置的方块是block字段与block_state字段的并集
spawn_resources bool true 已存在的方块因下方的方块发生改变而被破坏时,是否生成掉落物

# netease:fire_resistant

用于配置自定义方块是否防火。

设置为防火时,方块的掉落物会与下界合金一样,不会被火烧毁,掉进岩浆时会弹走。

可参考CustomBlocksMod示例中的customblocks_test_ore

类型 默认值 说明
value bool 是否防火