命令

**命令（Command），**也被称作**控制台命令（Console Command）**或**斜杠命令（Slash Command）**，是通过输入特定文本字符串而激活的高级功能。

## 使用方法

在客户端中，命令通过Minecraft的聊天窗口输入，通过按下`T`键、[仅基岩版和教育版]、[仅基岩版]（默认）或`/`键唤出聊天窗口。使用`/`键会同时输入命令**必需**的前缀斜杠（/），因此这是个实用的快捷键。`↑`和`↓`键可浏览之前输入的文本，包含所有之前执行的命令。在输入命令时按下`Tab ↹`键会循环显示当前可用的命令或参数，也可以快速输入准星当前指向方块的坐标（在Java版输入实体参数时，如果准星指向某个实体，则可以直接输入其UUID）。当光标在某些参数（比如一个ID）的对应位置时，在文本框上方会展示一个可用值的列表。如果这个参数已经输入了一半，这个列表则只会展示包含当前输入内容的值。

在命令方块中，命令**可以**以前缀斜杠开头，但不是必须的。在命令方块中的命令通常还需要一个可选参数，如玩家名称。

命令也可以在多人服务器的控制台中输入，但是**不**应加入前缀`/`。在英语中，以这种方式执行命令的服务器管理员被称为“ghosting”。

大多数命令只能在以下状况有效：

* 在Minecraft多人游戏服务器游戏中，由管理员或命令方块使用。
* 在其他的多人模式游戏中，由开启局域网并允许作弊的玩家，或主持多人游戏服务器的玩家使用。
* 在单人模式中，创建世界时开启作弊（由“更多世界选项…”按钮）。

权限等级为`0`的命令所有玩家均可用。详见权限等级。

**注意：**在Java版中，在单人游戏中，如果不允许作弊，仍可以通过公开目前的游戏至局域网（`Esc`→“对局域网开放”，点选“允许作弊”为开，接着“创建局域网世界”）而暂时可以作弊。你不必实际连入局域网或等待别人加入。这并不是永久的，但直至退出世界前都可以使用命令，且命令做出的修改都会被保存（物品、生物生成等）。你可以在再次开启游戏时重复以上步骤。注意对局域网开放时游戏便无法暂停，所以在公开到局域网时若有需要最好找个安全的地方。你可以重新载入世界来取消对局域网开放。

在基岩版中，作弊可以随时使用设置菜单中的选项切换。开启作弊会导致玩家在那个世界永远无法获得成就，即使后来作弊被关闭。

### 坐标

主条目：坐标

命令中的坐标可以用三个绝对坐标（`X Y Z`）组成的一组坐标来表示。也可以使用波浪号（`~`）来指定相对坐标和使用脱字符（`^`）来指定局部坐标。

### 目标选择器

主条目：目标选择器

目标选择器是命令中使用得最频繁的参数之一，允许规范地，自由地选择将要参与命令的实体。目标选择器也在原始JSON文本中使用。

目标选择器分为两个部分，分别为变量和参数。

* 变量是目标选择器必要的成分，可以大致地指定要选择的实体（例如：所有实体、距离最近的玩家、与NPC交互的玩家等）。
* 参数是可选的，负责修饰变量，可以对变量选中的实体进行进一步的过滤。参数中有许多子参数供玩家使用（例如：type、name、scores等）。

### NBT标签

主条目：NBT格式

**NBT标签**是一种树状数据结构，可以被用花括号包含的键值对（即**SNBT**）描述。SNBT用于Java版的命令中，用于指定玩家、实体和一些方块的较为复杂的数据。

SNBT由零个或多个用逗号分隔的键值对组成，且本身用大括号括住。每个键值对包含键名和键值，用冒号分开。但是，有些键值可以继续包含键值对，因此SNBT可以用来描述层次结构。

*例：* `{name1:123,name2:"sometext",name3:{subname1:456,subname2:789}}`
这些NBT标签所采用的数据结构与Minecraft世界存档相同。这种数据结构在其他条目中有详细描述。NBT标签中键名有严格的限定（区分大小写）：

数据结构规范链接
 物品
 物品实体
 生物
 弹射物
 交通工具
 动态方块
 其他实体

指定键名的键值也必须符合数据类型要求。

某些命令要求明确指明某些数值的数据类型，这可以通过在数值后附加限定字符（B、S、L、F、D）来实现。举例来说，`3s`表示短整型，`3.2f`表示单精度浮点，等等。（字符I不能限定整型。）限定字符不区分大小写。在不加限定字符，且Minecraft无法根据上下文来确定数据类型或需要比对NBT标签时，会将数据类型假定为双精度浮点型（数值有小数部分时）、整型（数值没有小数点，且在整型取值范围内）或字符串（若前述情况均不符合）。被方括号包含的集合中，被逗号分隔的元素若全为整型，则会将数据类型假定为整型数组（如`[I;1,2,3]`是一个整型数组，`[L;1L,2L,3L]`是一个长整型数组）；否则会假定为列表。但有以下特例：`[]`是一个空列表，而`[,]`是一个空整型数组。

如果用`/clear`等命令来查找NBT标签，这些命令只会检查目标实体/方块/物品是否存在此标签。这意味着一个符合条件的实体/方块/物品可能同时还拥有其他标签。这对列表和数组同样成立：只要列表或数组中包含待查找的所有元素，就会成功匹配，既不考虑元素的排列顺序，也不考虑是否有多余的元素存在。

