{
  "$id": "blockception.minecraft.resource.1.10.0.entity",
  "type": "object",
  "title": "Actor Entity 1.10.0",
  "description": "A client side entity definition.",
  "additionalProperties": false,
  "required": [ "format_version", "minecraft:client_entity" ],
  "properties": {
    "format_version": { "$ref": "../../../general/format_version.json" },
    "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,
              "examples": [ { "basic": "controller.generic.basic" } ],
              "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": [ "controller.", "animation." ]
              }
            },
            "enable_attachables": { "type": "boolean", "description": "Whether or not attachables are enaboled.", "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" }
            },
            "queryable_geometry": {
              "title": "Queryable Geometry",
              "description": "UNDOCUMENTED.",
              "type": "string"
            },
            "hide_armor": {
              "type": "boolean",
              "default": true,
              "title": "Hide Armor",
              "description": "Hides or shows the possible armor."
            },
            "held_item_ignores_lighting": {
              "type": "boolean",
              "default": false,
              "title": "Held Item Ignores Lighting",
              "description": "This determines if the item held by an entity should render fully lit up (if true), or depending on surrounding lighting."
            },
            "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",
                "$ref": "../../../general/vanilla/material.json"
              },
              "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": "A collection of particle definitions.",
              "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": "A collection of Render controller definitions.",
              "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": {
                "animate": {
                  "type": "array",
                  "title": "Animate",
                  "description": "The array of items to animate.",
                  "minItems": 1,
                  "items": {
                    "oneOf": [
                      { "type": "string", "description": "A single animation or animation controller to run.", "title": "Animation (Controller)" },
                      {
                        "type": "object",
                        "minProperties": 1,
                        "maxProperties": 1,
                        "title": "Animation (Controller) Condition",
                        "description": "A single animation or animation controller to run on condition.",
                        "additionalProperties": {
                          "oneOf": [
                            { "type": "string", "description": "A molang condition.", "title": "Molang" },
                            { "type": "number", "description": "Blend weight.", "title": "Blend Weight" }
                          ]
                        }
                      }
                    ]
                  }
                },
                "initialize": {
                  "type": "array",
                  "description": "Clientside molang variables that are to be evaluated during the creation of the entity.",
                  "title": "Initialize",
                  "minItems": 1,
                  "items": {
                    "pattern": ";$",
                    "$ref": "../../../molang/string.json",
                    "description": "Clientside molang variables that are to be evaluated during the creation of the entity.",
                    "title": "Initialize"
                  }
                },
                "pre_animation": {
                  "type": "array",
                  "description": "Clientside molang variables that are to be evaluated during the animation.",
                  "title": "Pre Animation",
                  "items": {
                    "pattern": ";$",
                    "$ref": "../../../molang/string.json",
                    "description": "Clientside molang variables that are to be evaluated 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" },
                "should_update_bones_and_effects_offscreen": {
                  "title": "Should Update Bones And Effects Offscreen",
                  "description": "Bones and effects will still be updated if the entity is off screen if this expression returns anything other than 0.0.",
                  "oneOf": [ { "type": "boolean" }, { "type": "string", "$ref": "../../../molang/string.json" } ]
                },
                "should_update_effects_offscreen": {
                  "title": "Should Update Effects Offscreen",
                  "description": "Effects will still be updated if the entity is off screen if this expression or `should_update_bones_and_effects_offscreen` returns anything other than 0.0.",
                  "oneOf": [ { "type": "boolean" }, { "type": "string", "$ref": "../../../molang/string.json" } ]
                },
                "variables": {
                  "title": "Variables",
                  "description": " A list of variables that need certain settings applied to them. Currently, for the client, only `public` is supported.",
                  "type": "object",
                  "minProperties": 1,
                  "propertyNames": { "pattern": "variable.[a-zA-Z_][a-zA-Z0-9_]*" },
                  "additionalProperties": {
                    "title": "Variable",
                    "description": " If a variable is public, it can be read by other mobs. See the molang `->` operator for details.",
                    "type": "string",
                    "enum": [ "public" ]
                  }
                }
              }
            },
            "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" ] },
              "examples": [
                { "base_color": "#FFFFFF", "overlay_color": "#000000" },
                { "texture": "example_egg", "texture_index": 0 }
              ],
              "properties": {
                "base_color": {
                  "type": "string",
                  "description": "The basic color of the egg.",
                  "title": "Base Color",
                  "format": "color-hex",
                  "examples": [ "#FFFFFF" ]
                },
                "overlay_color": {
                  "type": "string",
                  "description": "The colors of the dots on the egg.",
                  "title": "Overlay Color",
                  "format": "color-hex",
                  "examples": [ "#FFFFFF" ]
                },
                "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"
            }
          }
        }
      }
    }
  }
}
