命令(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。
-{}-<方块>
例子:
stoneminecraft: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,因为其对应的“操作员命令”开关没有打开。
我的世界中文站 国内知名Minecraft中文主题网站
