{"$schema":"http://json-schema.org/draft-07/schema","$id":"blockception.minecraft.resource.animation_controller","examples":[{"format_version":"1.18.0","animation_controllers":{"controller.animation.example":{"states":{"default":{"transitions":[{"state_1":"query.is_baby"}]},"state_1":{"animations":["state_1"],"transitions":[{"default":"query.all_animations_finished"}]}}}}}],"type":"object","title":"Animation Controller","description":"UNDOCUMENTED","$comment":"UNDOCUMENTED","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":{"oneOf":[{"type":"string","$ref":"#/definitions/A"},{"type":"number","description":"A blend weight"}]}}]},"particle_effect_spec":{"additionalProperties":false,"type":"object","required":["effect"],"properties":{"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).","const":false},"effect":{"type":"string","title":"Effect","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":{"type":"string","title":"Pre Effect Script","description":"A molang script that will be run when the particle emitter is initialized","pattern":"^.+;$"}}},"commands":{"type":"string","description":"The event or commands to execute","pattern":"^(@s .+|/.+)$"},"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.18.10","1.18.0","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|}"}]},"C":{"title":"Molang Number","description":"The minecraft molang definition that results in a float","anyOf":[{"type":"string","minLength":0},{"type":"number"}],"examples":[0,"query.variant","(1.0)","query.","variable.=;"],"defaultSnippets":[{"label":"New Molang","body":"$1"}]}},"required":["format_version","animation_controllers"],"additionalProperties":false,"properties":{"format_version":{"$ref":"#/definitions/B"},"animation_controllers":{"type":"object","title":"Animation Controllers Schema","description":"The animation controllers schema for","propertyNames":{"pattern":"^controller\\.animation\\.[a-z\\.]+","examples":["controller.animation.example","controller.animation.example.foo"]},"additionalProperties":{"additionalProperties":false,"type":"object","title":"A Animation Controller","description":"A single animation controller","required":["states"],"minProperties":1,"properties":{"states":{"title":"States","description":"The states of this animation controller","propertyNames":{"pattern":"[a-z\\.]+","examples":["default"]},"minProperties":1,"type":"object","additionalProperties":{"additionalProperties":false,"title":"Animation State","description":"Animation state","type":"object","examples":[{"animations":["anim.idle"],"transitions":[{"example":"query.is_sheared"}]}],"properties":{"animations":{"title":"Animations","description":"The animations definition for","type":"array","items":{"$ref":"#/definitions/animationspec","title":"Animations"}},"blend_transition":{"title":"Blend Transition","oneOf":[{"type":"number","default":0.1,"minimum":0,"description":"A short-hand version of blend_out that simply sets the amount of time to fade out if the animation is interrupted"},{"type":"object","description":"Specifies the cross-fade time in seconds when transitioning to another state","additionalProperties":{"type":"number","description":"Mapping of time since the animation was canceled, to the blend value at that time. A default key of time=0 to a blend value of 1.0 is provided if any other key is set and a blend value at time=0 hasn't already been set."}}]},"blend_via_shortest_path":{"description":"When blending a transition to another state, animate each euler axis through the shortest rotation, instead of by value","type":"boolean","title":"Blend Via Shortest Path"},"particle_effects":{"description":"The effects to be emitted","type":"array","items":{"$ref":"#/definitions/particle_effect_spec","description":"UNDOCUMENTED: particle effects","title":"Particle Effects"},"title":"Particle Effects"},"sound_effects":{"type":"array","description":"Collection of sounds to trigger on entry to this animation state.","items":{"type":"object","additionalProperties":false,"required":["effect"],"properties":{"effect":{"description":"Valid sound effect names should be listed in the entity's resource_definition json file.","type":"string"}}}},"transitions":{"title":"Transition","description":"The transition definition for","minProperties":1,"type":"array","items":{"$ref":"#/definitions/animationspec","description":"The specification on when to transition to a new state","title":"Transitions"}},"variables":{"type":"object","additionalProperties":{"additionalProperties":false,"type":"object","required":["input"],"properties":{"input":{"$ref":"#/definitions/C"},"remap_curve":{"title":"Remap Curve","type":"object","additionalProperties":{"propertyNames":{"pattern":"^([\\-\\+0-9]+|[\\-\\+0-9]+.[0-9]+)$"},"type":"number"}}}}},"on_entry":{"title":"On Entry","description":"Sets molang on data on entry","$comment":"UNDOCUMENTED","type":"array","items":{"pattern":"^.+=.+;$","title":"Molang","description":"UNDOCUMENTED","$comment":"UNDOCUMENTED","type":"string"}},"on_exit":{"title":"On Exit","description":"Sets molang on data on exit","$comment":"UNDOCUMENTED","type":"array","items":{"pattern":"^.+=.+;$","title":"Molang","description":"UNDOCUMENTED","$comment":"UNDOCUMENTED","type":"string"}}}}},"initial_state":{"type":"string","description":"The state to start with, if not specified state at position 0 in the array is used","title":"Initial State"}}}}}}