From 63b49bbcab11bd883de60c5d3d78442d9c9fc121 Mon Sep 17 00:00:00 2001 From: LiteCat Date: Tue, 17 Jan 2023 14:43:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0V1.0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 9 +- README.md | 15 +- package.json | 6 +- ...211\345\212\250\344\275\234.code-snippets" | 404 +++++++++--------- ...211\345\212\250\344\275\234.code-snippets" | 393 +++++++++++++++++ 5 files changed, 620 insertions(+), 207 deletions(-) create mode 100644 "snippets/questengine\347\247\201\346\234\211\345\212\250\344\275\234.code-snippets" diff --git a/CHANGELOG.md b/CHANGELOG.md index d96364d..0d3d189 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ # 更新日志 - +### v1.0.0 - [+] 所有由 TabooLib 提供的公有动作 + 原生动作的代码补全 -- [+] 更新代码介绍 \ No newline at end of file +- [+] 更新代码介绍 +### V1.0..1 +- [+] 更新questengine提供的私人动作 +- [M] 添加player更多关键词优化体验 +- [M] location 修改补充 +- [M] 规范描述 \ No newline at end of file diff --git a/README.md b/README.md index b602406..bd1e06c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ -![IMG](https://kether.tabooproject.org/assets/img/68747470733a2f2f77696b692e70746d732e696e6b2f696d616765732f362f36392f5461626f6f6c69622d706e672d626c75652d76322e706e67.png) +### ⚠ 注意:使用前请安装YAML扩展!否则无法提示 +>名称: YAML | ID: redhat.vscode-yam | 发布者: Red Hat | VS Marketplace 链接: https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml +### 官方文档:https://kether.tabooproject.org/list.html +![IMG](https://kether.tabooproject.org/assets/img/68747470733a2f2f77696b692e70746d732e696e6b2f696d616765732f362f36392f5461626f6f6c69622d706e672d626c75652d76322e706e67.png) +--- ## 📃特点 --- ### 你只需要记住标题 @@ -20,6 +24,13 @@ --- ### 1.0.0 (2023/1/17 1:48) -编写所有由 TabooLib 提供的公有动作以及原生动作的补全 +- 编写所有由 TabooLib 提供的公有动作以及原生动作的补全 + +### 1.0.1 (2023/1/17 14:36) + +- 优化 player 补充体验 +- location 输入优化 +- 规范描述信息:(XX私人动作)····描述 +- 更新questengine提供的私人动作 diff --git a/package.json b/package.json index 728a7a0..06f778a 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "displayName": "Kether-snippet", "description": "Kether动作补全", "publisher": "LiteCat", - "version": "0.0.1", + "version": "1.0.1", "engines": { "vscode": "^1.73.0" }, @@ -19,6 +19,10 @@ { "language": "yaml", "path": "./snippets/TabooLib公有动作.code-snippets" + }, + { + "language": "yaml", + "path": "./snippets/questengine私有动作.code-snippets" } ] } diff --git "a/snippets/TabooLib\345\205\254\346\234\211\345\212\250\344\275\234.code-snippets" "b/snippets/TabooLib\345\205\254\346\234\211\345\212\250\344\275\234.code-snippets" index 9b8688e..50f2cf6 100644 --- "a/snippets/TabooLib\345\205\254\346\234\211\345\212\250\344\275\234.code-snippets" +++ "b/snippets/TabooLib\345\205\254\346\234\211\345\212\250\344\275\234.code-snippets" @@ -1,974 +1,974 @@ //由 TabooLib 提供的公有动作 { "获取或设置玩家的额外生命": { - "prefix": "absorption", - "description": "player absorption amount [(add|to) {action}]", + "prefix": ["absorption","player absorption amount"], + "description": "(公有动作)player absorption amount [(add|to) {action}]", "body": [ "player absorption amount $1", ] }, "将动作的返回值作为动作栏信息发送给执行者。": { "prefix": "actionbar", - "description": "actionbar {action}", + "description": "(公有动作)actionbar {action}", "body": [ "actionbar \"$1\"", ] }, "判断动作列表的所有返回值是否均为是。": { - "prefix": "all", - "description": "all {action list}", + "prefix": "alll", + "description": "(公有动作)all {action list}", "body": [ "all [ $1 ]", ] }, "获取玩家的 IP 地址": { - "prefix": "address", - "description": "player address", + "prefix": ["address","player address"], + "description": "(公有动作)player address", "body": [ "player address", ] }, "判断或修改玩家是否允许飞行": { - "prefix": "allow flight", - "description": "player allow flight [to {action}]", + "prefix": ["allow flight","player allow flight"], + "description": "(公有动作)player allow flight [to {action}]", "body": [ "player allow flight $1", ] }, "判断动作列表的所有返回值是否含有是。": { "prefix": "any", - "description": "any {action list}", + "description": "(公有动作)any {action list}", "body": [ "any [ $1 ]", ] }, "将动作列表的所有返回值作为集合返回。": { "prefix": "array", - "description": "array {action list}", + "description": "(公有动作)array {action list}", "body": [ "array [ $1 ]", ] }, "在不受生命周期控制的异步计划中执行动作。\n当程序运行结束后,所有未完成的 #Async 动作会被直接关闭。": { "prefix": "async", - "description": "async {action}", + "description": "(公有动作)async {action}", "body": [ "async { sleep 1s $1 } $2", ] }, "获取玩家的攻击冷却。": { - "prefix": "attack cooldown", - "description": "player attack cooldown", + "prefix": ["attack cooldown","player attack cooldown"], + "description": "(公有动作)player attack cooldown", "body": [ "player attack cooldown", ] }, "等待动作完成。": { "prefix": "await", - "description": "await {action}", + "description": "(公有动作)await {action}", "body": [ "await $1", ] }, "等待动作列表中的所有动作完成。": { "prefix": "await all", - "description": "await_all {action list}", + "description": "(公有动作)await_all {action list}", "body": [ "await_all [ $1 sleep 1s ] $2", ] }, "等待动作列表中的任意动作完成。": { "prefix": "await any", - "description": "await_any {action list}", + "description": "(公有动作)await_any {action list}", "body": [ "await_any [ $1 sleep 1s ] $2", ] }, "获取或修改玩家的出生点(床),需要对应方块材质为床。": { - "prefix": "Bed Spawn", - "description": "player bed spawn [to {action}]", + "prefix": ["Bed Spawn","player bed spawn"], + "description": "(公有动作)player bed spawn [to {action}]", "body": [ "player bed spawn", ] }, "获取玩家出生点(床)的坐标轴。(x)": { - "prefix": "Bed Spawn x", - "description": "actionbar {action}", + "prefix": ["Bed Spawn x","player bed spawn x"], + "description": "(公有动作)actionbar {action}", "body": [ "player bed spawn x", ] }, "获取玩家出生点(床)的坐标轴。(y)": { - "prefix": "Bed Spawn y", - "description": "actionbar {action}", + "prefix": ["Bed Spawn y","player bed spawn y"], + "description": "(公有动作)actionbar {action}", "body": [ "player bed spawn y", ] }, "获取玩家出生点(床)的坐标轴。(z)": { - "prefix": "Bed Spawn z", - "description": "actionbar {action}", + "prefix": ["Bed Spawn z","player bed spawn z"], + "description": "(公有动作)actionbar {action}", "body": [ "player bed spawn z", ] }, "判断玩家是否在格挡状态。": { - "prefix": "Blocking", - "description": "player blocking", + "prefix": ["Blocking","player blocking"], + "description": "(公有动作)player blocking", "body": [ "player blocking", ] }, "该方法用于在特定循环语句 (ForEach, Join, Map, While) 中使用,结束循环体。": { "prefix": "Break", - "description": "break", + "description": "(公有动作)break", "body": [ "break", ] }, "在 Shell 模式下该语句无任何意义。\n调用已声明的任何函数,包括 main 函数。": { "prefix": "Call", - "description": "call {token}", + "description": "(公有动作)call {token}", "body": [ "call $1", ] }, "完整的选择语句需要包含至少一项选择分支, 也就是 when block。\n每个标准的选择分支由 when {条件} -> {表达式} 组成。\n也可使用 else {表达} 作为默认分支。": { "prefix": "case", - "description": "case {aciton} [ {when block} ... ]", + "description": "(公有动作)case {aciton} [ {when block} ... ]", "body": [ "case &$1 [when $2 -> $3 when $4 -> $5 else $6 ]", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(==)": { "prefix": "Check == (相等)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 == $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(is)": { "prefix": "Check is (相等)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 is $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(!=)": { "prefix": "Check != (不相等)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 != $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(not)": { "prefix": "Check not (不相等)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 not $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(=!)": { "prefix": "Check =! (相似等于)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 != $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(is?)": { "prefix": "Check is? (相似等于)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 is? $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(>)": { "prefix": "Check > (大于)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 > $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(gt)": { "prefix": "Check gt (大于)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 gt $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(>=)": { "prefix": "Check >= (大于等于)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 >= $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(<)": { "prefix": "Check < (小于)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 < $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(lt)": { "prefix": "Check lt (小于)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 lt $2 then $3 else $4", ] }, "将两个动作的返回值进行对比,支持多种判定方式。(<=)": { "prefix": "Check <= (小于等于)", - "description": "check {action} {symbol} {action}", + "description": "(公有动作)check {action} {symbol} {action}", "body": [ "check $1 <= $2 then $3 else $4", ] }, "将动作的返回值作为命令执行,默认以玩家为执行者。": { "prefix": "Command", - "description": "command {action} [as (console|player|op)]", + "description": "(公有动作)command {action} [as (console|player|op)]", "body": [ "command \"$1\"", ] }, "替换动作的返回值中所有颜色代码。\n支持由 TabooLib 提供的高级颜色代码。": { "prefix": "ColorText", - "description": "color[ed] {action}", + "description": "(公有动作)color[ed] {action}", "body": [ "color", ] }, "获取或修改玩家的指南针目标。": { - "prefix": "Compass Target", - "description": "player compass target [to {action}]", + "prefix": ["Compass Target","player compass target"], + "description": "(公有动作)player compass target [to {action}]", "body": [ "player compass target", ] }, "获取玩家指南针目标的坐标轴。(x)": { - "prefix": "Compass X", - "description": "player compass (x|y|z)", + "prefix": ["Compass X","player compass x"], + "description": "(公有动作)player compass (x|y|z)", "body": [ "player compass x", ] }, "获取玩家指南针目标的坐标轴。(y)": { - "prefix": "Compass Y", - "description": "player compass (x|y|z)", + "prefix": ["Compass Y","player compass y"], + "description": "(公有动作)player compass (x|y|z)", "body": [ "player compass y", ] }, "获取玩家指南针目标的坐标轴。(z)": { - "prefix": "Compass Z", - "description": "player compass (x|y|z)", + "prefix": ["Compass Z","plplayer compass zayer"], + "description": "(公有动作)player compass (x|y|z)", "body": [ "player compass z", ] }, "(用于查看可交谈对象的测试积极参与对话。返回:如果对话正在进行,则为 True)Tests to see of a Conversable object is actively engaged in a conversation.\nReturns:\nTrue if a conversation is in progress": { - "prefix": "Conversing", - "description": "player conversing", + "prefix": ["Conversing","player conversing"], + "description": "(公有动作)player conversing", "body": [ "player conversing", ] }, "本年、本月、本周中的天数。年:(1 ~ 365)": { "prefix": "Date year (本年天数)", - "description": "day of (year|month|week)", + "description": "(公有动作)day of (year|month|week)", "body": [ "day in year", ] }, "本年、本月、本周中的天数。月:(1 ~ 31)": { "prefix": "Date month (本月天数)", - "description": "day of (year|month|week)", + "description": "(公有动作)day of (year|month|week)", "body": [ "day in month", ] }, "本年、本月、本周中的天数。周:(1 ~ 7)": { "prefix": "Date week (本周天数)", - "description": "day of (year|month|week)", + "description": "(公有动作)day of (year|month|week)", "body": [ "day in week", ] }, "当前小时(0 ~ 23)。": { "prefix": "Date hour (当前小时)", - "description": "hour[s]", + "description": "(公有动作)hour[s]", "body": [ "hour", ] }, "当前分钟(0 ~ 59)。": { "prefix": "Date minute (当前分钟)", - "description": "minute[s]", + "description": "(公有动作)minute[s]", "body": [ "minute", ] }, "当前月份(1 ~ 12)。": { "prefix": "Date month (当前月)", - "description": "playerblocking", + "description": "(公有动作)playerblocking", "body": [ "month", ] }, "当前秒(0 ~ 59)。": { "prefix": "Date second (当前秒)", - "description": "second[s]", + "description": "(公有动作)second[s]", "body": [ "second", ] }, "当前年份(MIN_YEAR ~ MAX_YEAR)。": { "prefix": "Date year (当前年)", - "description": "year[s]", + "description": "(公有动作)year[s]", "body": [ "year", ] }, "判断玩家是否死亡。": { - "prefix": "dead", - "description": "player dead", + "prefix": ["dead","player dead"], + "description": "(公有动作)player dead", "body": [ "player dead", ] }, "将动作的返回值作为列表获取指定元素。": { "prefix": "Element", - "description": "element {action} of {action}", + "description": "(公有动作)element {action} of {action}", "body": [ "element $1 of $2", ] }, "获取或修改玩家的疲劳度。": { - "prefix": "Exhaustion", - "description": "player exhaustion [(add|to) {action}]", + "prefix": ["Exhaustion","player exhaustion"], + "description": "(公有动作)player exhaustion [(add|to) {action}]", "body": [ "player exhaustion", ] }, "退出程序。": { "prefix": "Exit", - "description": "exit (success|pause|cooldown)", + "description": "(公有动作)exit (success|pause|cooldown)", "body": [ "exit success", ] }, "获取或修改玩家的经验相关数据,只有 player exp 允许修改。": { - "prefix": "Exp", - "description": "player exp [until next level|at level|to level] [(add|to) {action}]", + "prefix": ["Exp","player exp"], + "description": "(公有动作)player exp [until next level|at level|to level] [(add|to) {action}]", "body": [ "player exp", ] }, "返回玩家的首次游戏时间。": { - "prefix": "First Played", - "description": "player first played", + "prefix": ["First Played","player first played"], + "description": "(公有动作)player first played", "body": [ "player first played", ] }, "获取或修改玩家的飞行速度。": { - "prefix": "SpeedFly(飞行)", - "description": "player fly speed [(add|to) {action}]", + "prefix": ["SpeedFly(飞行)","player fly speed"], + "description": "(公有动作)player fly speed [(add|to) {action}]", "body": [ "player fly speed", ] }, "获取或修改玩家的移动速度。": { - "prefix": "Speedwalk(移动)", - "description": "player walk speed [(add|to) {action}]", + "prefix": ["Speedwalk(移动)","player walk speed"], + "description": "(公有动作)player walk speed [(add|to) {action}]", "body": [ "player walk speed", ] }, "判断或修改玩家是否在飞行状态。": { - "prefix": "Flying", - "description": "player flying [to {action}]", + "prefix": ["Flying","player flying"], + "description": "(公有动作)player flying [to {action}]", "body": [ "player flying", ] }, "获取或修改玩家的饥饿值": { - "prefix": "Food Level", - "description": "player food level [(add|to) {action}]", + "prefix": ["Food Level","player food level"], + "description": "(公有动作)player food level [(add|to) {action}]", "body": [ "player food level", ] }, "遍历第一个动作的返回值中所有成员,并作为临时变量传入第二个动作。": { "prefix": "ForEach", - "description": "for {token} in {action} then {action}", + "description": "(公有动作)for {token} in {action} then {action}", "body": [ "for $1 in $2 then $3", ] }, "使用特定的方式格式化特定的时间。": { "prefix": "Format Time", - "description": "format {action} (by|with) {token}", + "description": "(公有动作)format {action} (by|with) {token}", "body": [ "format time with \"yyyy-MM-dd HH:mm\"", ] }, "获取或修改玩家的游戏模式。": { - "prefix": "GameMode", - "description": "可用模式:\t生存:SURVIVAL, 0\n创造:CREATIVE, 1\n冒险:ADVENTURE, 2\n观察:SPECTATOR, 3\nplayer gamemode [to {action}]", + "prefix": ["GameMode","player gamemode"], + "description": "(公有动作)可用模式:\t生存:SURVIVAL, 0\n创造:CREATIVE, 1\n冒险:ADVENTURE, 2\n观察:SPECTATOR, 3\nplayer gamemode [to {action}]", "body": [ "player gamemode", ] }, "判断或修改玩家是否在滑翔状态。": { - "prefix": "Gliding", - "description": "player gliding [to {action}]", + "prefix": ["Gliding","player gliding"], + "description": "(公有动作)player gliding [to {action}]", "body": [ "player gliding", ] }, "判断或修改玩家是否在发光状态。": { - "prefix": "Glowing", - "description": "player glowing [to {action}]", + "prefix": ["Glowing","player glowing"], + "description": "(公有动作)player glowing [to {action}]", "body": [ "player glowing", ] }, "在 Shell 模式下该语句无任何意义。\n跳转到已声明的任何函数,包括 main 函数。": { "prefix": "Goto", - "description": "goto {token}", + "description": "(公有动作)goto {token}", "body": [ "goto ", ] }, "判断或修改玩家是否拥有重力。": { - "prefix": "Gravity", - "description": "player gravity [(add|to) {action}]", + "prefix": ["Gravity","player gravity"], + "description": "(公有动作)player gravity [(add|to) {action}]", "body": [ "player gravity", ] }, "获取或修改玩家的生命。": { - "prefix": "Health", - "description": "player [ max ]health [(add|to) {action}]", + "prefix": ["Health","player health"], + "description": "(公有动作)player [ max ]health [(add|to) {action}]", "body": [ "player health", ] }, "获取或修改玩家的最大生命。": { - "prefix": "MaxHealth", - "description": "player maxhealth [(add|to) {action}]", + "prefix": ["MaxHealth","player maxhealth"], + "description": "(公有动作)player maxhealth [(add|to) {action}]", "body": [ "player maxhealth", ] }, "当一个动作的返回值为是时,执行第二个动作,反之执行第三个动作。": { "prefix": "If & Else", - "description": "If {action} then {action} [else {action}]", + "description": "(公有动作)If {action} then {action} [else {action}]", "body": [ "if $1 then $2 else $3", ] }, "替换动作的返回值中所有内联脚本。内联脚本指在字符串中使用 {{ ... }} 插入脚本代码。": { "prefix": "Inline", - "description": "inline {action} | function {action}", + "description": "(公有动作)inline {action} | function {action}", "body": [ "inline", ] }, "判断玩家是否在载具中。": { - "prefix": "Inside Vehicle", - "description": "player inside vehicle", + "prefix": ["Inside Vehicle","player inside vehicle"], + "description": "(公有动作)player inside vehicle", "body": [ "player inside vehicle", ] }, "运行 JavaScript 代码,并返回结果。": { "prefix": "JavaScript", - "description": "并传入当前程序的所有变量,以及事件 (event)、执行者 (sender)、服务器 (server)。", + "description": "(公有动作)并传入当前程序的所有变量,以及事件 (event)、执行者 (sender)、服务器 (server)。", "body": [ "javascript ", ] }, "将动作列表的所有返回值合并为字符串返回,默认使用空格作为分隔。": { "prefix": "Join", - "description": "join {action list} [by {token}]", + "description": "(公有动作)join {action list} [by {token}]", "body": [ "join [ $1 ]", ] }, "判断或修改玩家是否在跳跃状态。 ": { - "prefix": "Jumping", - "description": "player jumping [to {action}]", + "prefix": ["Jumping","player jumping"], + "description": "(公有动作)player jumping [to {action}]", "body": [ "player jumping", ] }, "返回玩家的最后游戏、登陆时间": { - "prefix": "Last Played", - "description": "player last (played|login)", + "prefix": ["Last Played","player last login"], + "description": "(公有动作)player last (played|login)", "body": [ "player last login", ] }, "(返回实体当前是否被束缚。)Returns whether the entity is currently leashed.": { - "prefix": "Leashed", - "description": "player leashed", + "prefix": ["Leashed","player leashed"], + "description": "(公有动作)player leashed", "body": [ "player leashed", ] }, "获取或修改玩家的等级。": { - "prefix": "Level", - "description": "player level [(add|to) {action}]", + "prefix": ["Level","player level"], + "description": "(公有动作)player level [(add|to) {action}]", "body": [ "player level", ] }, "创建并返回一个字符串。当字符串中存在空格时需将内容写在双引号或单引号中,若内容中不含空格则允许省略引号": { "prefix": "Literal", - "description": "注意:即使是 literal 100 也并非整数类型,如有需要请使用 #Type 动作。literal {token} | {token}", + "description": "(公有动作)注意:即使是 literal 100 也并非整数类型,如有需要请使用 #Type 动作。literal {token} | {token}", "body": [ "", ] }, "获取玩家的客户端语言。": { - "prefix": "Locale", - "description": "player locale", + "prefix": ["Locale","player locale"], + "description": "(公有动作)player locale", "body": [ "player locale", ] }, "构建一个坐标": { "prefix": "Location", - "description": "location {action} {action} {action} {action} [and {action} {action}]", + "description": "(公有动作)location {action} {action} {action} {action} [and {action} {action}]", "body": [ - "location world 0 0 0", + "location ${1:world} ${2:0} ${3:0} ${4:0}", ] }, "获取或修改玩家的角度。": { - "prefix": "Location Angle", - "description": "player (yaw|pitch) [(add|to) {action}]", + "prefix": ["Location Angle","player yaw"], + "description": "(公有动作)player (yaw|pitch) [(add|to) {action}]", "body": [ "player yaw", ] }, "(X)获取玩家的坐标轴。使用 block 则返回整数(方块)坐标。": { - "prefix": "Location X", - "description": "player [block ](x|y|z)", + "prefix": ["Location X","player x"], + "description": "(公有动作)player [block ](x|y|z)", "body": [ "player x", ] }, "(Y)获取玩家的坐标轴。使用 block 则返回整数(方块)坐标。": { - "prefix": "Location Y", - "description": "player [ block ](x|y|z)", + "prefix": ["Location Y","player y"], + "description": "(公有动作)player [ block ](x|y|z)", "body": [ "player y", ] }, "(Z)获取玩家的坐标轴。使用 block 则返回整数(方块)坐标。": { - "prefix": "Location Z", - "description": "player [block ](x|y|z)", + "prefix": ["Location Z","player z"], + "description": "(公有动作)player [block ](x|y|z)", "body": [ "player z", ] }, "(X)获取玩家的坐标轴返回整数(方块)坐标。": { - "prefix": "LocationBlock X", - "description": "player block (x|y|z)", + "prefix": ["LocationBlock X","player block x"], + "description": "(公有动作)player block (x|y|z)", "body": [ "player block x", ] }, "(Y)获取玩家的坐标轴返回整数(方块)坐标。": { - "prefix": "LocationBlock Y", - "description": "player block (x|y|z)", + "prefix": ["LocationBlock Y","player block y"], + "description": "(公有动作)player block (x|y|z)", "body": [ "player block y", ] }, "(Z)获取玩家的坐标轴返回整数(方块)坐标。": { - "prefix": "LocationBlock Z", - "description": "player block (x|y|z)", + "prefix": ["LocationBlock Z","player block z"], + "description": "(公有动作)player block (x|y|z)", "body": [ "player block z", ] }, "遍历第一个动作的返回值中所有成员,并作为临时变量传入第二个动作。最终将所有第二个动作的返回值作为集合返回。与 #ForEach 动作不同的是,#Map 则会整理每一次非空的处理结果。": { "prefix": "Map", - "description": "map {token} in {action} with {action}", + "description": "(公有动作)map {token} in {action} with {action}", "body": [ "map $1 in $2 with $3", ] }, "使用数学运算符处理动作列表的所有返回值。(加)": { "prefix": "Math(加)", - "description": "math {symbol} {action list}", + "description": "(公有动作)math {symbol} {action list}", "body": [ "math add [ $1 ]", ] }, "使用数学运算符处理动作列表的所有返回值。(减)": { "prefix": "Math(减)", - "description": "math {symbol} {action list}", + "description": "(公有动作)math {symbol} {action list}", "body": [ "math sub [ $1 ]", ] }, "使用数学运算符处理动作列表的所有返回值。(乘)": { "prefix": "Math(乘)", - "description": "math {symbol} {action list}", + "description": "(公有动作)math {symbol} {action list}", "body": [ "math mul [ $1 ]", ] }, "使用数学运算符处理动作列表的所有返回值。(除)": { "prefix": "Math(除)", - "description": "math {symbol} {action list}", + "description": "(公有动作)math {symbol} {action list}", "body": [ "math div [ $1 ]", ] }, "获取玩家的列表名称。": { - "prefix": "NameList", - "description": "player [(display|list) ] name", + "prefix": ["NameList","player list name"], + "description": "(公有动作)player [(display|list) ] name", "body": [ "player list name", ] }, "获取玩家的展示名称。": { - "prefix": "NameDisplay", - "description": "player [(display|list) ] name", + "prefix": ["NameDisplay","player display name"], + "description": "(公有动作)player [(display|list) ] name", "body": [ "player display name", ] }, "获取玩家的游戏名称": { - "prefix": "name", - "description": "player [(display|list) ] name", + "prefix": ["name","player name"], + "description": "(公有动作)player [(display|list) ] name", "body": [ "player name", ] }, "获取或修改玩家的无敌时间。": { - "prefix": "No Damage Ticks", - "description": "player no damage ticks [(add|to) {action}]", + "prefix": ["No Damage Ticks","player no damage ticks"], + "description": "(公有动作)player no damage ticks [(add|to) {action}]", "body": [ "player no damage ticks", ] }, "判断动作的返回值是否为否,即否定动作的结果。": { "prefix": "Not", - "description": "not {action}", + "description": "(公有动作)not {action}", "body": [ "not $1", ] }, "返回一个空值。": { "prefix": "Null", - "description": "null", + "description": "(公有动作)null", "body": [ "null", ] }, "判断玩家是否在地面上,该数据由客户端返回,可能会被篡改。": { - "prefix": "On Ground", - "description": "player on ground", + "prefix": ["On Ground","player on ground"], + "description": "(公有动作)player on ground", "body": [ "player on ground", ] }, "判断或修改玩家是否为 OP 权限。": { - "prefix": "Op", - "description": "player op [to {action}]", + "prefix": ["Op","player op"], + "description": "(公有动作)player op [to {action}]", "body": [ "player op", ] }, "对动作的返回值进行非空判断。": { "prefix": "Optional", - "description": "optional {action} else {action}", + "description": "(公有动作)optional {action} else {action}", "body": [ "optional $1 else $2", ] }, "返回一个空字符串。": { "prefix": "Pass", - "description": "pass", + "description": "(公有动作)pass", "body": [ "pass", ] }, "使程序的生命周期强制暂停,该操作不可被撤销,直到程序关闭。": { "prefix": "Pause", - "description": "pause", + "description": "(公有动作)pause", "body": [ "pause", ] }, "将动作的返回值作为权限判断执行者是否持有该权限。": { "prefix": "Permission", - "description": "perm[ission] {action}", + "description": "(公有动作)perm[ission] {action}", "body": [ "perm $1", ] }, "替换动作的返回值中所有 PlaceholderAPI 变量。": { "prefix": "PlaceholderAPI", - "description": "papi {action} | placeholder {action}", + "description": "(公有动作)papi {action} | placeholder {action}", "body": [ "papi \"%$1%\"", ] }, "将动作的返回值作为信息发送给控制台。": { "prefix": "Print", - "description": "print {action} | log {action}", + "description": "(公有动作)print {action} | log {action}", "body": [ "print \"$1\"", ] }, "在一定的范围内随机返回一个浮点数或整数,相比于 #random,这个范围由动作的返回值表示。": { "prefix": "Random2", - "description": "random2 {MIN} to {MAX}", + "description": "(公有动作)random2 {MIN} to {MAX}", "body": [ "random2 $1 to $2", ] }, "(A to B)在一定的范围内随机返回一个浮点数,或从动作的返回值中随机返回一个成员。在定义范围时可以省略第二个参数来选定 0 ~ 范围。": { "prefix": "Random", - "description": "random {double} [to {double}] | random {action}", + "description": "(公有动作)random {double} [to {double}] | random {action}", "body": [ "random $1 to $2", ] }, "([ 1 2 3 ])在一定的范围内随机返回一个浮点数,或从动作的返回值中随机返回一个成员。在定义范围时可以省略第二个参数来选定 0 ~ 范围。": { "prefix": "Random", - "description": "random {double} [to {double}] | random {action}", + "description": "(公有动作)random {double} [to {double}] | random {action}", "body": [ "random [ $1 ]", ] }, "创建一组数字集合,当你省略步长或使用整型作为步长时,则创建的是整型集合,反之创建浮点数集合。集合的类型取决于步长的类型,而不是范围数字类型。": { "prefix": "Range", - "description": "plarange {number} to {number} [step {number}]", + "description": "(公有动作)plarange {number} to {number} [step {number}]", "body": [ "range $1 to $2", ] }, "获取或修改玩家的氧气。": { - "prefix": "Remaining Air", - "description": "player remaining air [(add|to) {action}]", + "prefix": ["Remaining Air","player remaining air"], + "description": "(公有动作)player remaining air [(add|to) {action}]", "body": [ "player remaining air", ] }, "重复一个动作数次。": { "prefix": "Repeat", - "description": "repeat {int} {action}", + "description": "(公有动作)repeat {int} {action}", "body": [ "repeat $1 $2", ] }, "判断玩家是否在激流(三叉戟)状态。": { - "prefix": "Riptiding", - "description": "player riptiding", + "prefix": ["Riptiding","player riptiding"], + "description": "(公有动作)player riptiding", "body": [ "player riptiding", ] }, "将动作的返回值作为浮点数并四舍五入为最接近的整数。": { "prefix": "Round", - "description": "round {action}", + "description": "(公有动作)round {action}", "body": [ "round $1", ] }, "获取或修改玩家的饱食度。": { - "prefix": "Saturation", - "description": "player saturation [(add|to) {action}]", + "prefix": ["Saturation","player saturation"], + "description": "(公有动作)player saturation [(add|to) {action}]", "body": [ "player saturation", ] }, "将动作的返回值作为浮点数并保留小数点后两位。": { "prefix": "Scaled", - "description": "scale[d] {action}", + "description": "(公有动作)scale[d] {action}", "body": [ "scale $1", ] }, "将动作的返回值作为列表获取其长度。": { "prefix": "Size", - "description": "size {action}", + "description": "(公有动作)size {action}", "body": [ "size range $1 to $2", ] }, "堵塞工作线程特定时间段。": { "prefix": "Sleep", - "description": "(sleep|delay|wait) {duration}", + "description": "(公有动作)(sleep|delay|wait) {duration}", "body": [ "sleep $1", ] }, "返回玩家是否处于睡眠状态。设置是否忽略玩家作为不睡眠。如果每个人都在睡觉或设置了这个标志,那么时间将提前到第二天。如果每个人都设置了这个旗帜,但实际上没有人在床上,那么什么都不会发生。": { - "prefix": "Sleep Ignored", - "description": "player sleep ignored [to {action}]", + "prefix": ["Sleep Ignored","player sleep ignored"], + "description": "(公有动作)player sleep ignored [to {action}]", "body": [ "player sleep ignored", ] }, "返回玩家的睡眠时间。": { - "prefix": "Sleep Ticks", - "description": "player sleep ticks", + "prefix": ["Sleep Ticks","player sleep ticks"], + "description": "(公有动作)player sleep ticks", "body": [ "player sleep ticks", ] }, "判断玩家是否在潜行状态。": { - "prefix": "Sneaking", - "description": "player sneaking", + "prefix": ["Sneaking","player sneaking"], + "description": "(公有动作)player sneaking", "body": [ "player sneaking", ] }, "将文本作为音效播放,默认音量与音调均为 1.0。使用 \"resource:\" 作为前缀则播放资源包中的音效。": { "prefix": "Sound", - "description": "sound {token} [by {double} {double}]", + "description": "(公有动作)sound {token} [by {double} {double}]", "body": [ "sound $1", ] }, "对动作的返回值作为字符串切片并返回。": { "prefix": "Split", - "description": "split {action} [with {token}]", + "description": "(公有动作)split {action} [with {token}]", "body": [ "split \"$1\" with \"$1\"", ] }, "判断玩家是否在疾跑状态。": { - "prefix": "Sprinting", - "description": "player sprinting", + "prefix": ["Sprinting","player sprinting"], + "description": "(公有动作)player sprinting", "body": [ "player sprinting", ] }, "将动作的返回值作为副标题信息发送给执行者,默认的淡入淡出、停留、时间为0、20、0。": { "prefix": "Subtitle", - "description": "subtitle {action} [by {int} {int} {int}]", + "description": "(公有动作)subtitle {action} [by {int} {int} {int}]", "body": [ "subtitle \"$1\" by ${2:0} ${3:20} ${4:0}", ] }, "判断或修改玩家是否在游泳状态。": { - "prefix": "Swimming", - "description": "player swimming [(add|to) {action}]", + "prefix": ["Swimming","player swimming"], + "description": "(公有动作)player swimming [(add|to) {action}]", "body": [ "player swimming", ] }, "切换当前观察者到特定玩家。": { "prefix": "Switch", - "description": "switch {action}", + "description": "(公有动作)switch {action}", "body": [ "switch $1", ] }, "将动作的返回值作为信息发送给执行者。": { "prefix": "Tell", - "description": "tell {action} | send {action} | message {action}", + "description": "(公有动作)tell {action} | send {action} | message {action}", "body": [ "tell \"$1\"", ] }, "使用特定的方式格式化当前系统时间。": { "prefix": "Time Format", - "description": "time as {token} | date as {token}", + "description": "(公有动作)time as {token} | date as {token}", "body": [ "date as \"yyyy-MM-dd HH:mm:ss\"", ] }, "将动作的返回值作为标题信息发送给执行者,默认的淡入淡出、停留、时间为0、20、0。": { "prefix": "Title", - "description": "title {action} [subtitle {action}] [by {int} {int} {int}]", + "description": "(公有动作)title {action} [subtitle {action}] [by {int} {int} {int}]", "body": [ "title \"$1\"", ] }, "将动作的返回值作为成就信息发送给执行者。支持列表作为动作的返回值。(※需要服务端版本高于 1.13)": { "prefix": "Toast", - "description": "toast {material} {action} [(by|with) (task|goal|challenge)]", + "description": "(公有动作)toast {material} {action} [(by|with) (task|goal|challenge)]", "body": [ "toast $1 \"$2\" by ${3:challenge}", ] }, "创建并返回一个最接近的字符串、整型、长整型、浮点数 或 布尔值。当字符串中存在空格时需将内容写在双引号或单引号中,若内容中不含空格则允许省略引号。或使用指定类型进行格式化(以动作作为参数):int, long, float, double, boolean": { "prefix": "Type", - "description": "type {token} | type {type} {action}", + "description": "(公有动作)type {token} | type {type} {action}", "body": [ "type $1", ] }, "获取变量。": { "prefix": "get", - "description": "get {token}", + "description": "(公有动作)get {token}", "body": [ "get $1", ] }, "获取变量。(&)": { "prefix": "&", - "description": "&{token}", + "description": "(公有动作)&{token}", "body": [ "&$1", ] }, "将变量设置为基本类型或一个动作的返回值。": { "prefix": "Set", - "description": "set {token} {token}", + "description": "(公有动作)set {token} {token}", "body": [ "set $1 $2", ] }, "将变量设置为基本类型或一个动作的返回值": { "prefix": "Set", - "description": "set {token} to {action}", + "description": "(公有动作)set {token} to {action}", "body": [ "set $1 to $2", ] }, "将所有变量的节点合并字符串列表返回。": { "prefix": "Variables", - "description": "vars | variables", + "description": "(公有动作)vars | variables", "body": [ "vars", ] }, "将动作的返回值作为警告发送给控制台。": { "prefix": "Warning", - "description": "warn[ing] {action}", + "description": "(公有动作)warn[ing] {action}", "body": [ "warning \"$1\"", ] }, "当一个动作的返回值为是时,重复第二个动作直到第一个动作的的返回值为否。": { "prefix": "While", - "description": "while {action} then {action}", + "description": "(公有动作)while {action} then {action}", "body": [ "while $1 then $2", ] }, "判断或修改玩家是否在白名单中。": { - "prefix": "Whitelist", - "description": "player whitelist [to {action}]", + "prefix": ["Whitelist","player whitelist"], + "description": "(公有动作)player whitelist [to {action}]", "body": [ "player whitelist", ] }, "获取玩家的当前所在世界名称。": { - "prefix": "World", - "description": "player world", + "prefix": ["World","player world"], + "description": "(公有动作)player world", "body": [ "player world", ] @@ -981,28 +981,28 @@ }, "改变为假": { "prefix": "to false", - "description": "to false", + "description": "(公有动作)to false", "body": [ "to false", ] }, "作为控制台": { "prefix": "as console", - "description": "as (console|player|op)", + "description": "(公有动作)as (console|player|op)", "body": [ "as console", ] }, "作为玩家": { "prefix": "as player", - "description": "as (console|player|op)", + "description": "(公有动作)as (console|player|op)", "body": [ "as player", ] }, "作为OP": { "prefix": "as op", - "description": "as (console|player|op)", + "description": "(公有动作)as (console|player|op)", "body": [ "as op", ] diff --git "a/snippets/questengine\347\247\201\346\234\211\345\212\250\344\275\234.code-snippets" "b/snippets/questengine\347\247\201\346\234\211\345\212\250\344\275\234.code-snippets" new file mode 100644 index 0000000..881ce5c --- /dev/null +++ "b/snippets/questengine\347\247\201\346\234\211\345\212\250\344\275\234.code-snippets" @@ -0,0 +1,393 @@ +{ + "(小时)延迟运行时间,等待时间后运行下一个语句": { + "prefix": [ + "waitTime 小时", + ], + "description": "(QE私人动作)waitTime [数字][时间单位]", + "body": [ + "waitTime $1h", + ] + }, + "(分钟)延迟运行时间,等待时间后运行下一个语句": { + "prefix": [ + "waitTime 分钟", + ], + "description": "(QE私人动作)waitTime [数字][时间单位]", + "body": [ + "waitTime $1m", + ] + }, + "(秒)延迟运行时间,等待时间后运行下一个语句": { + "prefix": [ + "waitTime 秒", + ], + "description": "(QE私人动作)waitTime [数字][时间单位]", + "body": [ + "waitTime $1s", + ] + }, + "添加标签": { + "prefix": [ + "tags add", + ], + "description": "(QE私人动作)tags add [标签]", + "body": [ + "tags add ", + ] + }, + "删除标签": { + "prefix": [ + "tags remove", + ], + "description": "(QE私人动作)tags remove [标签]", + "body": [ + "tags remove ", + ] + }, + "是否有某标签": { + "prefix": [ + "tags has", + ], + "description": "(QE私人动作)tags has [标签]", + "body": [ + "tags has ", + ] + }, + "获得数据": { + "prefix": [ + "storage get", + ], + "description": "(QE私人动作)storage [id] get", + "body": [ + "storage $1 get", + ] + }, + "设置数据": { + "prefix": [ + "storage set", + ], + "description": "(QE私人动作)storage [id] set [action]", + "body": [ + "storage $1 set $2", + ] + }, + "删除数据": { + "prefix": [ + "storage remove", + ], + "description": "(QE私人动作)storage [id] remove", + "body": [ + "storage $1 remove", + ] + }, + "选择任务": { + "prefix": [ + "quest select", + ], + "description": "(QE私人动作)quest select [任务编号]", + "body": [ + "quest select $1", + ] + }, + "接受任务": { + "prefix": [ + "quest accept", + ], + "description": "(QE私人动作)quest accept", + "body": [ + "quest select $1 quest accept", + ] + }, + "放弃任务": { + "prefix": [ + "quest quit", + ], + "description": "(QE私人动作)quest quit", + "body": [ + "quest select $1 quest quit", + ] + }, + "完成任务": { + "prefix": [ + "quest finish", + ], + "description": "(QE私人动作)quest finish", + "body": [ + "quest select $1 quest finish", + ] + }, + "获取任务名称": { + "prefix": [ + "quest name", + ], + "description": "(QE私人动作)quest name", + "body": [ + "quest select $1 quest name", + ] + }, + "获取任务状,返回枚举(DOING)": { + "prefix": [ + "quest state", + ], + "description": "(QE私人动作)quest state", + "body": [ + "quest select $1 quest state", + ] + }, + "获取任务状,返回语言内容(正在进行中)": { + "prefix": [ + "quest state lang", + ], + "description": "(QE私人动作)quest state lang", + "body": [ + "quest select $1 quest state lang", + ] + }, + "获取任务剩余时间": { + "prefix": [ + "quest limitTime", + ], + "description": "(QE私人动作)quest limitTime", + "body": [ + "quest select $1 quest limitTime", + ] + }, + "选择目标": { + "prefix": [ + "target select", + ], + "description": "(QE私人动作)target select [目标编号]", + "body": [ + "quest select $1 target select $2", + ] + }, + "获取目标进度": { + "prefix": [ + "target schedule", + ], + "description": "(QE私人动作)target schedule", + "body": [ + "quest select $1 target select $2 target schedule", + ] + }, + "获取目标状态, 返回枚举": { + "prefix": [ + "target state", + ], + "description": "(QE私人动作)target state", + "body": [ + "quest select $1 target select $2 target state", + ] + }, + "获取目标状态, 返回语言内容": { + "prefix": [ + "target state lang", + ], + "description": "(QE私人动作)target state lang", + "body": [ + "quest select $1 target select $2 target state lang", + ] + }, + "选择对话": { + "prefix": [ + "dialog select", + ], + "description": "(QE私人动作)dialog select [对话编号]", + "body": [ + "dialog select $1", + ] + }, + "发送对话": { + "prefix": [ + "dialog send", + ], + "description": "(QE私人动作)dialog send", + "body": [ + "dialog select $1 dialog send", + ] + }, + "发送对话(位置)": { + "prefix": [ + "dialog send where", + ], + "description": "(QE私人动作)dialog send where [location]", + "body": [ + "dialog select $1 dialog send where ${2:world} ${3:0} ${4:0} ${5:0}", + ] + }, + "检查玩家是否有特定物品": { + "prefix": [ + "itemCheck inv", + ], + "description": "(QE私人动作)itemCheck inv [类型] \"选择 内容\"", + "body": [ + "itemCheck inv ${1|all, mainHand|} \"${2|MINECRAFT -material displayName- \"\" -loreContains -customModelData -amount,MMOITEMS -id|}\"", + ] + }, + "检查玩家是否有特定物品并拿走": { + "prefix": [ + "itemCheck take", + ], + "description": "(QE私人动作)itemCheck take \"选择 内容\"", + "body": [ + "itemCheck take \"${2|MINECRAFT -material displayName- \"\" -loreContains -customModelData -amount,MMOITEMS -id|}\"", + ] + }, + "对话空间范围,应用于对话模块空间范围 dialogID.space.condition": { + "prefix": [ + "spaceRange", + ], + "description": "(QE私人动作)spaceRange [长] [高] [宽]n", + "body": [ + "spaceRange ${1:长} ${2:高} ${3:宽}", + ] + }, + "空间范围,应用于条件检查,比如任务要求达到目的地": { + "prefix": [ + "spaceRange where", + ], + "description": "(QE私人动作)spaceRange [长] [高] [宽] where [location]", + "body": [ + "spaceRange ${1:长} ${2:高} ${3:宽} where ${4:world} ${5:0} ${6:0} ${7:0}", + ] + }, + "开动态门": { + "prefix": [ + "doors open", + ], + "description": "(QE私人动作)doors to [ID] open", + "body": [ + "doors to $1 open", + ] + }, + "关动态门": { + "prefix": [ + "doors close", + ], + "description": "(QE私人动作)doors to [ID] close", + "body": [ + "doors to $1 close", + ] + }, + "情景放映": { + "prefix": [ + "tutorial start", + ], + "description": "(QE私人动作)tutorial start [id]", + "body": [ + "tutorial start $1", + ] + }, + "选择导航": { + "prefix": [ + "nav select", + ], + "description": "(QE私人动作)nav select [导航编号]", + "body": [ + "nav select $1", + ] + }, + "为玩家创建导航": { + "prefix": [ + "nav create", + ], + "description": "(QE私人动作)nav create target [location]", + "body": [ + "nav create target location ${1:world} ${2:0} ${3:0} ${4:0}", + ] + }, + "播放导航(绿色粒子)": { + "prefix": [ + "nav set start", + ], + "description": "(QE私人动作)nav set start", + "body": [ + "nav select $1 nav set start", + ] + }, + "播放导航(指定粒子)": { + "prefix": [ + "nav set start display", + ], + "description": "(QE私人动作)nav set start display [粒子类型]", + "body": [ + "nav select $1 nav set start display $1", + ] + }, + // nav select gotortchillback + // nav create target location world 236 74 222 + // nav set start display TOTEM + // nav set stop + "停止导航": { + "prefix": [ + "nav set stop", + ], + "description": "(QE私人动作)nav set stop", + "body": [ + "nav select $1 nav set stop", + ] + }, + "清除导航数据": { + "prefix": [ + "nav set clear", + ], + "description": "(QE私人动作)nav set clear", + "body": [ + "nav select $1 nav set clear", + ] + }, + "隐藏或显示玩家": { + "prefix": [ + "hide player set", + ], + "description": "(QE私人动作)hide player set [true或false]", + "body": [ + "hide player set ${1|true,false|}", + ] + }, + "WorldGuard判断位置是否在该区域": { + "prefix": [ + "worldguard", + ], + "description": "(QE私人动作)worldguard [location] id [区域ID]", + "body": [ + "worldguard ${1:world} ${2:0} ${3:0} ${4:0} id $5", + ] + }, + "给玩家附加药水效果": { + "prefix": [ + "actionEffect select", + ], + "description": "(QE私人动作)actionEffect select [药水] time [时间,20等于1秒]", + "body": [ + "actionEffect select ${1:药水|} time ${2:时间,20等于1秒|}", + ] + }, + "创建光照": { + "prefix": [ + "light create", + ], + "description": "(QE私人动作)light create level [光照等级] where [location]", + "body": [ + "light create level ${1:光照等级} where ${2:world} ${3:0} ${4:0} ${5:0}", + ] + }, + "删除光照": { + "prefix": [ + "light delete", + ], + "description": "(QE私人动作)light delete where [location]", + "body": [ + "light delete where ${1:world} ${2:0} ${3:0} ${4:0}", + ] + }, + "传送玩家": { + "prefix": [ + "player location to", + ], + "description": "(QE私人动作)player location to [location]", + "body": [ + "player location to ${1:world} ${2:0} ${3:0} ${4:0}", + ] + }, +} \ No newline at end of file