命令:使用与语法

命令:使用与语法

图片处理:未转载源站游戏图像;具体物品、实体、效果或界面说明以中文文字保留。

关于愚人节快照26w14a中的实体,请见“活化方块命令”。

“

您知道吗?Minecraft 有一套神奇的咒语,使用这些咒语,您便可传送到世界各地,定位生物群系和建筑,生成物品、生物、方块,设置天气和时间等等?

没错,纯粹的魔法!使用“命令”(有时也叫做“斜杠命令”),您可以改变 Minecraft 的游戏体验,从召唤生物到改变世界的天气状况,无所不能。

”

——Duncan Geere[1]

**命令(Command)**是通过输入特定文本字符串使用的高级功能。

使用

在Java版中选取实体的UUID

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

在命令方块中,命令可以以前缀斜杠开头,但不是必须的。

在函数中,命令不能以前缀斜杠开头,否则会报错。

命令也可以在多人服务器的控制台中输入,但是不该加入前缀/。

命令可通过以下方式执行:

命令指引

语法表示

每条命令都由若干以空格隔开的片段组成。以下格式用以辅助表示命令语法中各片段的含义。关于某条命令的具体语法,请点击命令列表中的链接。

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三者是合法的。

限制条件

原创概念图:坐标、实体路径、时间与天气(非游戏画面)

模拟世界状态示意,不是游戏截图。

绝大部分命令要求执行上下文要有足够的权限等级,这就意味着在单人游戏中,大部分命令在启用作弊的情况下可以被使用,并且在多人游戏服务器中需要玩家是管理员时才能使用。详见权限等级。

一些命令对当前的游戏和世界有限制。

  • 无:无限制条件。
  • 启用作弊:仅适用于基岩版。当由服务端或脚本(控制台、计划执行的函数、tick.json中的函数)、命令方块或命令方块矿车执行时,无论是否启用作弊均可执行相应命令。当以其他方式执行时,相应命令仅在存档启用作弊时才可用。禁用作弊后,除非由服务端或脚本、命令方块或命令方块矿车执行,否则即使执行者具有较高的权限等级也无法使用相应命令。
    • 在Java版中,作弊影响玩家的权限等级。权限等级还受其他因素的影响,只要拥有足够高的权限等级,无论此存档是否开启作弊,玩家都可以使用相应命令。
  • 仅专用服务器:此命令只能在专用服务器中执行。
  • 非专用服务器:此命令不能在专用服务器中执行。

作弊

创建新的世界时,可以通过“允许命令”[仅Java版]或“无敌模式”[仅基岩版]选项启用作弊。

在Java版中,创建新的世界时的“允许命令”选项仅影响离线单人世界的玩家或局域网世界的所有者。对局域网开放时的“允许命令”选项会影响局域网世界中的所有玩家。

在Java版中,若当前的离线单人游戏未开启作弊,可通过世界选项来开启作弊,极限模式无法开启。

在基岩版中,若世界不处于极限模式等情况下,作弊便可以使用设置菜单中的选项切换。开启作弊会导致玩家在该世界永远无法获得成就,即使后来再关闭作弊也一样。

参数类型

主条目:参数类型

命令的参数有不同的参数类型。坐标、目标选择器、SNBT、文本组件等是参数中常用的格式。

解析与执行

原创概念图:命令解析与分派流程(非游戏画面)

命令处理流程示意,不代表游戏内界面。

游戏服务端处理命令的过程分为**解析(Parsing)和执行(Execution)**两个阶段。在解析阶段,游戏将字符串识别为某个命令,并检查命令是否完整以及参数被是否正确地指定。在执行阶段,命令发挥其功能。

当玩家在聊天框、命令方块或者命令方块矿车中输入命令时,命令也会先在客户端解析,以提供自动补全并帮助玩家提前发现错误。

  • 当在聊天栏输入参数时,若一个参数无法被客户端解析,则会向玩家发出提示。然而,能被客户端解析,并不能保证此参数能被服务端解析。
    • 在Java版中,若某一个参数无法被客户端解析,该参数及之后的所有部分都将被标记为红色,聊天栏上方会显示语法错误信息。
    • 在基岩版中,若某一个参数无法被客户端解析,则语法提示中的下一个参数将从灰色变为白色。若已输入所有参数(包括可选参数),那么整个语法提示都将从白色变为灰色。
  • 在Java版中,在命令方块中输入命令也有如上的行为。在基岩版中,在命令方块中输入命令只会提供自动补全而无语法提示。
  • 在Java版中,在聊天框输入命令时,若某两个参数之间存在多个空格,行为同上,但会在执行时和命令历史中将其修正为单个空格。

