{ "$schema": "http://json-schema.org/draft-07/schema", "$id": "blockception.minecraft.behavior.animations", "examples": [{ "format_version": "1.10.0", "animations": { "animation.example": {} } }], "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/C" } }, { "properties": { "format_version": { "$ref": "#/definitions/D" } } } ], "definitions": { "A_animationspec": { "anyOf": [ { "title": "Animation Specification", "description": "A single string that specifies which animation there are", "type": "string" }, { "type": "object", "title": "Animation Specification", "description": "A object specification on how to transition", "maxProperties": 1, "minProperties": 1, "additionalProperties": { "$ref": "#/definitions/B" } } ] }, "A_particle_effect_spec": { "additionalProperties": false, "type": "object", "required": ["effect"], "properties": { "bind_to_actor": { "type": "boolean", "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)." }, "effect": { "type": "string", "description": "The name of a particle effect that should be played" }, "locator": { "type": "string", "description": "The name of a locator on the actor where the effect should be located" }, "pre_effect_script": { "type": "string", "description": "A molang script that will be run when the particle emitter is initialized" } } }, "A_commands": { "type": "string", "description": "The event or commands to execute" }, "B": { "type": "string", "title": "Molang / String", "description": "Molang definition", "format": "molang" }, "A": { "type": "object", "title": "Animation 1.8.0", "description": "Animation for behaviors 1.8.0", "required": ["format_version", "animations"], "additionalProperties": false, "properties": { "format_version": { "title": "1.8.0 Format Version", "type": "string", "pattern": "^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", "type": "object", "propertyNames": { "pattern": "^animation\\.[a-z\\.]+" }, "additionalProperties": { "type": "object", "additionalProperties": false, "description": "TODO description: additionalItems", "title": "Animation", "properties": { "animation_length": { "type": "number", "description": "TODO description: animation length", "title": "Animation Length" }, "loop": { "type": "boolean", "description": "TODO description: loop", "title": "Loop" }, "timeline": { "title": "Timeline", "description": "The time line", "type": "object", "propertyNames": { "pattern": "^(\\d+.\\d+|\\d+)$" }, "additionalProperties": { "oneOf": [{ "$ref": "#/definitions/A_commands" }, { "type": "array", "title": "Collection Timelime Items", "items": { "$ref": "#/definitions/A_commands" } }] } } } } } } }, "C_animationspec": { "anyOf": [ { "title": "Animation Specification", "description": "A single string that specifies which animation there are", "type": "string" }, { "type": "object", "title": "Animation Specification", "description": "A object specification on how to transition", "maxProperties": 1, "minProperties": 1, "additionalProperties": { "$ref": "#/definitions/B" } } ] }, "C_particle_effect_spec": { "additionalProperties": false, "type": "object", "required": ["effect"], "properties": { "bind_to_actor": { "type": "boolean", "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)." }, "effect": { "type": "string", "description": "The name of a particle effect that should be played" }, "locator": { "type": "string", "description": "The name of a locator on the actor where the effect should be located" }, "pre_effect_script": { "type": "string", "description": "A molang script that will be run when the particle emitter is initialized" } } }, "C_commands": { "type": "string", "description": "The event or commands to execute" }, "C": { "type": "object", "title": "Animation 1.10.0", "description": "Animation for behavior for 1.10.0", "required": ["format_version", "animations"], "properties": { "format_version": { "title": "1.10.0 Format Version", "type": "string", "pattern": "^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", "type": "object", "propertyNames": { "pattern": "^animation\\.[a-z\\.]+" }, "additionalProperties": { "title": "Animation", "type": "object", "description": "A single animation definition for 1.10.0", "additionalProperties": false, "properties": { "animation_length": { "type": "number", "description": "The time in seconds this animation will last", "title": "Animation Length" }, "loop": { "type": "boolean", "description": "Whenever this animation should loop once it reaches the end, will only happen if the animation is still active", "title": "Loop" }, "timeline": { "title": "Timeline", "description": "A timeline specification, property names are timestamps", "type": "object", "propertyNames": { "pattern": "^(\\d+.\\d+|\\d+)$" }, "additionalProperties": { "oneOf": [ { "type": "string", "$ref": "#/definitions/C_commands" }, { "type": "array", "title": "Collection Timelime Items", "items": { "$ref": "#/definitions/C_commands" } } ] } } } } } }, "additionalProperties": false }, "D": { "title": "Format version", "description": "A version that tells minecraft what type of data format can be expected when reading this file.", "pattern": "^[0-9,.]+?$", "type": "string" } } }