{
  "$id": "blockception.minecraft.resource.1.8.0.entity",
  "type": "object",
  "title": "Actor Entity 1.8.0",
  "description": "A client side entity definition",
  "additionalProperties": false,
  "required": ["format_version", "minecraft:client_entity"],
  "properties": {
    "format_version": {
      "title": "1.8.0 Format Version",
      "type": "string",
      "const": "1.8.0",
      "description": "A version that tells minecraft what type of data format can be expected when reading this file."
    },
    "minecraft:client_entity": {
      "type": "object",
      "additionalProperties": false,
      "title": "Client Entity",
      "description": "The entity description for clientside rendering, animations and models",
      "required": ["description"],
      "properties": {
        "description": {
          "additionalProperties": false,
          "title": "Description",
          "description": "The entity description for clientside rendering, animations and models",
          "type": "object",
          "required": ["identifier"],
          "properties": {
            "animations": {
              "title": "Animations",
              "description": "These names are used by the animation controller JSON. Players can reference animations from the vanilla Minecraft Resource Pack or create their own. Custom animations should be in the animation folder at the root of the Resource Pack.",
              "type": "object",
              "minProperties": 1,
              "additionalProperties": {
                "type": "string",
                "description": "These names are used by the animation controller JSON. Players can reference animations from the vanilla Minecraft Resource Pack or create their own. Custom animations should be in the animation folder at the root of the Resource Pack.",
                "title": "Animation Reference",
                "examples": [{ "basic": "controller.generic.basic" }]
              }
            },
            "animation_controllers": {
              "type": "array",
              "minItems": 1,
              "description": "A reference to an animation controller",
              "title": "Animation Controllers",
              "items": {
                "type": "object",
                "description": "A collection of animation controllers",
                "title": "Animation Controllers",
                "additionalProperties": {
                  "type": "string",
                  "description": "A reference to an animation",
                  "title": "Animation Reference",
                  "examples": [{ "basic": "controller.generic.basic" }]
                }
              }
            },
            "enable_attachables": { "type": "boolean", "description": "UNDOCUMENTED: enable attachables", "title": "Enable Attachables" },
            "geometry": {
              "title": "Geometry",
              "description": "The reference to defined geometries in `<resource pack>/models/'",
              "type": "object",
              "propertyNames": { "pattern": "[a-zA-Z0-9_\\.\\-]+" },
              "minProperties": 1,
              "additionalProperties": { "type": "string", "description": "The reference to the geometry", "title": "Geometry Reference" }
            },
            "identifier": {
              "type": "string",
              "description": "The entity indentifier",
              "title": "Identifier",
              "$ref": "../../../general/entity/identifier.json"
            },
            "materials": {
              "type": "object",
              "additionalProperties": { "type": "string", "description": "Material reference", "title": "Material" },
              "description": "A collection of material definitions",
              "title": "Materials"
            },
            "min_engine_version": {
              "type": "string",
              "pattern": "[0-9]+\\.[0-9]+\\.[0-9]+",
              "description": "The minimum engine version to be used",
              "title": "Minimum Engine Version"
            },
            "particle_effects": {
              "type": "object",
              "minProperties": 1,
              "additionalProperties": { "type": "string", "description": "Particle reference", "title": "Particle" },
              "description": "Keys are required and need to be unique from all other keys in the animation controllers. Players can reference particles from the vanilla Minecraft Resource Pack or create their own. Custom particles should be in the particle folder at the root of the Resource Pack.",
              "title": "Particle Effects"
            },
            "particle_emitters": {
              "type": "object",
              "minProperties": 1,
              "additionalProperties": { "type": "string", "description": "Particle emitter reference", "title": "Particle Emitter" },
              "description": "A collection of particle emitters definitions",
              "title": "Particle Emitters"
            },
            "render_controllers": {
              "type": "array",
              "description": "Players can reference Render Controllers from the vanilla Minecraft Resource Pack or create their own. Custom Render Controllers should be in the textures folder at the root of the Resource Pack.",
              "title": "Render Controllers",
              "minItems": 1,
              "items": {
                "oneOf": [
                  { "type": "string", "title": "Render Controller", "description": "A single render controller definition" },
                  {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string",
                      "description": "A render controller activate on conditional",
                      "title": "Render Controller"
                    }
                  }
                ]
              }
            },
            "scripts": {
              "additionalProperties": false,
              "type": "object",
              "title": "Scripts",
              "description": "The place where variables, and animations / controller to be run is specified",
              "properties": {
                "pre_animation": {
                  "type": "array",
                  "description": "Client side scripts that are evaluated immediately before animations are processed.",
                  "title": "Pre Animation",
                  "items": {
                    "pattern": ";$",
                    "$ref": "../../../molang/string.json",
                    "description": "Clientside molang variables that are to be evualated during the animation",
                    "title": "Pre Animation"
                  }
                },
                "parent_setup": {
                  "type": "string",
                  "description": "UNDOCUMENTED: parent setup",
                  "title": "Parent Setup",
                  "$ref": "../../../molang/number.json"
                },
                "scale": {
                  "type": "string",
                  "description": "Scale sets the scale of the mob's geometry.",
                  "title": "Scale",
                  "$ref": "../../../molang/number.json"
                },
                "scalex": { "$ref": "../../../molang/number.json", "title": "Scale X" },
                "scaley": { "$ref": "../../../molang/number.json", "title": "Scale Y" },
                "scalez": { "$ref": "../../../molang/number.json", "title": "Scale Z" }
              }
            },
            "sound_effects": {
              "title": "Sound Effects",
              "description": "A collection of sound effect definition",
              "type": "object",
              "minProperties": 1,
              "additionalProperties": { "type": "string", "description": "A sound effect definition", "title": "Sound Effect" }
            },
            "spawn_egg": {
              "additionalProperties": false,
              "type": "object",
              "description": "The definition of how the spawn_egg icon looks like",
              "title": "Spawn Egg",
              "dependencies": { "texture_index": ["texture"], "base_colour": ["overlay_color"], "overlay_color": ["base_color"] },
              "properties": {
                "base_color": { "type": "string", "description": "The basic color of the egg", "title": "Base Color", "format": "color-hex" },
                "overlay_color": {
                  "type": "string",
                  "description": "The colors of the dots on the egg",
                  "title": "Overlay Color",
                  "format": "color-hex"
                },
                "texture": { "type": "string", "description": "The texture reference in item_texture.json", "title": "Texture" },
                "texture_index": { "type": "integer", "description": "The index of the texture", "title": "Texture Index", "default": 0 }
              }
            },
            "textures": {
              "type": "object",
              "additionalProperties": { "type": "string", "description": "A reference to a texture in the resourcepack", "title": "Texture" },
              "description": "A collection of references to textures in the resourcepack",
              "title": "Textures"
            }
          }
        }
      }
    }
  }
}
