实体行为可谓是精华的核心部分,首先你需要对实体行为的运行方式有一个大概了解

实体各部分关联示意图
实体行为共分为三大部分:组件、组件组、事件

组件

实体组件分为四大类:固有属性组件(如碰撞箱子)、行为组件(如近战、看着玩家、自由走动)、触发器、其它

触发器被游戏调用后如果满足滤器要求将触发事件
详情见 4-6

事件

事件用于添加与删除组件组,此外,游戏也保留了一些事件,这些事件无需被触发器调用,在指定条件下就会触发(如:minecraft:entity_spawn事件在实体生成时触发)
详情见 4-6

组件组

分组区,每个组件组都将会存放组件,这些组件组在指定条件下会被启用或者禁用
组件组将会给予生物额外的属性或者行为(组件组普遍性用处,也有些时候是用来触发动画控制器)

相关接口请查阅AddonAPI文档

总结:

组件定义实体属性与行为,触发器将会在指定条件下触发事件,事件将会添加或删除对应组件组,组件组将会给予生物额外的属性或者行为
实例,为原版猪行为,已删减不必要部分

{
  "format_version": "1.13.0",  //版本
  "minecraft:entity": {
    "description": {
      "identifier": "minecraft:pig",  //命名空间:ID
      "is_spawnable": true,  //会有生物蛋
      "is_summonable": true,  /能被/summon指令生成
      "is_experimental": false  //需要实验玩法
    },

    "component_groups": {  //组件组区

      "minecraft:pig_baby": {  //一个组件组,这个组件组定义幼年猪特有组件,如:碰撞箱会变小、无法繁殖。
        "minecraft:is_baby": {
        },
        "minecraft:scale": {
          "value": 0.5
        },

        "minecraft:behavior.follow_parent": {
          "priority": 6,
          "speed_multiplier": 1.1
        }
      },


      "minecraft:pig_adult": {  //定义成年猪特有组件,如:会有战利品掉落、可以繁殖。
        "minecraft:experience_reward": {
          "on_bred": "Math.Random(1,7)",
          "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
        },
        "minecraft:loot": {
          "table": "loot_tables/entities/pig.json"
        },
        "minecraft:behavior.breed": {
          "priority": 4,
          "speed_multiplier": 1.0
        },
          "breed_items": [ "carrot", "beetroot", "potato" ]
        }
      }
    },


    "components": {  //组件区,即幼年猪与成年猪都拥有的组件
      "minecraft:behavior.panic": {
        "priority": 3,
        "speed_multiplier": 1.25
      },
      "minecraft:behavior.random_stroll": {
        "priority": 7,
        "speed_multiplier": 1.0
      },
      "minecraft:behavior.look_at_player": {
        "priority": 8,
        "look_distance": 6.0,
        "probability": 0.02
      },
      "minecraft:behavior.random_look_around": {
        "priority": 9
      },
	    "minecraft:physics": {
      },
      "minecraft:pushable": {
        "is_pushable": true,
        "is_pushable_by_piston": true
      }
    }, 


    "events": {  //事件
      "minecraft:entity_spawned": {  //游戏自带的事件,在该实体生成时触发
        "randomize": [
          {  //结果1
            "weight": 95,  //几率:95%,百分比
            "remove": {
            },
            "add": {  //如果是,则添加成年猪组件组
              "component_groups": [
                "minecraft:pig_adult"
              ]
            }
          },
          {
            "weight": 5,  //几率:5%
            "remove": {
            },
            "add": {  //如果是,则添加幼年猪组件组
              "component_groups": [
                "minecraft:pig_baby"
              ]

            }
          }
        ]
      }
    }
  }
}

解释

format_version

格式版本

minecraft:entity
description

描述了实体的基本信息

描述类型默认值可选值
identifier实体命名空间:ID字符串null所有字符
is_spawnable实体是否有生物蛋布尔truetrue或false
is_summonable实体是否能被/summon指令生成布尔truetrue或false
is_experimental是否需要实验玩法布尔falsetrue或false
runtime_identifier
scripts脚本对象null对象
animations用于给实体绑定动画/动画控制器(服务端)对象null对象

scripts
这里不指Script Engine脚本引擎,而是指Molang表达式

描述类型默认值可选值
animate用于模仿原始实体的硬编码元素,它接受Minecraft原版中的标识符字符串null所有字符

栗子:

  "minecraft:entity": {    
    "description": {
      "identifier": "minecraft:player",
      "is_spawnable": false,
      "is_summonable": true,
      "is_experimental": false,
      "runtime_identifier": "minecraft:shulker",
      "scripts": {
        "animate": [
          "byh1",
          "byh2"

        ]
      },
      "animations": {
        "byh1": "animation.byh1" //绑定动画(服务端),且在实体生成时会立刻调用一次(此处键要与animate中的一致)
        "byh2": "controller.animation.byh2" //绑定动画控制器(服务端),且在实体生成时会立刻调用一次
      }
    },