组件、组件组、事件

*请区分脚本引擎中的“组件”
*请区分脚本引擎中的“事件”

为何要三个概念一起讲呢?因为它们之间的关联非常的大。
在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中的触发器触发一个事件,事件为其添加组件组,组件组又有新的触发器规则来触发事件添加/删除组件组,就这样循环,便可做出很多有意思的东西。