Skip to content

第一个自定义指令!

现在!我们成功写完了拓展包的信息,接下来我们开始写第一个自定义指令!

首先,我们要了解指令的基本结构

  • commands:自定义指令 格式:指令名:{介绍,……}

这样看肯定是看不懂的,这里给出一个例子:

json
"commands": {
  "hello": { // 命令名称
    "description": "向玩家发送问候消息",
    "patterns": { // 命令的使用模式
      "default": { // 默认模式
        "params": [ // 参数列表(数组)
          // 在这里定义参数
        ]
      }
    }
  }
}

这个hello是自定义指令名

  • description:介绍
  • patterns:一个命令可以有多种使用方式(模式),default 是最常见的一种。
  • params:一个数组,包含该模式下所需的所有参数。。

定义参数

参数是指令都要有的东西,他有很多类型,下面列出了所有类型

参数类型作用示例
selector选择玩家或实体。{"type": "selector", "name": "目标", "target": "player"}
string输入字符串,可带自动补全。{"type": "string", "name": "物品ID", "suggestion": "block"}
int / uint输入整数/无符号整数。{"type": "int", "name": "数量"}
float输入浮点数。{"type": "float", "name": "时间"}
position输入坐标。{"type": "position", "name": "位置"}
enum关键类型,从预定义的下拉菜单中选择。{"type": "enum", "name": "游戏模式", "list": "gamemode"}
plain显示固定文本(非输入)。{"type": "plain", "name": "kill", "prompt": "击杀"}
rawtext / rawjson输入原始文本或JSON文本。{"type": "rawtext", "name": "消息"}

但是,enum,string这些我们暂时还没讲,所以暂时先跳过。

好了,经历了这么多,我们终于可以开始写第一个自定义指令了!

如果你写好了记得在命令助手加载,试试效果!

这里给出一个写好的示例:

json
{
  "name": "MyCommandLib", // 这个是拓展包名字
  "author": "Mark_CA_Exdook", // 这个是作者
  "description": "This is a command library for my game.", // 这个是描述
  "uuid": "12345678-1234-123456789012", // 这个是唯一标识符
  "version": [1,0,0], // 这个是版本号,1,0,0就是1.0.0
  "commands": {
    "hello": {
      "description": "Says hello to the player.", // 对被选择的玩家说个hello
      "patterns": { // 命令的使用模式
        "default": { // 默认模式
          "params": [ // 参数列表(数组)
            {
              "type": "selector", // 选择玩家
              "name": "target", // 目标
              "target": "player" // 目标类型
            }
          ]
        }
      }
    }
  }
}

这个指令的作用是:选择一个玩家,然后给他发个hello。

恭喜你,你已经成功写完了第一个自定义指令!

::: INFO
这个params是一个数组,所以可以有多个参数!
:::

本教程 by 地灯dideng