### 原始JSON文本

主条目：原始JSON文本格式

在Java版中，`/tellraw`和`/title`命令使用严格的JSON语法以显示文字。此外，部分NBT标签的值需要输入原始JSON文本。

在基岩版中，原始JSON文本可以作用于`/tellraw`的内容、`/titleraw`的标题、书与笔的文本（题目和作者除外）、告示牌的文本以及NPC的对话的编辑（操作员在编辑时，效果不可见）。

### Java版中的ID参数

参见：命名空间ID§从字符串识别

许多命令要求指定某种方块、物品、实体、药水效果、附魔、boss栏等的ID。在下文的命令语法中，这些参数会被标注为`<*方块*>`、`<*物品*>`，或在实例中用诸如`minecraft:stone`之类的标识符替换。这些ID都有命名空间。所有来自Minecraft的内容都使用`minecraft`命名空间，而来自mod及数据包的内容都使用其他命名空间。 在大多数情况下，可以省略命名空间为`minecraft`的ID的前缀，但是在某些情况下，例如匹配NBT标签时，需要完整的命名空间ID。

#### `<*方块*>`

例子：

* `stone`
* `minecraft:redstone_wire[power=15,north=up,south=side]`
* `minecraft:jukebox{RecordItem:{...}}`
* `minecraft:furnace[facing=north]{BurnTime:200}`

`<*方块*>`参数的格式为`*命名空间ID*[*方块状态*]{*NBT标签*}`，其中方块状态和NBT标签在不需要时可以省略。

* 方块的命名空间ID是必需的（如果没有设定命名空间则将默认为预设值：`minecraft:`）。
* 方块状态是可选的，位于`[]`内，名称与值用等号分隔，名称数值组用逗号分隔，且必须是该方块支持的状态：
`[<*方块状态名称*>=<*值*>,<*方块状态名称*>=<*值*>,…]`
	+ `minecraft:stone[doesntexist=purpleberry]`有语法错误，因为`stone`（石头）没有`doesntexist`状态。
	+ `minecraft:redstone_wire[power=tuesday]`有语法错误，因为`redstone_wire`（红石线）的`power`是一个在0和15之间的数字。
* NBT标签是可选的，位于`{}`内。
* 如果方块参数被用于检查方块，则只会检查参数内指定了的方块状态与NBT标签是否符合。
* 如果方块参数用于放置方块，你所提供的任何状态与标签都会被设置，而其他未提供的状态与标签会被设为预设值
	+ 如当你设置`redstone_wire[power=15]`，那它将设置`power`到15却使`north`设为预设值（在这个情况下被设置为`none`）

如果方块参数被用于检查方块，则也可以填写带`#`前缀的方块标签的命名空间ID，如`#minecraft:planks`。

#### `<*物品*>`

例子：

* `stone`
* `minecraft:stick{display:{Name:"\"谎言之杖\""}}`

`<*物品*>`参数的格式为`*命名空间ID*{*NBT标签*}`，其中NBT标签在不需要时可以省略。

* 物品的命名空间ID是必需的（如果没有设定命名空间则将设为预设值`minecraft:`）。
* NBT标签位于`{}`，是可选的。

### 权限等级

**权限等级**用于控制命令执行者可以执行什么命令。比如在Java版中，`/kick`不能在命令方块中执行，因为这个命令需要`3`的权限等级，而命令方块的权限等级仅为`2`。

在Java版中，权限等级可为`0`，`1`，`2`，`3`或`4`。

* 命令方块或命令方块矿车的权限等级为`2`。
* 服务器控制台的权限等级为`4`。
* 函数的权限等级为`2`（可在server.properties中更改）。
* `/execute`执行子命令的权限等级为`2`。
* 对于玩家来说：
	+ 如果该玩家是服务器的管理员，那么他的权限等级由`ops.json`中的值决定（默认为`4`）。
	+ 如果该玩家已经启用作弊，并在单人游戏世界中或是局域网世界的所有者，那么他的权限等级为`4`。
	+ 如果该玩家在一个允许作弊的局域网世界中，那么他的权限等级为`4`。
	+ 否则，他的权限等级为`0`。

在基岩版中，权限等级可为`0`，`1`，`2`，`3`或`4`。

* 命令方块或命令方块矿车的权限等级为`1`。
* 服务器控制台的权限等级为`4`。
* 函数和附加包中的脚本的权限等级为`1`。
* `/execute`执行子命令的权限等级为`1`[需要验证]。
* 对于玩家来说：
	+ 如果该玩家在服务器中，且该玩家在“玩家权限”屏幕中的“操作员命令”开关已打开，那么他的权限等级默认为`1`（可在server.properties中更改）。
	+ 如果该玩家在单人游戏世界或局域网世界中，且该玩家在“玩家权限”屏幕中的“操作员命令”开关已打开，那么他的权限等级默认为`3`。
	+ 否则，他的权限等级为`0`。[需要测试]

注：命令的权限等级与暂停菜单和“玩家权限”屏幕中的身份（访客，成员，操作员或自定义）不同。例如在单人游戏世界中，身份为操作员的玩家的权限等级为`3`，因为其对应的“操作员命令”开关已打开；身份为访客或成员的玩家的权限等级为`0`，因为其对应的“操作员命令”开关没有打开。[仅基岩版]

## 命令列表及其概述

下表列出了所有可用命令，包括即将到来的命令。点击表头可以排序。

点击每一行第一格中的链接可以查看命令的具体用法。