{ "$schema": "http://json-schema.org/draft-07/schema", "$id": "blockception.minecraft.resource.actor_animation", "examples": [{ "format_version": "1.8.0", "animations": { "animation.annie.idle": { "loop": true, "animation_length": 2.12, "bones": {} } } }], "allOf": [ { "if": { "properties": { "format_version": { "type": "string", "const": "1.8.0" } } }, "then": { "$ref": "#/definitions/A" } }, { "if": { "properties": { "format_version": { "type": "string", "const": "1.10.0" } } }, "then": { "$ref": "#/definitions/E" } } ], "definitions": { "A_ParticleEffect": { "type": "object", "title": "Particle effect", "additionalProperties": false, "required": ["effect"], "properties": { "effect": { "type": "string", "title": "Particle id", "description": "The name of a particle effect that should be played" }, "locator": { "type": "string", "title": "Locator", "description": "The name of a locator on the actor where the effect should be located" }, "pre_effect_script": { "title": "Pre effect script", "description": "A molang script that will be run when the particle emitter is initialized", "$ref": "#/definitions/B" }, "bind_to_actor": { "type": "boolean", "title": "Bind to actor", "description": "Set to false to have the effect spawned in the world without being bound to an actor (by default an effect is bound to the actor)." } } }, "A_PositionV3": { "title": "Position array", "description": "An array of 3 items that describe the bones position", "type": "array", "items": [ { "title": "Position X", "description": "The position over the X-axis or forwards/backwards.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Position Y", "description": "The position over the Y-axis, or up/down.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Position Z", "description": "The position over the Z-axis, or left/right.\nCan be molang or a float", "$ref": "#/definitions/C" } ] }, "A_RotationV3": { "title": "Rotation array", "description": "An array of 3 items that describe the bones rotation", "type": "array", "items": [ { "title": "Rotation X", "description": "The rotation over the X-axis, or up or down.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Rotation Y", "description": "The rotation over the Y-axis, or yaw.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Rotation Z", "description": "The rotation over the Z-axis, or roll.\nCan be molang or a float", "$ref": "#/definitions/C" } ] }, "A_ScaleV3": { "title": "Scale array", "description": "An array of 3 items that describe the bones position", "type": "array", "items": [ { "title": "Position X", "description": "The position over the X-axis or forwards/backwards.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Position Y", "description": "The position over the Y-axis, or up/down.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Position Z", "description": "The position over the Z-axis, or left/right.\nCan be molang or a float", "$ref": "#/definitions/C" } ] }, "A_SoundEffect": { "title": "Sound effect", "type": "object", "additionalProperties": false, "properties": { "effect": { "title": "Effect", "type": "string", "description": "Valid sound effect names should be listed in the entity's resource_definition json file." } } }, "B": { "type": "string", "title": "Molang / string definition", "description": "Molang definition", "format": "molang" }, "C": { "title": "Molang number", "description": "The minecraft molang definition that results in a float", "anyOf": [{ "type": "string", "minLength": 0, "format": "molang" }, { "type": "number" }] }, "D": { "title": "Molang array of 3 numbers", "description": "The minecraft molang definition that results in a 3 floats", "anyOf": [{ "type": "string", "minLength": 0, "format": "molang" }] }, "A": { "additionalProperties": false, "type": "object", "title": "The minecraft resourcepack actor animation 1.8.0", "description": "TODO description", "required": ["format_version", "animations"], "properties": { "format_version": { "title": "The 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." }, "animations": { "title": "Animations schema", "description": "The animation 1.8.0 specification", "propertyNames": { "pattern": "^animation\\.[a-z\\.]+" }, "type": "object", "additionalProperties": { "additionalProperties": false, "type": "object", "title": "Animation 1.8.0", "description": "The animation specification for 1.8.0", "properties": { "anim_time_update": { "title": "Anim time update", "description": "How does time pass when playing the animation. Defaults to \"query.anim_time + query.delta_time\" which means advance in seconds.", "$ref": "#/definitions/C" }, "animation_length": { "title": "Animation length", "description": "Override calculated value (set as the last keyframe time) and set animation length in seconds.", "type": "number" }, "blend_weight": { "title": "Blend weight", "description": "TODO", "$ref": "#/definitions/C" }, "bones": { "title": "Bones", "description": "Defines how the bones in an animation move or transform", "type": "object", "additionalProperties": { "title": "Bone transformation", "description": "The bone definition that declare how it transforms during animation", "type": "object", "additionalProperties": false, "properties": { "position": { "title": "Position", "description": "The Position transformation during this animation", "oneOf": [ { "$ref": "#/definitions/A_PositionV3" }, { "$ref": "#/definitions/D" }, { "type": "object", "propertyNames": { "pattern": "^[\\d.]+$" }, "additionalProperties": { "title": "Timeline object", "description": "A single point in time", "additionalProperties": false, "properties": { "lerp_mode": { "type": "string", "title": "Lerp mode", "description": "TODO", "enum": ["linear", "catmullrom"] }, "pre": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/A_PositionV3" }, "post": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/A_PositionV3" } } } } ] }, "rotation": { "title": "Rotation", "description": "The rotation transformation during this animation", "oneOf": [ { "$ref": "#/definitions/A_RotationV3" }, { "$ref": "#/definitions/D" }, { "type": "object", "propertyNames": { "pattern": "^[\\d.]+$" }, "additionalProperties": { "title": "Timeline object", "description": "A single point in time", "additionalProperties": false, "properties": { "lerp_mode": { "type": "string", "title": "Lerp mode", "description": "TODO", "enum": ["linear", "catmullrom"] }, "pre": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/A_RotationV3" }, "post": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/A_RotationV3" } } } } ] }, "relative_to": { "title": "Relative to", "description": "If set, makes the bone rotation relative to the entity instead of the bone's parent", "properties": { "rotation": { "title": "Rotation", "description": "If set, makes the bone rotation relative to the entity instead of the bone's parent", "type": "string" } } }, "scale": { "title": "Scale", "description": "TODO", "oneOf": [ { "$ref": "#/definitions/C" }, { "$ref": "#/definitions/A_ScaleV3" }, { "type": "object", "propertyNames": { "pattern": "^[\\d.]+$" }, "additionalProperties": { "title": "Timeline object", "description": "A single point in time", "additionalProperties": false, "properties": { "lerp_mode": { "type": "string", "title": "Lerp mode", "description": "TODO", "enum": ["linear", "catmullrom"] }, "pre": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/A_ScaleV3" }, "post": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/A_ScaleV3" } } } } ] } } } }, "loop": { "title": "Loop", "description": "Should this animation stop, loop, or stay on the last frame when finished (true, false, hold_on_last_frame)", "oneOf": [{ "type": "boolean" }, { "type": "string", "enum": ["hold_on_last_frame"] }] }, "loop_delay": { "title": "Loop delay", "description": "How long to wait in seconds before looping this animation. Note that this expression is evaluated after each loop and on looping animation only.", "$ref": "#/definitions/C" }, "override_previous_animation": { "title": "Override previous animation", "description": "Reset bones in this animation to the default pose before applying this animation.", "type": "boolean" }, "particle_effects": { "title": "Particle effects", "description": "TODO", "oneOf": [ { "$ref": "#/definitions/A_ParticleEffect" }, { "type": "object", "propertyNames": { "pattern": "^[\\d.]+$", "examples": ["0.0"] }, "additionalProperties": { "title": "Timeline object", "description": "A single point in time", "oneOf": [ { "type": "object", "$ref": "#/definitions/A_ParticleEffect" }, { "type": "array", "items": { "$ref": "#/definitions/A_ParticleEffect" } } ] } } ] }, "start_delay": { "title": "Start delay", "description": "How long to wait in seconds before playing this animation. Note that this expression is evaluated once before playing, and only re-evaluated if asked to play from the beginning again. A looping animation should use 'loop_delay' if it wants a delay between loops.", "$ref": "#/definitions/C" }, "sound_effects": { "title": "Sound effect", "description": "TODO", "type": "object", "propertyNames": { "pattern": "^[\\d.]+$" }, "additionalProperties": { "$ref": "#/definitions/A_SoundEffect" } }, "timeline": { "title": "Timeline", "description": "The time line", "type": "object", "propertyNames": { "pattern": "^(\\d+.\\d+|\\d+)$" }, "additionalProperties": { "oneOf": [ { "type": "string", "title": "Molang", "description": "Variable definition", "pattern": "^(v|variable)\\..*=.*;$" }, { "type": "array", "title": "Collection timelime items", "items": { "type": "string", "title": "Molang", "description": "Variable definition", "pattern": "^(v|variable)\\..*=.*;$" } } ] } } } } } } }, "E_ParticleEffect": { "type": "object", "title": "Particle effect", "additionalProperties": false, "required": ["effect"], "properties": { "effect": { "type": "string", "title": "Particle id", "description": "The name of a particle effect that should be played" }, "locator": { "type": "string", "title": "Locator", "description": "The name of a locator on the actor where the effect should be located" }, "pre_effect_script": { "title": "Pre effect script", "description": "A molang script that will be run when the particle emitter is initialized", "$ref": "#/definitions/B" }, "bind_to_actor": { "type": "boolean", "title": "Bind to actor", "description": "Set to false to have the effect spawned in the world without being bound to an actor (by default an effect is bound to the actor)." } } }, "E_PositionV3": { "title": "Position array", "description": "An array of 3 items that describe the bones position", "type": "array", "items": [ { "title": "Position X", "description": "The position over the X-axis or forwards/backwards.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Position Y", "description": "The position over the Y-axis, or up/down.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Position Z", "description": "The position over the Z-axis, or left/right.\nCan be molang or a float", "$ref": "#/definitions/C" } ] }, "E_RotationV3": { "title": "Rotation array", "description": "An array of 3 items that describe the bones rotation", "type": "array", "items": [ { "title": "Rotation X", "description": "The rotation over the X-axis, or up or down.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Rotation Y", "description": "The rotation over the Y-axis, or yaw.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Rotation Z", "description": "The rotation over the Z-axis, or roll.\nCan be molang or a float", "$ref": "#/definitions/C" } ] }, "E_ScaleV3": { "title": "Scale array", "description": "An array of 3 items that describe the bones position", "type": "array", "items": [ { "title": "Position X", "description": "The position over the X-axis or forwards/backwards.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Position Y", "description": "The position over the Y-axis, or up/down.\nCan be molang or a float", "$ref": "#/definitions/C" }, { "title": "Position Z", "description": "The position over the Z-axis, or left/right.\nCan be molang or a float", "$ref": "#/definitions/C" } ] }, "E_SoundEffect": { "title": "Sound effect", "type": "object", "additionalProperties": false, "properties": { "effect": { "title": "Effect", "type": "string", "description": "Valid sound effect names should be listed in the entity's resource_definition json file." } } }, "E": { "additionalProperties": false, "type": "object", "title": "The minecraft resourcepack actor animation 1.10.0", "description": "TODO description", "required": ["format_version", "animations"], "properties": { "format_version": { "title": "The 1.10.0 format version", "type": "string", "const": "1.10.0", "description": "A version that tells minecraft what type of data format can be expected when reading this file." }, "animations": { "title": "Animations schema", "description": "The animation 1.10.0 specification", "propertyNames": { "pattern": "^animation\\.[a-z\\.]+" }, "type": "object", "additionalProperties": { "additionalProperties": false, "type": "object", "title": "Animation 1.8.0", "description": "The animation specification for 1.8.0", "properties": { "anim_time_update": { "title": "Start delay", "description": "How does time pass when playing the animation. Defaults to \"query.anim_time + query.delta_time\" which means advance in seconds.", "$ref": "#/definitions/C" }, "animation_length": { "title": "Animation length", "description": "Override calculated value (set as the last keyframe time) and set animation length in seconds.", "type": "number" }, "blend_weight": { "title": "Blend weight", "description": "TODO", "$ref": "#/definitions/C" }, "bones": { "title": "Bones", "description": "Defines how the bones in an animation move or transform", "type": "object", "additionalProperties": { "title": "Bone transformation", "description": "The bone definition that declare how it transforms during animation", "type": "object", "additionalProperties": false, "properties": { "position": { "title": "Position", "description": "The Position transformation during this animation", "oneOf": [ { "$ref": "#/definitions/E_PositionV3" }, { "$ref": "#/definitions/D" }, { "type": "object", "propertyNames": { "pattern": "^[\\d.]+$" }, "additionalProperties": { "title": "Timeline object", "description": "A single point in time", "additionalProperties": false, "properties": { "lerp_mode": { "type": "string", "title": "Lerp mode", "description": "TODO", "enum": ["linear", "catmullrom"] }, "pre": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/E_PositionV3" }, "post": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/E_PositionV3" } } } } ] }, "rotation": { "title": "Rotation", "description": "The rotation transformation during this animation", "oneOf": [ { "$ref": "#/definitions/E_RotationV3" }, { "$ref": "#/definitions/D" }, { "type": "object", "propertyNames": { "pattern": "^[\\d.]+$" }, "additionalProperties": { "title": "Timeline object", "description": "A single point in time", "additionalProperties": false, "properties": { "lerp_mode": { "type": "string", "title": "Lerp mode", "description": "TODO", "enum": ["linear", "catmullrom"] }, "pre": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/E_RotationV3" }, "post": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/E_RotationV3" } } } } ] }, "relative_to": { "title": "Relative to", "description": "If set, makes the bone rotation relative to the entity instead of the bone's parent", "properties": { "rotation": { "title": "Rotation", "description": "If set, makes the bone rotation relative to the entity instead of the bone's parent", "type": "string" } } }, "scale": { "title": "Scale", "description": "TODO", "oneOf": [ { "$ref": "#/definitions/C" }, { "$ref": "#/definitions/E_ScaleV3" }, { "type": "object", "propertyNames": { "pattern": "^[\\d.]+$" }, "additionalProperties": { "title": "Timeline object", "description": "A single point in time", "additionalProperties": false, "properties": { "lerp_mode": { "type": "string", "title": "Lerp mode", "description": "TODO", "enum": ["linear", "catmullrom"] }, "pre": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/E_ScaleV3" }, "post": { "title": "Pre", "description": "TODO", "$ref": "#/definitions/E_ScaleV3" } } } } ] } } } }, "loop": { "title": "Loop", "description": "Should this animation stop, loop, or stay on the last frame when finished (true, false, hold_on_last_frame)", "oneOf": [{ "type": "boolean" }, { "type": "string", "enum": ["hold_on_last_frame"] }] }, "loop_delay": { "title": "Loop delay", "description": "How long to wait in seconds before looping this animation. Note that this expression is evaluated after each loop and on looping animation only.", "$ref": "#/definitions/C" }, "override_previous_animation": { "title": "Override previous animation", "description": "Reset bones in this animation to the default pose before applying this animation.", "type": "boolean" }, "particle_effects": { "title": "Particle effects", "description": "TODO", "oneOf": [ { "$ref": "#/definitions/E_ParticleEffect" }, { "type": "object", "propertyNames": { "pattern": "^[\\d.]+$", "examples": ["0.0"] }, "additionalProperties": { "title": "Timeline object", "description": "A single point in time", "oneOf": [ { "type": "object", "$ref": "#/definitions/E_ParticleEffect" }, { "type": "array", "items": { "$ref": "#/definitions/E_ParticleEffect" } } ] } } ] }, "start_delay": { "title": "Start delay", "description": "How long to wait in seconds before playing this animation. Note that this expression is evaluated once before playing, and only re-evaluated if asked to play from the beginning again. A looping animation should use 'loop_delay' if it wants a delay between loops.", "$ref": "#/definitions/C" }, "sound_effects": { "title": "Sound effect", "description": "TODO", "type": "object", "propertyNames": { "pattern": "^[\\d.]+$" }, "additionalProperties": { "$ref": "#/definitions/E_SoundEffect" } }, "timeline": { "title": "Timeline", "description": "The time line", "type": "object", "propertyNames": { "pattern": "^(\\d+.\\d+|\\d+)$" }, "additionalProperties": { "oneOf": [ { "type": "string", "title": "Molang", "description": "Variable definition", "pattern": "^(v|variable)\\..*=.*;$" }, { "type": "array", "title": "Collection timelime items", "items": { "type": "string", "title": "Molang", "description": "Variable definition", "pattern": "^(v|variable)\\..*=.*;$" } } ] } } } } } } } } }