命令(Command),也被称作控制台命令(Console Command)或斜杠命令(Slash Command),是通过输入特定文本字符串而激活的高级功能。
使用方法
在客户端中,命令通过Minecraft的聊天窗口输入,通过按下T键、
在命令方块中,命令可以以前缀斜杠开头,但不是必须的。在命令方块中的命令通常还需要一个可选参数,如玩家名称。
命令也可以在多人服务器的控制台中输入,但是不应加入前缀/。在英语中,以这种方式执行命令的服务器管理员被称为“ghosting”。
大多数命令只能在以下状况有效:
- 在Minecraft多人游戏服务器游戏中,由管理员或命令方块使用。
- 在其他的多人模式游戏中,由开启局域网并允许作弊的玩家,或主持多人游戏服务器的玩家使用。
- 在单人模式中,创建世界时开启作弊(由“更多世界选项…”按钮)。
权限等级为0
的命令所有玩家均可用。详见权限等级。
注意:在Java版中,在单人游戏中,如果不允许作弊,仍可以通过公开目前的游戏至局域网(Esc→“对局域网开放”,点选“允许作弊”为开,接着“创造一个局域网世界”)而暂时可以作弊。你不必实际连入局域网或等待别人加入。这并不是永久的,但直至退出世界前都可以使用命令,且命令做出的修改都会被保存(物品、生物生成等)。你可以在再次开启游戏时重复以上步骤。注意对局域网开放时游戏便无法暂停,所以在公开到局域网时若有需要最好找个安全的地方。你可以重新载入世界来取消对局域网开放。
在基岩版中,作弊可以随时使用设置菜单中的选项切换。开启作弊会导致玩家在那个世界永远无法获得成就,即使后来作弊被关闭。
坐标
命令中的坐标可以用三个绝对坐标(X Y Z
)组成的一组坐标来表示。也可以使用波浪号(~
)来指定相对坐标和使用脱字符(^
)来指定局部坐标。
目标选择器
目标选择器是命令中使用得最频繁的参数之一,允许规范地,自由地选择将要参与命令的实体。目标选择器也在原始JSON文本中使用。
目标选择器分为两个部分,分别为变量和参数。
- 变量是目标选择器必要的成分,可以大致地指定要选择的实体(例如:所有实体、距离最近的玩家、与NPC交互的玩家等)。
- 参数是可选的,负责修饰变量,可以对变量选中的实体进行进一步的过滤。参数中有许多子参数供玩家使用(例如:type、name、scores等)。
NBT标签
NBT标签是一种树状数据结构,可以被用花括号包含的键值对(即SNBT)描述。SNBT用于Java版的命令中,用于指定玩家、实体和一些方块的较为复杂的数据。
SNBT由零个或多个用逗号分隔的键值对组成,且本身用大括号括住。每个键值对包含键名和键值,用冒号分开。但是,有些键值可以继续包含键值对,因此SNBT可以用来描述层次结构。
- 例:
{name1:123,name2:"sometext",name3:{subname1:456,subname2:789}}
这些NBT标签所采用的数据结构与Minecraft世界存档相同。这种数据结构在其他条目中有详细描述。NBT标签中键名有严格的限定(区分大小写):
对象 | 例子 |
---|---|
方块 | 箱子、熔炉、命令方块、刷怪蛋、告示牌等 |
物品 | 物品栏中的物品 (包括附魔、自定义名称等) |
物品实体 | 在地上的物品 |
生物 | 苦力怕、牛、村民等 |
弹射物 | 箭、火球、喷溅药水等 |
交通工具 | 船、矿车等 |
动态方块 | 引燃的TNT及正在掉落的沙子、沙砾、铁砧等 |
其他实体 | 烟花火箭、画和物品展示框 |
指定键名的键值也必须符合数据类型要求。
类型 | 说明 |
---|---|
字节(byte) | 介于-128和127之间(包含)的整数。 |
短整型(short) | 介于-32768和32767之间(包含)的整数。 |
整型(int) | 介于-2147483648和2147483647之间(包含)的整数。 |
长整型(long) | 介于-9,223,372,036,854,775,808和9,223,372,036,854,775,807之间(包含)的整数。 |
单精度浮点型(float) 双精度浮点型(double) |
Float: 32位单精度浮点数,介于-3.4E+38和+3.4E+38之间。
Double: 64位双精度浮点数,介于-1.7E+308和+1.7E+308之间。
详见IEEE二进制浮点数算术标准。 |
字符串(string) | 一串字符,如果内容包含不在 a-z A-Z 0-9 _ . (不包括空格)的字符则需要在整个字符串前后加上双引号。\ 可以将后面的字符转义(支持像JSON那样的转义,如\n 和\u00a7 )。转义方式为,在" 及\ 号前加上\ 。
|
列表(list) | 值的序列,用逗号分隔并用方括号包含。所有值的数据类型必须统一——数据类型标准由列表的第一个元素决定。
|
复合标签(compound) | 键值对的序列,用逗号分隔并用花括号包含。
每个NBT标签的内容本身就是一个复合标签。 复合标签里面可以包含任何标签。 |
字节数组(byte-array) | 介于-128和127(包含)之间的整数序列,用逗号分隔内容并用方括号包含,首个元素前方需要加入类型标识B; 。
|
整型数组(int-array) | 介于-2,147,483,648和2,147,483,647(包含)之间的整数序列,用逗号分隔内容并用方括号包含,首个元素前方需要加入类型标识I; 。
|
长整型数组(long-array) | 介于-9,223,372,036,854,775,808和9,223,372,036,854,775,807(包含)之间的整数序列,用逗号分隔内容并用方括号包含,首个元素前方需要加入类型标识L; 。
|
布尔型(boolean) | 一种数据类型,只有“true”和“false”两种取值。由于程序通常使用 字节存储布尔值,布尔型只会在JSON格式中出现。在NBT中,true和false相当于1和0。
|
某些命令要求明确指明某些数值的数据类型,这可以通过在数值后附加限定字符(B、S、L、F、D)来实现。举例来说,3s
表示短整型,3.2f
表示单精度浮点,等等。(字符I不能限定整型。)限定字符不区分大小写。在不加限定字符,且Minecraft无法根据上下文来确定数据类型或需要比对NBT标签时,会将数据类型假定为双精度浮点型(数值有小数部分时)、整型(数值没有小数点,且在整型取值范围内)或字符串(若前述情况均不符合)。被方括号包含的集合中,被逗号分隔的元素若全为整型,则会将数据类型假定为整型数组(如[I;1,2,3]
是一个整型数组,[L;1L,2L,3L]
是一个长整型数组);否则会假定为列表。但有以下特例:[]
是一个空列表,而[,]
是一个空整型数组。
如果用/clear
等命令来查找NBT标签,这些命令只会检查目标实体/方块/物品是否存在此标签。这意味着一个符合条件的实体/方块/物品可能同时还拥有其他标签。这对列表和数组同样成立:只要列表或数组中包含待查找的所有元素,就会成功匹配,既不考虑元素的排列顺序,也不考虑是否有多余的元素存在。
原始JSON文本
在Java版中,/tellraw
和/title
命令使用严格的JSON语法以显示文字。此外,部分NBT标签的值需要输入原始JSON文本。
在基岩版中,原始JSON文本可以作用于/tellraw
的内容、/titleraw
的标题、书与笔的文本(题目和作者除外)、告示牌的文本以及NPC的对话的编辑(操作员在编辑时,效果不可见)。
Java版中的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
,因为其对应的“操作员命令”开关没有打开。