组件、组件组、事件
*请区分脚本引擎中的“组件”
*请区分脚本引擎中的“事件”
为何要三个概念一起讲呢?因为它们之间的关联非常的大。
在1.16.100及更高版本里,物品、方块、实体行为都能使用组件、组件组、事件,但三者被运用最多的地方也还是实体行为了,本文章中也主要是讲实体上的,物品、方块方面的也基本上适用。
组件
即components,物品、方块、实体行为都会用到组件,对应的组件定义了物品、方块、实体对应的属性
组件的数据格式主要分为两种,国际版的组件命名空间均为“minecraft”,网易的额外接口的命名空间则是“netease”
"components": {
//第一种,对象格式,一般用该格式的组件都有多个要设置的键,如“minecraft:boos”血条组件
"minecraft:com1": {
“value2”: 1,
"value2": true
"value3": [
"player",
"zombie",
"pig"
. ]
},
//第二种,直接写值格式,运用该格式的组件如“minecraft:loot”掉落物组件
"minecraft:com2": "阿哲"
//以上组件名均是无效,仅用于示例
}
组件列表请查看AddonAPI文档
实体组件类型分为四大类:固有属性组件(如碰撞箱子)、行为组件(如近战、看着玩家、自由走动)、触发器、其它
组件组
即component_groups,可理解为里面有多个不同的components,组件堆的名字为自定义。组件组中的components默认不会被启用,需通过事件来控制
格式示例:
"component_groups": {
"组件组1": { //组件组名字,可中文
"minecraft:com3": { //里面随意的写组件即可
"are_you_fool": false
}
},
"组件组2": {
"minecraft:com3": {
"are_you_fool": true
}
}
}
事件
即events,事件控制组件组的启用于禁用
基础格式示例:
"events": {
"事件1": { //事件名,可中文
"add": { //添加
"component_groups": [
"组件组1" //组件组列表
]
},
"remove": { //删除
"component_groups": [,
"组件组2",
"组件组3"
]
}
},
"事件2": {
"add": {
"component_groups": [
"组件组1",
"组件组2",
"组件组3"
]
}
}
}
事件分为被动事件与主动事件,主动事件是游戏中已被注册的几个事件名,数量不多,主动事件无需被触发才可执行,会自动在满足该事件要求下执行,如”minecraft:spawn“事件,会在该实体被生成时立刻执行。
被动事件需要components或component_groups中的组件进行触发。
以上为最基础的事件,事件还有许多带有逻辑的运用方式,这些
*请前往>专辑篇>事件 查看
三者集合起来可以做到许许多多的逻辑,组件中还有触发器等一些列内容,比如:先由components中的触发器触发一个事件,事件为其添加组件组,组件组又有新的触发器规则来触发事件添加/删除组件组,就这样循环,便可做出很多有意思的东西。