命令(Command),也被称作控制台命令(Console Command)或斜杠命令(Slash Command),是通过输入特定文本字符串而激活的高级功能。
使用方法
在Java版中选取实体的UUID
在客户端中,命令通过Minecraft的聊天窗口输入,通过按下T键、
[仅基岩版](默认)或/键唤出聊天窗口。使用/键会同时输入命令必需的前缀斜杠(/),因此是个实用的快捷键。↑和↓键可浏览之前输入的文本,包含所有之前执行的命令。在输入命令时按下Tab ↹键会循环显示当前可用的命令或参数,也可以快速输入准星当前指向方块的坐标(在Java版输入实体参数时,如果准星指向某个实体,则可以直接输入其UUID)。当光标在某些参数(比如一个ID)的对应位置时,在文本框上方会展示一个可用值的列表。如果这个参数已经输入了一半,这个列表则只会展示包含当前输入内容的值。
在命令方块中,命令可以不以前缀斜杠开头。在命令方块中的命令通常还需要一个可选参数,如玩家名称。
命令也可以在多人服务器的控制台中输入,但是不应加入前缀/。在英语中,以这种方式执行命令的服务器管理员被称为“ghosting”。
命令可通过以下方式执行:
- 玩家直接通过聊天框输入命令。
- 通过命令方块或者命令方块矿车。
- 在专用服务器中,通过控制台键入命令。
- 在函数中,作为数据包[仅JE]或行为包[仅BE]的一部分。
- 在基岩版中,在行为包的脚本中。
- 在基岩版中,在行为包的动画控制器中。
- 在基岩版中,在行为包的方块事件响应中。
- 在基岩版中,在行为包的实体事件响应中。
- 在Java版中,点击具有
"run_command"
行为的JSON文本。 - 在基岩版中,由连接到客户端的WebSocket服务器请求执行。
- 在基岩版中,通过NPC对话框执行。
命令指引
参见:命令术语列表
语法表示
每条命令都由若干以空格隔开的片段组成。以下格式用以辅助表示命令语法中各片段的含义。关于某条命令的具体语法,请点击命令列表中的链接。
在Java版中,
输入项 | 含义 |
---|---|
字面量 |
按原样输入的内容。 |
<参数> |
需使用一合适的值来替换的参数。 |
修饰符 | 含义 |
---|---|
[输入项] |
该输入项是可选的。 |
(输入项|输入项) |
必选,选择其中一个输入项填写。 |
[输入项|输入项] |
可选,选择其中一个输入项填写。 |
省略号 ... |
在游戏中表示需后接一个完整的命令。 在此wiki中表示省略了一些必选的部分。 |
例如,[<size>]
是可选的参数,而[size]
是可选的字面量。
以advancement (grant|revoke) <targets> only <advancement> [<criterion>]
为例,其中advancement
和only
是需要原样输入的字面量,(grant|revoke)
是需要从grant
和revoke
中选择一个输入的字面量,<targets>
和<advancement>
是必需的以合适值替换的参数,[<criterion>]
是可选的以合适值替换的参数。
在基岩版中,
输入项 | 含义 |
---|---|
字面量 |
按原样输入的内容。 |
名称:类型 |
需要使用一合适的值来替换的参数。 |
字面量|字面量 |
选择其中一个字面量填写。 |
修饰符 | 含义 |
---|---|
<输入项> |
该输入项是必选的。 |
[输入项] |
该输入项是可选的。 |
省略号 ... |
在此wiki中表示省略了一些必选的部分。 |
其中尖括号修饰符(<输入项>
)一般不修饰字面量
,必选的字面量不需添加修饰符。
例如,set
和<set>
都表示必选的字面量,但后者不会在游戏中出现。而<size: int>
是必选的参数。
在Java版和基岩版中,方括号都表示可选。被方括号修饰的输入项只能位于命令末尾,不会出现在命令中间。命令结尾允许并列出现多个方括号,如位于命令结尾的a [b] [c]
表示只有a
、a b
和a b c
三者是合法的。
限制条件
大部分命令要求执行上下文要有足够的权限等级,这就意味着大部分命令在单人游戏中只有在开启作弊的情况下才能被使用,并且在多人游戏服务器中需要玩家是管理员时才能使用。详见权限等级。
一些命令对当前的游戏和世界有限制。
- 无:无限制条件。
- 启用作弊[仅BE]:仅适用于基岩版。当由服务器或脚本执行时,无论是否启用作弊,该命令都可用。(控制台、计划执行的函数、tick.json中的函数或与专用服务器连接的WebSocket服务器请求执行的命令,都由服务器执行)。当以其他方式执行时,该命令仅在启用作弊时才可用。禁用作弊后,除非由服务器或脚本执行,否则即使执行者具有较高的权限等级也无法使用这些命令。
- 在Java版中,只要有足够高的权限等级,无论作弊是否开启,玩家都可以使用相应的命令。
- 仅专用服务器:此命令只能在专用服务器中执行。
- 仅单人游戏:此命令不能在专用服务器中执行。
作弊
创建新的世界时,可以通过“Template:Tp”[仅Java版]或“无敌模式[原文如此]”[仅基岩版]选项启用作弊。
在Java版中,创建新的世界时的“Template:Tp”选项仅影响离线单人世界的玩家或局域网世界的所有者。Template:Tp时的“Template:Tp”选项会影响局域网世界中的所有玩家。
在Java版中,当前的离线单人游戏如果未开启作弊,可以通过公开目前的游戏至局域网(Esc→“Template:Tp”,点选“Template:Tp”为开,接着“Template:Tp”)而暂时可以作弊。你不必实际连入局域网或等待别人加入。这并不是永久的,但直至退出世界前都可以使用命令,且命令做出的修改都会被保存(物品、生物生成等)。你可以在再次开启游戏时重复以上步骤。注意对局域网开放后游戏便无法暂停,所以在公开到局域网时若有需要,最好在你的世界中找个安全的地方。你可以重新载入世界来取消对局域网开放。若要永久开启作弊,必须修改level.dat文件。
在基岩版中,作弊可以随时使用设置菜单中的选项切换。开启作弊会导致玩家在该世界永远无法获得成就,即使后来再关闭作弊也一样。
结果
尝试执行命令后会产生不同的效结果,包括无法解析、执行失败、执行成功、[仅Java版]。
无法解析
若当前游戏、世界或执行上下文不满足命令的限制条件,或输入的命令不完整,或存在无法解析的参数,该命令就无法解析。
如果一个参数无法解析,在本wiki中描述为该参数“未正确指定”。
在Java版中,当向聊天栏输入参数时,若一个参数无法解析,则会向玩家发出提示。
在Java版中,若参数无法解析,参数将被标记为红色,聊天栏上方会显示语法错误信息。
在基岩版中,当在聊天栏输入命令时,若某一个参数无法被客户端解析,则语法提示中的下一个参数将从灰色变为白色。如果所有的参数(包括可选参数)都被输入,那么整个语法提示都将从灰色变为白色。然而,能被客户端解析,并不能保证此参数能被服务端解析。
在Java版中,在命令方块中输入命令与在聊天栏中输入时的行为相同。
在基岩版中,当在一个命令方块中输入命令后,若命令无法解析,在关闭命令方块界面时,会把一个错误信息输出到命令方块的输出框中。
当尝试执行一个无法解析的命令时,将显示错误信息。
在Java版中,提示信息为“Template:Tp”或“Template:Tp”。
在基岩版中,为“未知的命令”或“语法错误:意外的“错误”:出现在“错误所在位置”。
若在函数文件中存在无法解析的命令,此函数将无法被加载到游戏中。
在基岩版中,如果脚本中存在无法解析的命令,则在尝试运行该命令时会抛出错误。
执行错误[仅JE]
如果一个命令执行错误,则意味着该命令存在显著的漏洞。
从技术上来说,该命令在执行时抛出了除brigadier.exceptions.CommandSyntaxException以外的异常。
Void[仅JE]
仅存在于/function
命令。命令Void时,没有result
或success
值可供/execute store
命令存储。
执行中断[仅JE]
仅存在于/execute
命令。即在执行一个/execute
命令的过程中,执行分支数量变成了0,在执行末尾的子命令前就已经停止,称为执行中断。
比如在命令方块中执行/execute as @s run ...
。
执行失败和执行成功
如果命令不是无法解析、执行错误、Void或执行中断,则该命令的结果可分为执行失败或执行成功。如果此时该命令的成功次数为0,则命令执行失败。否则,命令执行成功。
命令的成功次数,可以由红石比较器从命令方块接收,[仅基岩版]。
在Java版中,如果该命令无法被命令方块执行,则当/execute store success ... run ...
储存0
时命令失败,当/execute store success ... run ...
储存1
时命令成功。
在基岩版中,即使该命令无法被命令方块或脚本执行,它依旧存在成功次数,只不过无法获取。
请注意,只有在命令不是无法解析、执行错误、Void或执行中断时,才存在执行失败和执行成功。尽管当无法解析、执行错误、Void或执行中断时,命令的成功次数为0,但它不会被视为执行失败,也不是执行成功。
请注意,并非所有的“执行成功”的命令都会使世界有所改变,“执行失败”的命令也不意味着命令什么也没有做。
坐标
主条目:坐标
命令中的坐标可以用三个绝对坐标(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标签中键名有严格的限定(区分大小写):
对象 | 例子 |
---|---|
方块 | 箱子、熔炉、命令方块、刷怪蛋、告示牌等 |
物品 | 物品栏中的物品 (包括附魔、自定义名称等) |
物品实体 | 在地上的物品 |
生物 | 苦力怕、牛、村民等 |
弹射物 | 箭、火球、喷溅药水等 |
交通工具 | 船、矿车等 |
动态方块 | 引燃的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之间。 例: |
字符串(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文本
主条目:原始JSON文本格式
在Java版中,/tellraw
和/title
命令使用严格的JSON语法以显示文字。此外,部分NBT标签的值需要输入原始JSON文本。
在基岩版中,原始JSON文本可以作用于/tellraw
的内容、/titleraw
的标题、书与笔的文本(题目和作者除外)、告示牌的文本以及NPC的对话的编辑(操作员在编辑时,效果不可见)。
参数类型列表
主条目:参数类型
权限等级
权限等级用于控制命令执行者可以执行什么命令。比如在Java版中,/kick
不能在命令方块中执行,因为这个命令需要3
的权限等级,而命令方块的权限等级仅为2
。
在Java版中,权限等级可为0
,1
,2
,3
或4
。
在基岩版中,权限等级可为0
,1
,2
,3
或4
。
- 命令方块或命令方块矿车的权限等级为
1
。 - 服务器控制台的权限等级为
4
。 - 开发者控制台的权限等级为
3
[需要验证]。 - 函数和附加包中的脚本的权限等级为
1
。 /execute
执行子命令的权限等级为1
[需要验证]。- 对于玩家来说:
- 如果该玩家在服务器中,且该玩家在“玩家权限”屏幕中的“操作员命令”开关已关闭,那么他的权限等级默认为
1
(可在server.properties中更改)。 - 如果该玩家在单人游戏世界或局域网世界中,且该玩家在“玩家权限”屏幕中的“操作员命令”开关已打开,那么他的权限等级默认为
3
。 - 否则,该玩家的权限等级为
0
。[需要测试]
- 如果该玩家在服务器中,且该玩家在“玩家权限”屏幕中的“操作员命令”开关已关闭,那么他的权限等级默认为
注:命令的权限等级与暂停菜单和“玩家权限”屏幕中的身份(访客,成员,操作员或自定义)不同。例如在单人游戏世界中,身份为操作员的玩家的权限等级为3
,因为其对应的“操作员命令”开关已打开;身份为访客或成员的玩家的权限等级为0
,因为其对应的“操作员命令”开关没有打开。[仅基岩版]
命令列表及其概述
下表列出了所有可用命令,包括即将到来的命令。点击表头可以排序。
点击每一行第一格中的链接可以查看命令的具体用法。
命令 | 描述 | BE | EDU | JE | JE权限等级 | BE及EDU权限等级 | 仅限MP | [隐藏] | |||
---|---|---|---|---|---|---|---|---|---|---|---|
/? |
/help 的替代命令,提供命令使用帮助。 |
是 | 是 | — | — | 0 | — | — | — | — | — |
/ability |
赋予或剥夺玩家的能力。 | 是 | 是 | — | — | 1 | — | — | — | — | |
/advancement |
添加、移除或查询玩家的进度。 | — | — | 是 | 2 | — | — | — | — | — | |
/alwaysday |
/daylock 的替代命令,锁定或解锁日夜循环。 |
是 | 是 | — | — | 1 | — | — | — | — | |
/attribute |
修改或查询玩家和生物的属性。 | — | — | 是 | 2 | — | — | — | — | ||
/ban |
将玩家加入封禁列表。 | — | — | 是 | 3 | — | 是 | — | — | — | |
/ban-ip |
将IP地址加入封禁列表。 | — | — | 是 | 3 | — | 是 | — | — | — | |
/banlist |
显示封禁列表。 | — | — | 是 | 3 | — | 是 | — | — | — | |
/bossbar |
修改或查询Boss栏。 | — | — | 是 | 2 | — | — | — | — | ||
/camera |
切换到自定义相机视角并淡出屏幕。 | 是 | — | — | — | 1 | — | — | — | — | |
/camerashake |
启用镜头抖动效果。 | 是 | 是 | — | — | 1 | — | — | — | — | |
/changesetting |
更改一个正在运行的服务器的设置。 | 是 | — | — | — | 4 | 是 | — | — | — | — |
/clear |
从玩家物品栏中删除物品。 | 是 | 是 | 是 | 2 | 1 | — | — | — | — | |
/clearspawnpoint |
从世界中移除出生点。 | 是 | 是 | — | — | 1 | — | — | — | — | |
/clone |
将特定区域的方块复制到另一处。 | 是 | 是 | 是 | 2 | 1 | — | — | — | — | |
/connect |
/wsserver 的替代命令,连接至一个WebSocket服务器。 |
是 | 是 | — | — | 0[仅EE] | — | — | — | — | — |
2[仅BE] | |||||||||||
/damage |
对指定实体造成伤害。 | 是 | 是 | 是 | 2 | 1 | — | — | — | ||
/data |
允许玩家获取、合并、修改或是移除实体、方块或命令存储的NBT数据。 | — | — | 是 | 2 | — | — | — | |||
/datapack |
控制加载的数据包。 | — | — | 是 | 2 | — | — | — | — | — | |
/daylock |
/alwaysday 的替代命令,锁定或解锁日夜循环。 |
是 | 是 | — | — | 1 | — | — | — | — | |
/debug |
开始或结束刻分析器或对函数进行调试。 | — | — | 是 | 3 | — | — | — | — | — | — |
/dedicatedwsserver |
尝试连接一个WebSocket服务器。 | 是 | — | — | — | 0 | 是 | — | — | — | — |
/defaultgamemode |
更改默认的游戏模式。 | — | — | 是 | 2 |