- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
Tutorial:制作附加包/方块:修订间差异
来自Minecraft基岩版开发Wiki
添加的内容 删除的内容
小无编辑摘要 |
2190303755(留言 | 贡献) 小无编辑摘要 |
||
第57行: | 第57行: | ||
'''事件(events)'''对象储存了该方块可能用到的所有事件。 |
'''事件(events)'''对象储存了该方块可能用到的所有事件。 |
||
通过在一个事件 |
通过在一个事件下直接添加多个[[Manual:数据驱动/方块|事件]]或通过序列间接添加多个事件可以使一个[[触发器]]同时触发多个事件: |
||
'''示例:''' |
'''示例:''' |
||
第72行: | 第72行: | ||
} |
} |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
通过序列触发多个事件时可以为每个事件单独设置触发条件: |
|||
<div class="treeview"> |
<div class="treeview"> |
||
*{{json|object|<''test_event''>}}:''事件名称'' |
*{{json|object|<''test_event''>}}:''事件名称'' |
2021年7月13日 (二) 08:09的版本
本教程版本为基岩版1.16及以上版本。在阅读本教程前,请先确保自身已有一定的附加包基础。如果还未掌握,请先浏览教程/开始之前,教程/包的构建,教程/运行、调试与导出和教程/本地化页面后再来学习本教程。在浏览完本教程之后,你将学会如何创建一个全新的自定义方块。
概述
自定义方块是在基岩版beta 1.12.0.2中的新增内容。[注 1]在基岩版1.16.100.56及之后的部分版本更新中, Mojang 为自定义方块提供了大量的接口,这使得自定义方块的功能大大增加,不过现在仍有绝大多数的接口未被开放。
通过自定义方块,您可以在游戏中创造出属于您的全新方块,并通过添加属性、组件和事件等内容赋予它许多有趣的特性。
添加方块
您可在行为包中的 blocks
文件夹下新增自定义的方块配置文件。其数据结构如下:
{
"format_version": "1.16.0",
"minecraft:block": {
"description": {
}, //描述
"components": {
}, //组件
"events": {
}, //事件
"permutations" [
] //置换内容
}
}
如上,方块配置文件由描述、组件、事件与置换内容四部分构成。
描述
描述 (description) 对象储存了用于描述该方块的基础信息,其数据结构如下:
属性名称 | 数据类型 | 描述 |
---|---|---|
identifier | String | 设置此方块的标识符。须包含命名空间但不得使用minecraft: 作为命名空间。(除非所编辑的方块为原版方块)
|
is_experimental | Boolean | (可选)决定了该方块是否为实验性方块。默认值为 false 。若此属性值为 true ,则该方块需开启实验性玩法才可获得。
|
properties | Object | 设置此方块所具有的一个或多个属性。例如:"test:block_property": [ 0, 1, 2, 3 ] ,其中test:block_property 为属性名称,数组中的参数为该方块此属性可能拥有的值(游戏默认该方块初始属性为所有属性数组中的第一个参数)。数组的参数类型可以为整数、小数、布尔值或字符串。
|
register_to_creative_menu | Boolean | 设置此方块是否出现在创造模式物品栏。(基岩版1.15.0至今由于不明原因导致此API失效,待修复) |
组件
组件(components)对象决定了该方块的功能属性,您可选择并添加您需要的组件属性。
组件分为一般组件和触发器。一般组件用于定义该方块的属性,触发器用于在特定条件下使方块触发事件。
事件
事件(events)对象储存了该方块可能用到的所有事件。
通过在一个事件下直接添加多个事件或通过序列间接添加多个事件可以使一个触发器同时触发多个事件:
示例:
"events": {
"test_event": { //事件名称
"set_block_property": { //第一个事件
"minecraft:direction": 1
},
"run_command": { //第二个事件
"command": "say Hello world"
}
}
}
通过序列触发多个事件时可以为每个事件单独设置触发条件:
示例:
"events": {
"test_event": {
"sequence": [
{
"condition": "query.block_property(test:direction) == 0",
"rotation": [ 180.0, 0.0, 0.0 ]
},
{
"condition": "query.block_property(test:direction) == 1",
"run_command": {
"command": "say Hello"
}
}
]
}
}
置换
置换(permutations)数组储存了该方块在对应条件下会置换或新增的对应所有组件。一般使用 query.block_property[注 2] 来获取方块属性并以此作为置换条件。
示例
{
"format_version": "1.16.0",
"minecraft:block": {
"description": {
"identifier": "test:on_interact_change_state_block",
"properties": {
"minecraft:direction": {
}
}
},
"components": {
"minecraft:loot": "loot_tables/blocks/test.json",
"minecraft:destroy_time": 0.55,
"minecraft:explosion_resistance": 2.5,
"minecraft:friction": 0.1,
"minecraft:map_color": "#FFFFFF",
"minecraft:block_light_absorption": 15,
"minecraft:block_light_emission": 15,
"minecraft:on_interact": {
"event": "test_event"
}
},
"events": {
"test_event": {
"set_block_property": {
"minecraft:direction": 1
}
}
},
"permutations" [
"condition": "query.block_property('minecraft:direction') == 1",
"components": {
"minecraft:geometry": "geometry.test"
}
]
}
}
定义资源
block.json
定义纹理
翻书动画
你知道吗
- 自定义方块的Json文件名称并不要求必须与物品ID相同。