在基岩版中,当在一个命令方块中输入命令,并在关闭命令方块界面后,命令立即在服务端进行解析。若无法解析,会把一个错误信息输出到命令方块的输出框中。

当尝试执行一个无法解析的命令时,游戏将显示错误信息。

  • 在Java版中,提示信息的末尾为“<--[此处]”。
  • 在基岩版中,提示信息为“未知的命令”或“语法错误:意外的“错误”:出现在“错误所在位置””。

函数中的命令会在加载函数时全部解析,如有任一行命令无法解析,则此函数将无法被加载到游戏中。在Java版中,宏行则是在函数尝试运行时再根据提供的参数进行解析,详见Java版函数 § 宏和Java版函数 § 加载与解析。

在基岩版中,如果脚本中存在无法解析的命令,则在尝试执行该命令时会抛出错误。

输出

命令在尝试执行时会产生输出值(Output)。输出值包括成功次数(Success Count)和储存值(Stored Values)[仅Java版]。

成功次数是指命令在命令方块或脚本[仅基岩版]中执行时传出的值。传给命令方块后,成功次数可以由背对命令方块的红石比较器检测(两者可间隔一个红石导体方块),比较器的输入信号强度等于最后一次执行的命令的成功次数。即便命令方块取消激活,成功次数依旧保留,直到再次执行命令,因此比较器能够持续接收同一信号强度的输入。在Java版中,无法在命令方块中执行的命令没有成功次数。在基岩版中,即使该命令无法被命令方块或脚本执行,它依旧存在成功次数,只不过无法获取。在Java版中,命令的成功次数通常是0或1,唯一例外是/execute命令。在基岩版中,成功次数为0到2,147,483,647(含)之间的整数,与所执行的命令有关(例如,被命令所影响的玩家数、改变的方块数等)。

在Java版中,储存值有两个:success值和**result值**,是/execute命令在执行其他命令的过程中,其他命令传给/execute命令的值。这两个值可以由/execute命令中的store子命令储存到指定位置。success值只能为0或1。result则是一个整数(若不是,则会被向下取整)。所有命令在执行后都有这两个储存值,除了两个例外:/execute本身在不包含if或unless子命令时没有这两个储存值;/function命令在特定情况下没有这两个储存值。

结果

尝试执行命令后会产生不同的结果,包括无法解析、执行失败、执行成功、Void、执行中断、执行出错[仅Java版]。

无法解析

在服务端解析命令时,当前游戏、世界或执行上下文不满足命令的限制条件,或输入的命令不完整,或存在无法解析的参数,此命令就无法解析。

执行出错[仅Java版]

若一个命令执行出错,则意味着该命令存在明显的漏洞。此时会输出“试图执行该命令时出现意外错误”,并可能会出现其他的副作用(如崩溃),/execute命令也会被中途打断,导致分支未能全部执行。

从技术上来说,执行出错即该命令在执行时抛出了除brigadier.exceptions.CommandSyntaxException以外的异常。

Void[仅Java版]

仅存在于/function命令。命令没有result值和success值可供/execute store命令存储时,称该命令执行结果为Void(无返回值)。

执行中断[仅Java版]

仅存在于/execute命令。即在执行一个/execute命令的过程中,执行分支数量变成了0,在执行末尾的子命令前就已经停止,称为执行中断。

比如在命令方块中执行/execute as @s run ...,由于命令方块不是实体,无法被目标选择器选中,因此该命令中断于as @s。

执行失败和执行成功

若命令不是无法解析、执行错误、Void或执行中断,则该命令的结果可分为执行失败或执行成功。若此时该命令的成功次数为0,则命令执行失败。否则,命令执行成功。

请注意:

  • 只有在命令不是无法解析、执行错误、Void或执行中断时,才存在执行失败和执行成功。尽管当无法解析、执行出错、Void或执行中断时,命令的成功次数为0,但它不被视为执行失败,也不是执行成功。
  • 并非所有的“执行成功”的命令都会使世界有所改变,“执行失败”的命令也不意味着命令什么也没有做。

参见

参考

  1. ↑ How to use commands in Minecraft — Minecraft.net,2023年9月22日。

来源:英文原文 Commands,修订 3885742(2026-11-06T23:16:53Z)。中文译文参考 命令,修订 1532107(2026-11-07T07:54:44Z)。本页为翻译/改编,按 CC BY-NC-SA 3.0 非商业、相同方式共享。