529 lines
26 KiB
JSON
529 lines
26 KiB
JSON
{
|
|
"$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": "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/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"] }]
|
|
},
|
|
"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",
|
|
"type": "object",
|
|
"propertyNames": { "pattern": "^[\\d.]+$", "examples": ["0.0", "1.0", "2.3"] },
|
|
"additionalProperties": {
|
|
"title": "Timeline object",
|
|
"description": "A single point in time",
|
|
"$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"] }]
|
|
},
|
|
"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.]+$" },
|
|
"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)\\..*=.*;$" }
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|