diff options
| author | 方法放寒假 <40489495+MiemieMethod@users.noreply.github.com> | 2022-11-29 08:13:35 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-29 01:13:35 +0100 |
| commit | 7e2ae04341d2bd1ff677a065931ec11782580b4a (patch) | |
| tree | 00add079954c809d00f02e91f3565a3a3fbbb1cc /tests/examplefiles | |
| parent | 0411c43c9cb8b9c8e7e8a25109d45994e300986e (diff) | |
| download | pygments-git-7e2ae04341d2bd1ff677a065931ec11782580b4a.tar.gz | |
Add a lexer for Schemas for Minecraft Add-ons and 4 examples, merging lexers (#2276)
Diffstat (limited to 'tests/examplefiles')
| -rw-r--r-- | tests/examplefiles/mcschema/actor_animation.mcschema | 145 | ||||
| -rw-r--r-- | tests/examplefiles/mcschema/actor_animation.mcschema.output | 892 | ||||
| -rw-r--r-- | tests/examplefiles/mcschema/attribute.mcschema | 7 | ||||
| -rw-r--r-- | tests/examplefiles/mcschema/attribute.mcschema.output | 52 | ||||
| -rw-r--r-- | tests/examplefiles/mcschema/geometry.mcschema | 225 | ||||
| -rw-r--r-- | tests/examplefiles/mcschema/geometry.mcschema.output | 1404 | ||||
| -rw-r--r-- | tests/examplefiles/mcschema/manifest.mcschema | 136 | ||||
| -rw-r--r-- | tests/examplefiles/mcschema/manifest.mcschema.output | 1158 |
8 files changed, 4019 insertions, 0 deletions
diff --git a/tests/examplefiles/mcschema/actor_animation.mcschema b/tests/examplefiles/mcschema/actor_animation.mcschema new file mode 100644 index 00000000..e8b229ff --- /dev/null +++ b/tests/examplefiles/mcschema/actor_animation.mcschema @@ -0,0 +1,145 @@ +actor_animation:1.8.0:{ + version "format_version" + object "animations" + { + object "animation.<identifier>" + { + bool "loop" : opt // should this animation stop, loop, or stay on the last frame when finished (true, false, "hold_on_last_frame" + string "loop"<"hold_on_last_frame"> : opt // should this animation stop, loop, or stay on the last frame when finished (true, false, "hold_on_last_frame" + molang "start_delay" : opt // 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. + molang "loop_delay" : opt // How long to wait in seconds before looping this animation. Note that this expression is evaluated after each loop and on looping animation only. + molang "anim_time_update" : opt // how does time pass when playing the animation. Defaults to "query.anim_time + query.delta_time" which means advance in seconds. + molang "blend_weight" : opt + bool "override_previous_animation" : opt // reset bones in this animation to the default pose before applying this animation + object "bones" : opt + { + object "<identifier>" + { + object "relative_to" : opt + { + string "rotation"<"entity"> : opt // if set, makes the bone rotation relative to the entity instead of the bone's parent + } + molang "position" : opt + array "position" : opt + { + molang "<any array element>" + } + object "position" : opt + { + array "<time_stamp>"[3] + { + molang "<any array element>" + } + object "<time_stamp>" + { + enumerated_value "lerp_mode"<"linear", "catmullrom"> : opt + array "pre"[3] : opt + { + molang "<any array element>" + } + array "post"[3] : opt + { + molang "<any array element>" + } + } + } + molang "rotation" : opt + array "rotation" : opt + { + molang "<any array element>" + object "<any array element>" + { + molang "[xyz]" + } + } + object "rotation" : opt + { + array "<time_stamp>"[3] + { + molang "<any array element>" + } + object "<time_stamp>" + { + enumerated_value "lerp_mode"<"linear", "catmullrom"> : opt + array "pre"[3] : opt + { + molang "<any array element>" + } + array "post"[3] : opt + { + molang "<any array element>" + } + } + } + molang "scale" : opt + array "scale" : opt + { + molang "<any array element>" + } + object "scale" : opt + { + array "<time_stamp>"[3] + { + molang "<any array element>" + } + object "<time_stamp>" + { + enumerated_value "lerp_mode"<"linear", "catmullrom"> : opt + array "pre"[3] : opt + { + molang "<any array element>" + } + array "post"[3] : opt + { + molang "<any array element>" + } + } + } + } + } + object "particle_effects" : opt + { + object "<time_stamp>" : opt + { + string "effect" // The name of a particle effect that should be played + string "locator" : opt // The name of a locator on the actor where the effect should be located + molang "pre_effect_script" : opt // A Molang script that will be run when the particle emitter is initialized + bool "bind_to_actor" : opt // 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). + } + array "<time_stamp>" : opt + { + object "<any array element>" : opt + { + string "effect" // The name of a particle effect that should be played + string "locator" : opt // The name of a locator on the actor where the effect should be located + molang "pre_effect_script" : opt // A Molang script that will be run when the particle emitter is initialized + bool "bind_to_actor" : opt // 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). + } + } + } + object "sound_effects" : opt // sound effects to trigger as this animation plays, keyed by time + { + object "<time_stamp>" : opt + { + string "effect" // Valid sound effect names should be listed in the entity's resource_definition json file. + } + array "<time_stamp>" : opt + { + object "<any array element>" : opt + { + string "effect" // Valid sound effect names should be listed in the entity's resource_definition json file. + } + } + } + object "timeline" : opt + { + string "<time_stamp>" : opt + array "<time_stamp>" : opt + { + string "<any array element>" : opt + } + } + float "animation_length" : opt // override calculated value (set as the max keyframe or event time) and set animation length in seconds. + } + } +}
\ No newline at end of file diff --git a/tests/examplefiles/mcschema/actor_animation.mcschema.output b/tests/examplefiles/mcschema/actor_animation.mcschema.output new file mode 100644 index 00000000..72181d87 --- /dev/null +++ b/tests/examplefiles/mcschema/actor_animation.mcschema.output @@ -0,0 +1,892 @@ +'actor_animation' Literal.String.Symbol +':' Operator +'1' Literal.Number.Integer +'.' Operator +'8' Literal.Number.Integer +'.' Operator +'0' Literal.Number.Integer +':' Operator +'{' Punctuation +'\n ' Text.Whitespace +'version' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'format_version' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'animations' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'animation.<identifier>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'loop' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// should this animation stop, loop, or stay on the last frame when finished (true, false, "hold_on_last_frame"' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'loop' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'hold_on_last_frame' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// should this animation stop, loop, or stay on the last frame when finished (true, false, "hold_on_last_frame"' Comment.Single +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'start_delay' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// 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." Comment.Single +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'loop_delay' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// How long to wait in seconds before looping this animation. Note that this expression is evaluated after each loop and on looping animation only.' Comment.Single +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'anim_time_update' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// how does time pass when playing the animation. Defaults to "query.anim_time + query.delta_time" which means advance in seconds.' Comment.Single +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'blend_weight' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'override_previous_animation' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// reset bones in this animation to the default pose before applying this animation' Comment.Single +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'bones' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<identifier>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'relative_to' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'rotation' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'entity' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// if set, makes the bone rotation relative to the entity instead of the bone's parent" Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'position' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'position' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'position' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'lerp_mode' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'linear' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'catmullrom' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'pre' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'post' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'rotation' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'rotation' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'[xyz]' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'rotation' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'lerp_mode' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'linear' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'catmullrom' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'pre' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'post' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'scale' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'scale' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'scale' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'lerp_mode' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'linear' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'catmullrom' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'pre' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'post' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'particle_effects' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'effect' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The name of a particle effect that should be played' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'locator' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// The name of a locator on the actor where the effect should be located' Comment.Single +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'pre_effect_script' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// A Molang script that will be run when the particle emitter is initialized' Comment.Single +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'bind_to_actor' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// 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).' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'effect' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The name of a particle effect that should be played' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'locator' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// The name of a locator on the actor where the effect should be located' Comment.Single +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'pre_effect_script' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// A Molang script that will be run when the particle emitter is initialized' Comment.Single +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'bind_to_actor' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// 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).' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'sound_effects' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// sound effects to trigger as this animation plays, keyed by time' Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'effect' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +"// Valid sound effect names should be listed in the entity's resource_definition json file." Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'effect' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +"// Valid sound effect names should be listed in the entity's resource_definition json file." Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'timeline' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<time_stamp>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'animation_length' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// override calculated value (set as the max keyframe or event time) and set animation length in seconds.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace diff --git a/tests/examplefiles/mcschema/attribute.mcschema b/tests/examplefiles/mcschema/attribute.mcschema new file mode 100644 index 00000000..95cb6151 --- /dev/null +++ b/tests/examplefiles/mcschema/attribute.mcschema @@ -0,0 +1,7 @@ +shared_attribute:1.16.100-alpha+beta: +object +{ + float_range "value" : opt + float "min" : opt + float "max" : opt +}
\ No newline at end of file diff --git a/tests/examplefiles/mcschema/attribute.mcschema.output b/tests/examplefiles/mcschema/attribute.mcschema.output new file mode 100644 index 00000000..98c9cad1 --- /dev/null +++ b/tests/examplefiles/mcschema/attribute.mcschema.output @@ -0,0 +1,52 @@ +'shared_attribute' Literal.String.Symbol +':' Operator +'1' Literal.Number.Integer +'.' Operator +'16' Literal.Number.Integer +'.' Operator +'100' Literal.Number.Integer +'-' Operator +'alpha' Literal.String +'+' Operator +'beta' Literal.String +':' Operator +'\n' Text.Whitespace + +'object' Keyword.Declaration +'\n' Text.Whitespace + +'{' Punctuation +'\n ' Text.Whitespace +'float_range' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'value' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'min' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'max' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace diff --git a/tests/examplefiles/mcschema/geometry.mcschema b/tests/examplefiles/mcschema/geometry.mcschema new file mode 100644 index 00000000..d7ee3267 --- /dev/null +++ b/tests/examplefiles/mcschema/geometry.mcschema @@ -0,0 +1,225 @@ +geometry:1.16.0:{ + version "format_version" + bool "debug" : opt + array "minecraft:geometry"[1,*] + { + object "<any array element>" + { + object "description" + { + string "identifier" // Entity definition and Client Block definition files refer to this geometry via this identifier. + float "visible_bounds_width" : opt // Width of the visibility bounding box (in model space units). + float "visible_bounds_height" : opt // Height of the visible bounding box (in model space units). + array "visible_bounds_offset"[3] : opt + { + float "<any array element>" // Offset of the visibility bounding box from the entity location point (in model space units). + } + int "texture_width" : opt // Assumed width in texels of the texture that will be bound to this geometry. + int "texture_height" : opt // Assumed height in texels of the texture that will be bound to this geometry. + } + string "cape" : opt + array "bones" : opt // Bones define the 'skeleton' of the mob: the parts that can be animated, and to which geometry and other bones are attached. + { + object "<any array element>" : opt + { + string "name" // Animation files refer to this bone via this identifier. + string "parent" : opt // Bone that this bone is relative to. If the parent bone moves, this bone will move along with it. + array "pivot"[3] : opt + { + float "<any array element>" // The bone pivots around this point (in model space units). + } + array "rotation"[3] : opt + { + float "<any array element>" // This is the initial rotation of the bone around the pivot, pre-animation (in degrees, x-then-y-then-z order). + } + bool "mirror" : opt // Mirrors the UV's of the unrotated cubes along the x axis, also causes the east/west faces to get flipped. + float "inflate" : opt // Grow this box by this additive amount in all directions (in model space units). + bool "debug" : opt + int "render_group_id"<0-*> : opt + array "cubes" : opt // This is the list of cubes associated with this bone. + { + object "<any array element>" : opt + { + array "origin"[3] : opt + { + float "<any array element>" // This point declares the unrotated lower corner of cube (smallest x/y/z value in model space units). + } + array "size"[3] : opt + { + float "<any array element>" // The cube extends this amount relative to its origin (in model space units). + } + array "rotation"[3] : opt + { + float "<any array element>" // The cube is rotated by this amount (in degrees, x-then-y-then-z order) around the pivot. + } + array "pivot"[3] : opt + { + float "<any array element>" // If this field is specified, rotation of this cube occurs around this point, otherwise its rotation is around the center of the box. + } + float "inflate" : opt // Grow this box by this additive amount in all directions (in model space units), this field overrides the bone's inflate field for this cube only. + bool "mirror" : opt // Mirrors this cube about the unrotated x axis (effectively flipping the east / west faces), overriding the bone's 'mirror' setting for this cube. + array "uv"[2] : opt + { + float "<any array element>" // Specifies the upper-left corner on the texture for the start of the texture mapping for this box. + } + object "uv" : opt // This is an alternate per-face uv mapping which specifies each face of the cube. Omitting a face will cause that face to not get drawn. + { + object "north" : opt // Specifies the UV's for the face that stretches along the x and y axes, and faces the -z axis. + { + array "uv"[2] + { + float "<any array element>" // Specifies the uv origin for the face. For this face, it is the upper-left corner, when looking at the face with y being up. + } + array "uv_size"[2] : opt + { + float "<any array element>" // The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead. + } + string "material_instance" : opt + } + object "south" : opt // Specifies the UV's for the face that stretches along the x and y axes, and faces the z axis + { + array "uv"[2] + { + float "<any array element>" // Specifies the uv origin for the face. For this face, it is the upper-left corner, when looking at the face with y being up. + } + array "uv_size"[2] : opt + { + float "<any array element>" // The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead. + } + string "material_instance" : opt + } + object "east" : opt // Specifies the UV's for the face that stretches along the z and y axes, and faces the x axis + { + array "uv"[2] + { + float "<any array element>" // Specifies the uv origin for the face. For this face, it is the upper-left corner, when looking at the face with y being up. + } + array "uv_size"[2] : opt + { + float "<any array element>" // The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead. + } + string "material_instance" : opt + } + object "west" : opt // Specifies the UV's for the face that stretches along the z and y axes, and faces the -x axis + { + array "uv"[2] + { + float "<any array element>" // Specifies the uv origin for the face. For this face, it is the upper-left corner, when looking at the face with y being up. + } + array "uv_size"[2] : opt + { + float "<any array element>" // The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead. + } + string "material_instance" : opt + } + object "up" : opt // Specifies the UV's for the face that stretches along the x and z axes, and faces the y axis + { + array "uv"[2] + { + float "<any array element>" // Specifies the uv origin for the face. For this face, it is the back-upper-left corner, assuming you're facing 'north' relative to the cube. + } + array "uv_size"[2] : opt + { + float "<any array element>" // The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead. + } + string "material_instance" : opt + } + object "down" : opt // Specifies the UV's for the face that stretches along the x and z axes, and faces the -y axis + { + array "uv"[2] + { + float "<any array element>" // Specifies the uv origin for the face. For this face, it is the back-down-right corner, assuming you're facing 'north' relative to the cube. + } + array "uv_size"[2] : opt + { + float "<any array element>" // The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead. + } + string "material_instance" : opt + } + } + } + } + molang "binding" : opt // useful for items. A molang expression specifying the bone name of the parent skeletal hierarchy that this bone should use as the root transform. Without this field it will look for a bone in the parent entity with the same name as this bone. If both are missing, it will assume a local skeletal hierarchy (via the "parent" field). If that is also missing, it will attach to the owning entity's root transform. + object "locators" : opt + { + array "<identifier>" : opt // This is a list of locators associated with this bone. A locator is a point in model space that tracks a particular bone as the bone animates (by maintaining it's relationship to the bone through the animation). + { + float "<any array element>" : opt // Position of the locator in model space. + } + object "<identifier>" : opt // This is a list of locators associated with this bone. A locator is a point in model space that tracks a particular bone as the bone animates (by maintaining it's relationship to the bone through the animation). + { + array "offset" + { + float "<any array element>" : opt // Position of the locator in model space. + } + array "rotation" + { + float "<any array element>" : opt // Rotation of the locator in model space. + } + bool "ignore_inherited_scale" : opt // Discard scale inherited from parent bone. + } + } + object "poly_mesh" : opt // ***EXPERIMENTAL*** A triangle or quad mesh object. Can be used in conjunction with cubes and texture geometry. + { + bool "normalized_uvs" : opt // If true, UVs are assumed to be [0-1]. If false, UVs are assumed to be [0-texture_width] and [0-texture_height] respectively. + array "positions" : opt + { + array "<any array element>"[3] : opt + { + float "<any array element>" // Vertex positions for the mesh. Can be either indexed via the "polys" section, or be a quad-list if mapped 1-to-1 to the normals and UVs sections. + } + } + array "normals" : opt + { + array "<any array element>"[3] : opt + { + float "<any array element>" // Vertex normals. Can be either indexed via the "polys" section, or be a quad-list if mapped 1-to-1 to the positions and UVs sections. + } + } + array "uvs" : opt + { + array "<any array element>"[2] : opt + { + float "<any array element>" // Vertex UVs. Can be either indexed via the "polys" section, or be a quad-list if mapped 1-to-1 to the positions and normals sections. + } + } + array "polys" + { + array "<any array element>"[3,4] : opt + { + array "<any array element>"[3] + { + float "<any array element>" // Poly element indices, as an array of polygons, each an array of either three or four vertices, each an array of indices into positions, normals, and UVs (in that order). + } + } + } + string "polys"<"tri_list", "quad_list"> // If not specifying vertex indices, arrays of data must be a list of tris or quads, set by making this property either "tri_list" or "quad_list" + } + array "texture_meshes" : opt // ***EXPERIMENTAL*** Adds a mesh to the bone's geometry by converting texels in a texture into boxes + { + object "<any array element>" + { + string "texture" // The friendly-named texture to use. + array "position"[3] : opt + { + float "<any array element>" // The position of the pivot point after rotation (in *entity space* not texture or bone space) of the texture geometry + } + array "local_pivot"[3] : opt + { + float "<any array element>" // The pivot point on the texture (in *texture space* not entity or bone space) of the texture geometry + } + array "rotation"[3] : opt + { + float "<any array element>" // The rotation (in degrees) of the texture geometry relative to the offset + } + array "scale"[3] : opt + { + float "<any array element>" // The scale (in degrees) of the texture geometry relative to the offset + } + } + } + } + } + } + } +}
\ No newline at end of file diff --git a/tests/examplefiles/mcschema/geometry.mcschema.output b/tests/examplefiles/mcschema/geometry.mcschema.output new file mode 100644 index 00000000..0a402b6e --- /dev/null +++ b/tests/examplefiles/mcschema/geometry.mcschema.output @@ -0,0 +1,1404 @@ +'geometry' Literal.String.Symbol +':' Operator +'1' Literal.Number.Integer +'.' Operator +'16' Literal.Number.Integer +'.' Operator +'0' Literal.Number.Integer +':' Operator +'{' Punctuation +'\n ' Text.Whitespace +'version' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'format_version' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'debug' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'minecraft:geometry' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'1' Literal.Number.Integer +',' Punctuation +'*' Operator +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'description' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'identifier' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Entity definition and Client Block definition files refer to this geometry via this identifier.' Comment.Single +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'visible_bounds_width' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// Width of the visibility bounding box (in model space units).' Comment.Single +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'visible_bounds_height' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// Height of the visible bounding box (in model space units).' Comment.Single +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'visible_bounds_offset' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Offset of the visibility bounding box from the entity location point (in model space units).' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'int' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'texture_width' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// Assumed width in texels of the texture that will be bound to this geometry.' Comment.Single +'\n ' Text.Whitespace +'int' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'texture_height' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// Assumed height in texels of the texture that will be bound to this geometry.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'cape' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'bones' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// Bones define the 'skeleton' of the mob: the parts that can be animated, and to which geometry and other bones are attached." Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Animation files refer to this bone via this identifier.' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'parent' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// Bone that this bone is relative to. If the parent bone moves, this bone will move along with it.' Comment.Single +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'pivot' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The bone pivots around this point (in model space units).' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'rotation' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// This is the initial rotation of the bone around the pivot, pre-animation (in degrees, x-then-y-then-z order).' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'mirror' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// Mirrors the UV's of the unrotated cubes along the x axis, also causes the east/west faces to get flipped." Comment.Single +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'inflate' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// Grow this box by this additive amount in all directions (in model space units).' Comment.Single +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'debug' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'int' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'render_group_id' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'0' Literal.Number.Integer +'-' Operator +'*' Operator +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'cubes' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// This is the list of cubes associated with this bone.' Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'origin' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// This point declares the unrotated lower corner of cube (smallest x/y/z value in model space units).' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'size' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The cube extends this amount relative to its origin (in model space units).' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'rotation' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The cube is rotated by this amount (in degrees, x-then-y-then-z order) around the pivot.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'pivot' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// If this field is specified, rotation of this cube occurs around this point, otherwise its rotation is around the center of the box.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'inflate' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// Grow this box by this additive amount in all directions (in model space units), this field overrides the bone's inflate field for this cube only." Comment.Single +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'mirror' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// Mirrors this cube about the unrotated x axis (effectively flipping the east / west faces), overriding the bone's 'mirror' setting for this cube." Comment.Single +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Specifies the upper-left corner on the texture for the start of the texture mapping for this box.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// This is an alternate per-face uv mapping which specifies each face of the cube. Omitting a face will cause that face to not get drawn.' Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'north' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// Specifies the UV's for the face that stretches along the x and y axes, and faces the -z axis." Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Specifies the uv origin for the face. For this face, it is the upper-left corner, when looking at the face with y being up.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv_size' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'material_instance' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'south' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// Specifies the UV's for the face that stretches along the x and y axes, and faces the z axis" Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Specifies the uv origin for the face. For this face, it is the upper-left corner, when looking at the face with y being up.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv_size' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'material_instance' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'east' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// Specifies the UV's for the face that stretches along the z and y axes, and faces the x axis" Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Specifies the uv origin for the face. For this face, it is the upper-left corner, when looking at the face with y being up.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv_size' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'material_instance' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'west' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// Specifies the UV's for the face that stretches along the z and y axes, and faces the -x axis" Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Specifies the uv origin for the face. For this face, it is the upper-left corner, when looking at the face with y being up.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv_size' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'material_instance' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'up' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// Specifies the UV's for the face that stretches along the x and z axes, and faces the y axis" Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +"// Specifies the uv origin for the face. For this face, it is the back-upper-left corner, assuming you're facing 'north' relative to the cube." Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv_size' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'material_instance' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'down' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// Specifies the UV's for the face that stretches along the x and z axes, and faces the -y axis" Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +"// Specifies the uv origin for the face. For this face, it is the back-down-right corner, assuming you're facing 'north' relative to the cube." Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uv_size' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'material_instance' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'molang' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'binding' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// useful for items. A molang expression specifying the bone name of the parent skeletal hierarchy that this bone should use as the root transform. Without this field it will look for a bone in the parent entity with the same name as this bone. If both are missing, it will assume a local skeletal hierarchy (via the "parent" field). If that is also missing, it will attach to the owning entity\'s root transform.' Comment.Single +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'locators' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<identifier>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// This is a list of locators associated with this bone. A locator is a point in model space that tracks a particular bone as the bone animates (by maintaining it's relationship to the bone through the animation)." Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// Position of the locator in model space.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<identifier>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// This is a list of locators associated with this bone. A locator is a point in model space that tracks a particular bone as the bone animates (by maintaining it's relationship to the bone through the animation)." Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'offset' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// Position of the locator in model space.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'rotation' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// Rotation of the locator in model space.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'ignore_inherited_scale' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// Discard scale inherited from parent bone.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'poly_mesh' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// ***EXPERIMENTAL*** A triangle or quad mesh object. Can be used in conjunction with cubes and texture geometry.' Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'normalized_uvs' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// If true, UVs are assumed to be [0-1]. If false, UVs are assumed to be [0-texture_width] and [0-texture_height] respectively.' Comment.Single +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'positions' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Vertex positions for the mesh. Can be either indexed via the "polys" section, or be a quad-list if mapped 1-to-1 to the normals and UVs sections.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'normals' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Vertex normals. Can be either indexed via the "polys" section, or be a quad-list if mapped 1-to-1 to the positions and UVs sections.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uvs' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'2' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Vertex UVs. Can be either indexed via the "polys" section, or be a quad-list if mapped 1-to-1 to the positions and normals sections.' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'polys' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +',' Punctuation +'4' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// Poly element indices, as an array of polygons, each an array of either three or four vertices, each an array of indices into positions, normals, and UVs (in that order).' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'polys' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'tri_list' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'quad_list' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +'// If not specifying vertex indices, arrays of data must be a list of tris or quads, set by making this property either "tri_list" or "quad_list"' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'texture_meshes' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +"// ***EXPERIMENTAL*** Adds a mesh to the bone's geometry by converting texels in a texture into boxes" Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'texture' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The friendly-named texture to use.' Comment.Single +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'position' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The position of the pivot point after rotation (in *entity space* not texture or bone space) of the texture geometry' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'local_pivot' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The pivot point on the texture (in *texture space* not entity or bone space) of the texture geometry' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'rotation' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The rotation (in degrees) of the texture geometry relative to the offset' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'scale' Literal.String.Double +'"' Literal.String.Double +'[' Punctuation +'3' Literal.Number.Integer +']' Punctuation +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// The scale (in degrees) of the texture geometry relative to the offset' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace diff --git a/tests/examplefiles/mcschema/manifest.mcschema b/tests/examplefiles/mcschema/manifest.mcschema new file mode 100644 index 00000000..39feb621 --- /dev/null +++ b/tests/examplefiles/mcschema/manifest.mcschema @@ -0,0 +1,136 @@ +manifest:2: +object +{ + int "format_version" // 该文件的格式版本,此处应为`2` + object "header" + { + string "uuid"</[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/> // 该包的UUID,当解析内容出错时,引擎会报内容日志错误。当引擎最终使用的该包的UUID为`6989C411-4355-4756-9163-51C1DF5EF677`时,由于该UUID为保留的UUID,这会使该附加包从列表中隐藏 + string "name" // 当不存在时引擎会报内容日志错误 + string "description" : opt + bool "platform_locked" : opt // 默认为false + enumerated_value "pack_scope"<"global", "world", "any"> : opt // 默认为`any` + bool "lock_template_options" // 当该包是世界模板包时是必须字段,当不是世界模板包时有效的该字段值会导致内容日志警告。引擎中实际有三种值:未定义、启用和禁用,该字段不存在或解析出错时为未定义,`true`时为启用,`false`时为禁用 + semver "version" // 该语义化版本字段不可为`*`,解析出错时报内容日志错误 + semver "min_engine_version" // 当该包是资源包或行为包时是必须字段,当不是资源包且不是行为包时有效的该字段值会导致内容日志警告。该语义化版本字段只支持数组格式,且值必须大于或等于`1.13.0`,否则会报内容日志错误 + semver "base_game_version" // 当该包是世界模板包时是必须字段,当不是世界模板包时有效的该字段值会导致内容日志警告。该语义化版本字段无限制,但不得大于当前游戏版本或小于`1.13.0`,否则会报内容日志错误 + } + array "modules" // 若不存在,则会报内容日志错误 + { + object "<any array element>" + { + string "uuid"</[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/> // 该模块的UUID,当解析内容出错时,引擎会报内容日志错误。如果包的UUID和某个模块的UUID重复,会报内容日志警告并以包的UUID的MD5杂凑值为种子通过一定算法生成新的包的UUID + semver "version" // 该语义化版本字段不可为`*`,解析出错时报内容日志错误 + string "name" : opt + enumerated_value "type"<"invalid", "resourcepack", "resources", "data", "plugin", "client_data", "interface", "script", "client_script", "world_template", "worldtemplate", "skin_pack", "skinpack", "persona_piece"> // `invalid`和其他非法字符串会导致内容日志错误 + enumerated_value "language"<"javascript"> : opt + string "entry" : opt + } + } + array "dependencies" : opt + { + object "<any array element>" + { + string "module_name" // 依赖的脚本API模块名,与`uuid`至少存在一个 + string "uuid"</[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/> // 依赖的包或模块的UUID,当解析内容出错时,引擎会报内容日志错误。 + string "version" // 该语义化版本字段不可为`*`,解析出错时报内容日志错误 + } + } + object "metadata" : opt + { + string "url" : opt + string "license" : opt + array "authors" : opt + { + string "<any array element>" + } + object "generated_with" : opt + { + array "<any tool name>" + { + semver "<any array element>" // 该语义化版本字段不可为`*` + } + } + } + array "settings" : opt + { + object "<any label control>" + { + enumerated_value "type"<"label", "toggle", "slider", "step_slider", "dropdown", "input"> // 控件类型,当前应为`label` + string "text" // 控件显示的文本 + string "name" // 该控件的名字,用于存值 + } + object "<any toggle control>" + { + enumerated_value "type"<"label", "toggle", "slider", "step_slider", "dropdown", "input"> // 控件类型,当前应为`toggle` + string "text" + string "name" + bool "default" // 默认值 + enumerated_value "control_locked"<"none", "pregame", "ingame"> : opt // 何时锁定该控件 + } + object "<any slider control>" + { + enumerated_value "type"<"label", "toggle", "slider", "step_slider", "dropdown", "input"> // 控件类型,当前应为`slider` + string "text" + string "name" + float "default" + float "min" + float "max" + float "step" : opt // 步长,默认为`1` + enumerated_value "control_locked"<"none", "pregame", "ingame"> : opt + } + object "<any step slider control>" + { + enumerated_value "type"<"label", "toggle", "slider", "step_slider", "dropdown", "input"> // 控件类型,当前应为`step_slider` + string "text" + string "name" + int "default"<0-*> + array "steps" + { + string "<any array element>" // 滑块中每步的文本 + } + enumerated_value "control_locked"<"none", "pregame", "ingame"> : opt + } + object "<any dropdown control>" + { + enumerated_value "type"<"label", "toggle", "slider", "step_slider", "dropdown", "input"> // 控件类型,当前应为`dropdown` + string "text" + string "name" + int "default"<0-*> + array "options" + { + string "<any array element>" // 下拉菜单中每项的文本 + } + } + object "<any text input control>" + { + enumerated_value "type"<"label", "toggle", "slider", "step_slider", "dropdown", "input"> // 控件类型,当前应为`input` + string "text" + string "name" + string "default" + string "placeholder" : opt // 当用户尚未输入文本时输入框底部的暗文本 + enumerated_value "control_locked"<"none", "pregame", "ingame"> : opt + } + } + array "legacy_module_dependencies" : opt // 等价于`0`格式版本下的依赖 + { + object "<any array element>" + { + string "uuid" : opt + string "version" : opt + } + } + array "subpacks" : opt + { + object "<any array element>" + { + string "folder_name" + string "name" + int "memory_tier" : opt // 默认为`0` + } + } + array "capabilities" : opt + { + enumerated_value "<any array element>"<"chemistry", "raytraced", "script_eval"> + } + bool "has_education_metadata" : opt // 默认为`0` +}
\ No newline at end of file diff --git a/tests/examplefiles/mcschema/manifest.mcschema.output b/tests/examplefiles/mcschema/manifest.mcschema.output new file mode 100644 index 00000000..cf7b09e4 --- /dev/null +++ b/tests/examplefiles/mcschema/manifest.mcschema.output @@ -0,0 +1,1158 @@ +'manifest' Literal.String.Symbol +':' Operator +'2' Literal.Number.Integer +':' Operator +'\n' Text.Whitespace + +'object' Keyword.Declaration +'\n' Text.Whitespace + +'{' Punctuation +'\n ' Text.Whitespace +'int' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'format_version' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 该文件的格式版本,此处应为`2`' Comment.Single +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'header' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uuid' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'/[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/' Literal.String.Regex +'>' Operator +' ' Text.Whitespace +'// 该包的UUID,当解析内容出错时,引擎会报内容日志错误。当引擎最终使用的该包的UUID为`6989C411-4355-4756-9163-51C1DF5EF677`时,由于该UUID为保留的UUID,这会使该附加包从列表中隐藏' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 当不存在时引擎会报内容日志错误' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'description' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'platform_locked' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// 默认为false' Comment.Single +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'pack_scope' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'global' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'world' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'any' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// 默认为`any`' Comment.Single +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'lock_template_options' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 当该包是世界模板包时是必须字段,当不是世界模板包时有效的该字段值会导致内容日志警告。引擎中实际有三种值:未定义、启用和禁用,该字段不存在或解析出错时为未定义,`true`时为启用,`false`时为禁用' Comment.Single +'\n ' Text.Whitespace +'semver' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'version' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 该语义化版本字段不可为`*`,解析出错时报内容日志错误' Comment.Single +'\n ' Text.Whitespace +'semver' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'min_engine_version' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 当该包是资源包或行为包时是必须字段,当不是资源包且不是行为包时有效的该字段值会导致内容日志警告。该语义化版本字段只支持数组格式,且值必须大于或等于`1.13.0`,否则会报内容日志错误' Comment.Single +'\n ' Text.Whitespace +'semver' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'base_game_version' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 当该包是世界模板包时是必须字段,当不是世界模板包时有效的该字段值会导致内容日志警告。该语义化版本字段无限制,但不得大于当前游戏版本或小于`1.13.0`,否则会报内容日志错误' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'modules' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 若不存在,则会报内容日志错误' Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uuid' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'/[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/' Literal.String.Regex +'>' Operator +' ' Text.Whitespace +'// 该模块的UUID,当解析内容出错时,引擎会报内容日志错误。如果包的UUID和某个模块的UUID重复,会报内容日志警告并以包的UUID的MD5杂凑值为种子通过一定算法生成新的包的UUID' Comment.Single +'\n ' Text.Whitespace +'semver' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'version' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 该语义化版本字段不可为`*`,解析出错时报内容日志错误' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'type' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'invalid' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'resourcepack' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'resources' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'data' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'plugin' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'client_data' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'interface' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'script' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'client_script' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'world_template' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'worldtemplate' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'skin_pack' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'skinpack' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'persona_piece' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +'// `invalid`和其他非法字符串会导致内容日志错误' Comment.Single +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'language' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'javascript' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'entry' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'dependencies' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'module_name' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 依赖的脚本API模块名,与`uuid`至少存在一个' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uuid' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'/[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/' Literal.String.Regex +'>' Operator +' ' Text.Whitespace +'// 依赖的包或模块的UUID,当解析内容出错时,引擎会报内容日志错误。' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'version' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 该语义化版本字段不可为`*`,解析出错时报内容日志错误' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'metadata' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'url' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'license' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'authors' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'generated_with' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any tool name>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'semver' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 该语义化版本字段不可为`*`' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'settings' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any label control>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'type' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'label' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'toggle' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'step_slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'dropdown' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'input' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +'// 控件类型,当前应为`label`' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'text' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 控件显示的文本' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 该控件的名字,用于存值' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any toggle control>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'type' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'label' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'toggle' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'step_slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'dropdown' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'input' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +'// 控件类型,当前应为`toggle`' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'text' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'default' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 默认值' Comment.Single +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'control_locked' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'none' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'pregame' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'ingame' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// 何时锁定该控件' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any slider control>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'type' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'label' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'toggle' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'step_slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'dropdown' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'input' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +'// 控件类型,当前应为`slider`' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'text' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'default' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'min' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'max' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'float' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'step' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// 步长,默认为`1`' Comment.Single +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'control_locked' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'none' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'pregame' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'ingame' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any step slider control>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'type' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'label' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'toggle' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'step_slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'dropdown' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'input' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +'// 控件类型,当前应为`step_slider`' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'text' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'int' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'default' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'0' Literal.Number.Integer +'-' Operator +'*' Operator +'>' Operator +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'steps' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 滑块中每步的文本' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'control_locked' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'none' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'pregame' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'ingame' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any dropdown control>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'type' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'label' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'toggle' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'step_slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'dropdown' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'input' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +'// 控件类型,当前应为`dropdown`' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'text' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'int' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'default' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'0' Literal.Number.Integer +'-' Operator +'*' Operator +'>' Operator +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'options' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'// 下拉菜单中每项的文本' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any text input control>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'type' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'label' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'toggle' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'step_slider' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'dropdown' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'input' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +'// 控件类型,当前应为`input`' Comment.Single +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'text' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'default' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'placeholder' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// 当用户尚未输入文本时输入框底部的暗文本' Comment.Single +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'control_locked' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'none' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'pregame' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'ingame' Literal.String.Double +'"' Literal.String.Double +'>' Operator +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'legacy_module_dependencies' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// 等价于`0`格式版本下的依赖' Comment.Single +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'uuid' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'version' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'subpacks' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'object' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'folder_name' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'string' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +'\n ' Text.Whitespace +'int' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'memory_tier' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// 默认为`0`' Comment.Single +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'array' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'capabilities' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'enumerated_value' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'<any array element>' Literal.String.Double +'"' Literal.String.Double +'<' Operator +'"' Literal.String.Double +'chemistry' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'raytraced' Literal.String.Double +'"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"' Literal.String.Double +'script_eval' Literal.String.Double +'"' Literal.String.Double +'>' Operator +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'bool' Keyword.Declaration +' ' Text.Whitespace +'"' Literal.String.Double +'has_education_metadata' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +':' Operator +' ' Text.Whitespace +'opt' Operator.Word +' ' Text.Whitespace +'// 默认为`0`' Comment.Single +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace |
