事件
*请区分脚本引擎中的“事件”
事件主要被用在实体、方块、物品的行为文件中,本文档主要是讲实体事件相关。
事件可用于添加或删除组件组
制作
事件Event处于行为文件的events对象内,在该对象里戳写事件
格式
- (对象)事件名字(可使用中文,可不带命名空间,包含以下↓)
- add:(对象)添加组件组
- component_groups:(数组)
- (字符串)组件组的名称
- component_groups:(数组)
- remove:(对象)删除组件组。
- component_groups:(数组)
- (字符串)组件组的名称
- component_groups:(数组)
- randomize:(数组)若干套操作。将会从定义的多套操作中随机执行一套操作。
- (对象)一套操作
- weight:(整数)执行这套操作的占比几率(总几率为该数组下所有操作的占比几率总和)。
- 剩下的格式和事件 JSON 格式一样
- (对象)一套操作
- sequence:(数组)若干套操作。这些操作将会被按顺序依次执行。
- (对象)一套操作
- filters:(对象,格式同滤器)一个滤器。只有该滤器测试通过后,才会执行数组内的其它操作
- 剩下的格式和事件 JSON 格式一样
- (对象)一套操作
- add:(对象)添加组件组
普通示例
{
“events”: {
“普通示例事件”: {//事件名字
“add”: {//添加组件组
"component_groups": [
"组件组1"
]
},
"remove": {//删除组件组
"component_groups": [
"组件组2",
"组件组3"
]
},
"randomize": [
{
“weight”: 20,//概率20
"add": {
"componen_groups": [
"组件组1"
]
}
},
{
“weight”: 55,//概率55
"add": {
"componen_groups": [
"组件组1"
]
}
},
{
“weight”: 25,//概率25
"add": {
"componen_groups": [
"组件组1"
]
}
}
],//该数组总几率为100,最有可能执行的是第二个操作 概率55%
"sequence": [
"filters": {//滤器
},//通过后执行↓
"remove": {
"component_groups": [
"组件组3",
"组件组4",
"组件组5"
]
}
]
}:
}
}
对于add、remove、randomize、sequence这四者之间可以相互进行无限的套娃,以达到各种复杂的逻辑。
套娃示例
这或许是原版中最复杂的了....
entities/villager_v2.json
{
"minecraft:entity_transformed": {
"sequence": [
//省略 2 套操作
{
"filters": { "test": "is_family", "subject": "other", "operator": "==", "value": "zombie_villager" },
"sequence" : [
{
"filters": { "test": "is_skin_id", "subject": "other", "value": 0 },
"add": { "component_groups": [ "villager_skin_0" ] }
},
{
"filters": { "test": "is_skin_id", "subject": "other", "value": 1 },
"add": { "component_groups": [ "villager_skin_1" ] }
},
//省略 13 套操作
]
},
{
"filters": { "test": "is_family", "subject": "other", "operator": "==", "value": "villager" },
"sequence" : [
{
"randomize": [
{
"weight": 1,
"add": { "component_groups": [ "villager_skin_0" ] }
},
{
"weight": 1,
"add": { "component_groups": [ "villager_skin_1" ] }
},
//省略 4 套操作
]
},
//省略 6 套操作
]
}
]
}
}
内置事件名
Minecraft 为我们提供了几个内置的事件名,这些名称的事件不需要我们手动调用,它们会在某些条件下自动触发。
*请前往>API文档>其它文档>事件 查看