2021-02-24 22:48:32 +01:00
{
"$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)\\..*=.*;$" }
}
]
}
}
}
}
}
}
}
}
}