Intro to Entities BP
行为包实体文件由三大基础结构组成。本文将逐一解释它们的含义及使用方法。
组件组(component groups)与组件(components)的混淆是常见错误来源,请特别注意区分二者差异。
组件(Components)
组件是构成Minecraft实体的逻辑模块。所有组件均由Mojang编写并提供使用。组件可实现各类功能,例如设置实体尺寸或赋予游泳能力。完整组件列表参见此处。
注意:开发者_无法_创建自定义组件,所有组件均由微软硬编码提供。
要为实体添加行为,需在minecraft:entity对象的components对象中添加组件。例如赋予实体攀爬能力,可添加组件:"minecraft:can_climb": {}。
所有组件格式均为"minecraft:<名称>": { <设置项> },不同组件接受不同参数设置。
以下是实体内部组件示例:
"components": {
"minecraft:type_family": {
"family": [
"player"
]
},
"minecraft:collision_box": {
"width": 0.6,
"height": 1.8
},
"minecraft:can_climb": {},
}特别注意:components列表_仅_包含组件。
组件组(Component Groups)
组件组是组件的"文件夹",用于归类组件。通过events可动态添加/移除组件组,实现自定义游戏逻辑。
示例:
"component_groups": {
//组件组名称
"minecraft:cat_persian": {
//有效组件列表,可自由添加
"minecraft:variant": {
"value": 6
},
"minecraft:physics": {}
},
//第二个组件组
"wiki:example_group": {
"minecraft:type_family": {
"family": [
"wiki_is_awesome!"
]
}
}
}所有组件组均为自定义创建,无法复用其他实体的组件组。
原版实体中,组件组采用minecraft:命名空间(如示例中的minecraft:cat_persian)。但需牢记它们_并非组件_。自定义组件组可采用任意名称/命名空间组合(如示例中的wiki:example_group)。更多命名空间信息参见此处。
组件放入组件组后_不会_自动生效,必须通过添加组才能激活组件功能。一个实体可同时激活多个组件组。
事件(Events)
事件是通过组件触发条件来添加/移除组件组的特殊语法,可实现实体动态行为。
示例:
"minecraft:ageable_grow_up": { //事件名称
"remove": { //待移除的组件组列表
"component_groups": [
"minecraft:cat_baby"
]
},
"add": {
"component_groups": [
"minecraft:cat_adult" //待添加的组件组列表
]
}
},与组件组类似,事件也需在每个实体内部完全自定义,不可复用其他实体的事件。切勿直接使用示例中的"minecraft:ageable_grow_up"事件,如需成长功能需自行定义组件组和事件。
注意:只能通过事件添加/移除_组件组_,直接操作组件是不可行的。
当组件满足特定条件时会触发事件,示例如下:
"components": {
"minecraft:interact": {
"interactions": [
{
"on_interact": {
"filters": [
{
"test":"is_family",
"subject": "other",
"value": "player"
}
],
"target": "self",
"event": "wiki:on_interact"
}
}
]
}
},
"component_groups": {
"wiki:interacted": {
"minecraft:scale": {
"value": 2
}
}
},
"events":{
"wiki:on_interact":{
"add": {
"component_groups": [ "wiki:interacted" ]
}
}
}当玩家与该实体互动时,将触发"wiki:on_interact"事件,进而添加"wiki:interacted"组件组,最终应用"minecraft:scale"组件实现放大效果。
深入了解事件功能请参阅实体事件专题页面:
实体事件原版应用实例
组件组和事件是原版实体实现自适应行为的主要工具,典型应用包括:
- 僵尸在水下停留过久会转变为
溺尸 - 狐狸通过
minecraft:fox_red和minecraft:fox_active组件组实现不同生物群系下的毛色变异 - 末影人被玩家注视时会进入敌对状态








