# 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
用于设置方块的碰撞盒
注意事项:
- 无碰撞箱的方块请将collision的每个项都设置为0
- 有碰撞箱的方块,clip的范围需要小于或等于collision的范围,否则弹射物命中时会异常
- 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 | 是否防火 |