{ "$schema": "http://json-schema.org/draft-07/schema", "$id": "blockception.minecraft.behavior.animations", "examples": [{ "format_version": "1.17.0", "animations": { "animation.example": {} } }], "definitions": { "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/A" } } ] }, "particle_effect_spec": { "additionalProperties": false, "type": "object", "required": ["effect"], "properties": { "bind_to_actor": { "title": "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).", "const": false }, "effect": { "type": "string", "description": "The name of a particle effect that should be played", "title": "Effect" }, "locator": { "type": "string", "description": "The name of a locator on the actor where the effect should be located", "title": "Locator" }, "pre_effect_script": { "type": "string", "description": "A molang script that will be run when the particle emitter is initialized", "title": "Pre Effect Script" } } }, "commands": { "type": "string", "description": "The event or commands to execute", "title": "Commands", "anyOf": [ { "pattern": "^.*=.*;$", "title": "Variable", "description": "Sets the value to a molang variable" }, { "pattern": "^/[a-z].*$", "title": "Minecraft Command", "description": "Executes a minecraft command" }, { "pattern": "[A-Za-z][a-z]*\\.[a-z_0-9]*", "title": "Molang" }, { "pattern": "^@s .*$", "title": "Event", "description": "An event to be called upon within the executing entity" } ] }, "A": { "type": "string", "title": "Molang", "description": "Molang definition", "format": "molang", "examples": ["query.variant", "(1.0)", "query.", "variable.=;"], "defaultSnippets": [{ "label": "New Molang", "body": "$1" }] }, "B": { "title": "Format Version", "description": "A version that tells minecraft what type of data format can be expected when reading this file.", "pattern": "^([1-9]+)\\.([0-9]+)\\.([0-9]+)$", "type": "string", "examples": ["1.17.40", "1.17.30", "1.17.0", "1.16.0", "1.15.0", "1.14.0", "1.13.0", "1.12.0", "1.10.0", "1.8.0"], "defaultSnippets": [{ "label": "New Format version", "body": "1.${1|8,10,12,17,18|}.${2|0|}" }] } }, "type": "object", "title": "Animation", "description": "Animation for behavior for", "required": ["format_version", "animations"], "additionalProperties": false, "properties": { "format_version": { "$ref": "#/definitions/B" }, "animations": { "title": "Animations Schema", "description": "The animation specification", "type": "object", "propertyNames": { "pattern": "^animation\\.[a-z\\.]+" }, "additionalProperties": { "title": "Animation", "type": "object", "description": "A single animation definition for", "additionalProperties": false, "propertyNames": { "examples": ["animation.example.foo"] }, "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+)$", "examples": ["0.0", "1.0"] }, "additionalProperties": { "oneOf": [ { "type": "string", "$ref": "#/definitions/commands" }, { "type": "array", "title": "Collection Timelime Items", "items": { "$ref": "#/definitions/commands" } } ] } } } } } } }