{
  "minecraft:entity": {
    "format_version": "1.2.0",

    "component_groups": {
      "minecraft:vindicator_aggro": {
        "minecraft:angry": {
          "duration": -1,
          "broadcastAnger": false,
          "calm_event": {
            "event": "minecraft:stop_aggro",
            "target": "self"
          }
        }
      },
      "minecraft:vindicator_johnny": {
        "minecraft:behavior.nearest_attackable_target": {
          "priority": 2,
          "within_radius": 12,
          "must_see": true,
          "entity_types": [
            {
              "filters": { "test" :  "is_family", "subject" : "other", "operator": "!=", "value" :  "illager"},
              "max_dist": 12
            }
          ]
        }
      } 
    },

    "components": {
      "minecraft:identifier": {
        "id": "minecraft:vindicator"
      },
      "minecraft:nameable": {
        "default_trigger": {
          "event": "minecraft:stop_johnny",
          "target": "self"
        },
        "name_actions": [
          {
            "name_filter": "Johnny",
            "on_named": {
              "event": "minecraft:start_johnny",
              "target": "self"
            }
          }
        ]
      },

      // vindicator Components
      "minecraft:type_family": {
        "family": [ "vindicator", "monster", "illager" ]
      },
      "minecraft:breathable": {
        "totalSupply": 15,
        "suffocateTime": 0
      },
      "minecraft:collision_box": {
        "width": 0.6,
        "height": 1.95
      },
      "minecraft:health": {
        "value": 24,
        "max": 24
      },
      "minecraft:attack": {
        "damage": 8
      },
      "minecraft:movement": {
        "value": 0.35
      },
      "minecraft:navigation.walk": {
        "can_path_over_water": true
      },
      "minecraft:movement.basic": {
      },
      "minecraft:jump.static": {
      },
      "minecraft:follow_range": {
        "value": 12,
        "max": 12
      },
      "minecraft:loot": {
        "table": "loot_tables/entities/vindication_illager.json"
      },
      "minecraft:equipment": {
        "table": "loot_tables/entities/vindicator_gear.json"
      },

      // vindicator Behaviors
      "minecraft:behavior.float": {
        "priority": 0
      },
      "minecraft:behavior.melee_attack": {
        "priority": 4,
        "speed_multiplier": 1,
        "track_target": false
      },
      "minecraft:behavior.random_stroll": {
        "priority": 9,
        "speed_multiplier": 1
      },
      "minecraft:behavior.look_at_player": {
        "priority": 10,
        "look_distance": 8,
        "probability": 0.02
      },
      "minecraft:behavior.hurt_by_target": {
        "priority": 1
      },
      "minecraft:on_target_acquired": {
        "event": "minecraft:become_aggro",
        "target": "self"
      },
      "minecraft:on_target_escape": {
        "event": "minecraft:stop_aggro",
        "target": "self"
      },
      "minecraft:behavior.nearest_attackable_target": {
        "priority": 2,
        "within_radius": 12,
        "must_see": true,
        "entity_types": [
          {
            "filters": {  
                "any_of": [
                  { "test" :  "is_family", "subject" : "other", "value" :  "player"},
                  { "test" :  "is_family", "subject" : "other", "value" :  "snowgolem"},
                  { "test" :  "is_family", "subject" : "other", "value" :  "irongolem"},
                  { "test" :  "is_family", "subject" : "other", "value" :  "villager"}
                ] 
			},
            "max_dist": 12
          }
        ]
      },
	    "minecraft:physics": {
      }
    },

    "events": {
      "minecraft:become_aggro": {
        "add": {
          "component_groups": [
            "minecraft:vindicator_aggro"
          ]
        }
      },
      "minecraft:stop_aggro": {
        "remove": {
          "component_groups": [
            "minecraft:vindicator_aggro"
          ]
        }
      },
      "minecraft:start_johnny": {
        "add": {
          "component_groups": [
            "minecraft:vindicator_johnny"
          ]
        }
      },
      "minecraft:stop_johnny": {
        "remove": {
          "component_groups": [
            "minecraft:vindicator_johnny"
          ]
        }
      }
    }
  }
}
