我的世界命令

本文章介绍的是控制台命令。关于可以执行命令的方块,请见“命令方块”。


命令(Command)是通过输入特定文本字符串而激活的高级功能。

使用方法

在Java版中选取实体的UUID。

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

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

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

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

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

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

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

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

 

相对坐标和局部坐标

世界坐标被视作绝对坐标。很多命令可以使用波浪号(~)来指定相对坐标,使用插入符(^)来指定局部坐标(也有人称本地坐标)。在波浪号和插入符后可以跟一个数字,表示相对基准点的偏移量。基准点由命令本身决定。举例来说,常见的基准点包括命令的执行位置和命令指定的其他坐标。局部坐标的基准点默认为是脚部。

相对坐标以世界的绝对坐标为偏移量。局部坐标以执行者的头部为基准点,并在包括头部的倾斜角度下分别指向左、上、前方为坐标轴 x y z 的正方向。无论是哪一个,数字的正负号都表示向坐标轴的正或负方向偏移。一个单独的波浪号~~0的简写,表示没有偏移。同样地,^^0的简写。

举例来说,/tp 0 64 0将会移动使用者到坐标(0, 64, 0),而/tp ~3 ~ ~-3会使使用者往x轴的正方向(东方)移动3米,保持原本高度,并在z轴的负方向(北方)移动3米,而/tp ^ ^ ^3会使使用者往前移动3米。

通常绝对坐标和相对坐标可以混合使用,但局部坐标不可与绝对或相对坐标混合使用。举例来说,/tp ~ 64 ~会保持执行者的x轴和z轴坐标,但是将传送执行者到绝对高度64。/tp ^-5 ^ ^将根据头部的倾斜,将玩家向右传送5个方块的距离。

在基岩版,多个命令参数有时可以不需要空格,如~~~可以代表~ ~ ~~~1~可以代表~ ~1 ~,比如/tp @a ~1 ~2 ~3可以简写为/tp @a ~1~2~3。注意~~1不能代表~ ~ 1,因为~1会被视为一个整体,而1~不会。

目标选择器

大多数以实体或玩家作为参数的命令,可以通过某些限定条件来选择一个或多个实体或玩家,而不必指定实体名、玩家名或UUID。要用条件来选择实体或玩家,应先输入一个目标选择器变量,如有需要,还可再使用一个或多个目标选择器参数以制定具体的条件(可选)。

比如,要把A队所有玩家的游戏模式改为创造模式,但不使用玩家名来逐个指明:

/gamemode creative @a[team=A]‌‌[仅Java版]

再如,把标签为A的玩家的游戏模式改为创造模式,但不使用玩家名来逐个指明:

/gamemode creative @a[tag=A]

请注意,Java版的目标选择器和基岩版有较大的区别,有的语法只适用于Java版,有的语法只适用于基岩版,请注意文中的“仅Java版”和“仅基岩版”标识。

目标选择器变量

目标选择器变量汇总
变量 功能
@p 距离最近的玩家
@r 随机玩家
@a 所有玩家
@e 所有实体
@s 命令的执行者
@c 自己的吉祥物‌‌[仅教育版]
@v 所有吉祥物‌‌[仅教育版]

目标选择器变量用于指定待选目标的大致分类。共有5种变量:

@p
选择最近的玩家。在服务器控制台中输入时,默认基准点为(0, 0, 0)。如果有多个最近的玩家,他们与基准点距离完全相同,那么会选择其中最晚进入服务器的玩家。
目标选择器参数可以进一步筛选待选目标。例如,@p[team=A]‌‌[仅Java版]只会选择A队中距离最近的玩家,即使有其他非A队玩家更为靠近。
c‌‌[仅基岩版]limit‌‌[仅Java版]目标选择器参数可以用来追加待选目标。例如,@p[c=3]‌‌[仅基岩版]@p[limit=3]‌‌[仅Java版]将选择三个最近的玩家。
在基岩版中,若参数c是负值,会反转选择目标的顺序。例如,@p[c=-1]会选择最远的一名玩家。
type参数不适用于@p
@r
选择随机玩家。
目标选择器参数可以进一步筛选待选目标。例如,@r[team=A]‌‌[仅Java版]只会随机选择A队玩家。
c‌‌[仅基岩版]limit‌‌[仅Java版]目标选择器参数可以用来追加待选目标。例如,@r[c=3](特别地,c=-1在此处并不适用)‌‌[仅基岩版]@r[limit=3]‌‌[仅Java版]将随机选择三个玩家。
在基岩版中,如果没有使用type参数,@r只会选择随机玩家。type参数还可以用来选择非玩家的实体。例如,@r[type=zombie]会随机选择一个僵尸@r[type=!player]会随机选择一个非玩家实体。
在Java版中,type参数不适用于@r。要选择随机的实体,请使用@e[sort=random,limit=1]代替。
@a
选择所有玩家,包括已死亡玩家。
目标选择器参数可以进一步筛选待选目标。例如,@a[team=A]‌‌[仅Java版]只会选择A队的所有玩家。
type参数不适用于@a
@e
选择所有实体(包含玩家),但不包含死亡的实体。在Java版中,除@e以外的所有目标选择器都可以选中死亡的玩家。在基岩版中,只有@a@s可以选中死亡的玩家。
目标选择器参数可以进一步筛选待选目标。例如,@e[type=cow]只会选择牛。
@s
只选择唯一一个实体:该命令的执行者,包括已死亡玩家。若命令执行者不是一个实体,比如是命令方块或服务器控制台执行命令,则此选择器不会选中任何东西。
目标选择器参数可用于确定执行者是否会成为目标。例如,@s[type=cow,team=Red]‌‌[仅Java版]只会在命令执行者是红队的一头牛时才会将其选中。
@c
选择自己的吉祥物。‌‌[仅教育版]
目标选择器参数可以用于标记自己的吉祥物。例如,/tp @c 50 60 40会将自己的吉祥物传送到指定的位置。
@v
选择所有的吉祥物。‌‌[仅教育版]
目标选择器参数可以用于标记所有的吉祥物。例如,/remove @v将移除所有的吉祥物。

目标选择器参数

目标选择器参数汇总
通过坐标
参数 选择标准
xyz 坐标
distance‌‌[仅Java版]
rrm‌‌[仅基岩版]
距离
dxdydz 体积尺寸
通过记分板参数
参数 选择标准
scores 记分项分数
tag 记分板标签
team‌‌[仅Java版] 队伍名称
通过其他特性
参数 选择标准
limitsort‌‌[仅Java版]
c‌‌[仅基岩版]
数量
level‌‌[仅Java版]
llm‌‌[仅基岩版]
经验等级
gamemode‌‌[仅Java版]
m‌‌[仅基岩版]
游戏模式
name 实体名称
x_rotation‌‌[仅Java版]
rxrxm‌‌[仅基岩版]
垂直旋转角度
y_rotation‌‌[仅Java版]
ryrym‌‌[仅基岩版]
水平旋转角度
type 实体类型
family‌‌[仅基岩版] 家族
nbt‌‌[仅Java版] 实体的数据标签
advancements‌‌[仅Java版] 进度
predicate‌‌[仅Java版] 谓词

在使用目标选择器之后,你可以使用参数来限定所要选择的群组。当使用@a@e时,待选目标从全体筛选成特定的少数。当使用@p@r时,参数将从完整的待选列表缩小到被筛选后的待选列表。当使用@s时,命令执行者只有在所有参数都满足时才会被选择,否则命令将执行失败。

在目标选择器变量之后附加键值对构成的逗号分隔,并包含在方括号中:

@<变量>[<参数>=<>,<参数>=<>,…]

参数和值区分大小写(在基岩版中可以不区分大小写),括号、等号和逗号旁可以有空格(目标选择器和第一个方括号之间除外)。键值对只能用逗号分隔。

指定基准点
[x=<>,y=<>,z=<>]
在世界中定义一个位置,用于distance参数或dxdydz参数。如果没有这些参数,单独定义位置是没有用的,所以将它(并且只有它)应用于@e仍然会选择世界上的所有实体。
坐标可以是整数或像12.34这样的小数(具体为双精度浮点数)且不会进行中心校正(center-corrected),这意味着x=0不再自动更正为x=0.5。波浪号可用于此参数‌‌[仅基岩版]
通过距离选择目标
[<x>,<y>,<z>,distance=<>] — 根据到某点的欧几里得距离过滤目标。如果位置参数未定义,则相对于命令执行的位置计算。只允许使用非负数。‌‌[仅Java版]
[r=R] — 只选择所有小于R个方块的目标执行命令。
[rm=RM] — 只选择所有大于RM个方块的目标执行命令。‌‌[仅基岩版]
支持使用范围表示,以定义圆形区域:

  • @e[distance=10] — 选择所有距离执行位置10个方块的实体。
  • @e[distance=10..12] — 选择所有距离执行位置10至12个方块之间(包含)的实体。
  • @e[distance=5..] — 选择所有距离执行位置大于5个方块的实体。
  • @e[distance=..15] — 选择所有距离执行位置小于15个方块的实体。
通过体积尺寸选择目标
[<x>,<y>,<z>,dx=<>,dy=<>,dz=<>] — 选择所有位于一定长方体区域内部的目标。体积定义为从基准点开始,向“x”方向(东方)延伸特定格(包括基准点本身,下同),向“y”方向(上方)延伸特定格,并向“z”方向(南方)延伸特定格。
这可以解释为创建一个由初始位置(<x>, <y>, <z>)至对角线向量(<dx>, <dy>, <dz>)组成的正方体,然后选择碰撞箱‌‌[仅Java版]或脚部坐标‌‌[仅基岩版]与其重叠的所有实体。如果位置参数未定义,则相对于命令执行的位置计算。允许任何值,包括负数和小数。
注意dxdydz用来指定与坐标的距离;它们不是指定一个新的坐标。

  • @e[x=1,y=2,z=3,dx=4,dy=5,dz=6] — 选择碰撞箱‌‌[仅Java版]或脚部坐标‌‌[仅基岩版]和方块区域(1~5,2~7,3~9)(或以数学语言来讲,范围是{(x,y,z)|x∈[1,6),y∈[2,8),z∈[3,10)})有重叠的所有实体。
  • @e[x=1,y=2,z=3,dx=0,dy=0,dz=0] — 选择碰撞箱‌‌[仅Java版]或脚部坐标‌‌[仅基岩版]和方块区域(1,2,3)有重叠的所有实体。
可以将通过按距离来选择与按体积来选择组合在一起, 在这种情况下,命令将选择在两个区域的重叠内的实体(在基准点的某个半径范围内,且不在定义的体积之外)。
通过分数选择目标
[scores={<objective>=<>,...}] — 根据指定目标的分数过滤目标。
所有的记分项都放在一个单独的标签中,并这个标签中分别列出分数选择器。此选择器支持使用范围。

  • @e[scores={myscore=10}] — 选择所有记分项myscore分数为10的目标。
  • @e[scores={myscore=10..12}] — 选择所有记分项myscore分数为10到12之间(包含)的目标。
  • @e[scores={myscore=5..}] — 选择所有记分项myscore分数为5及以上的目标。
  • @e[scores={myscore=..15}] — 选择所有记分项myscore分数为15及以下的目标。
  • @e[scores={foo=10,bar=1..5}] — 选择所有记分项foo分数为10,且记分项bar分数为1到5之间(包含)的目标。
参见:记分板§记分项
通过标签选择目标
[tag=<标签名>] — 选择所有有标签“标签名”的目标。
[tag=!<标签名>] — 选择所有没有标签“标签名”的目标。
[tag=] — 选择所有没有标签的目标。
[tag=!] — 选择所有有标签的目标。
允许使用多个参数。被选择的实体必须满足所有的参数条件。

  • @e[tag=a,tag=b,tag=!c] — 选择所有拥有标签a和b,但没有标签c的目标。
  • @r[tag=a] — 选择一个有标签a的随机玩家。
通过队伍选择目标‌‌[仅Java版]
[team=<某队伍>] — 选择所有属于队伍“某队伍”的目标。
[team=!<某队伍>] — 选择所有不属队伍“某队伍”的目标。
[team=] — 选择所有不属于任何队伍的目标。
[team=!] — 选择所有属于任意队伍的目标。
指定数量并排序选择目标
[limit=<>] — 仅选择指定数量的目标。‌‌[仅Java版]
[c=<>] — 通常以距离命令执行点的顺序排列。‌‌[仅基岩版]
当使用@p@r变量时,此参数默认为1。对它们使用limit参数时会增加选择最近或随机目标的数量。当使用@a@e变量时,此参数会限制目标数量。
当输入的值为负值时,目标的顺序会被反转。举例来说,@p[c=-3] 会回传3个最远的目标,而且,如果所有目标距离都一样远,@e[c=-3] 会选择3个刚加载/生成的目标。‌‌[仅基岩版]
[limit=<>,sort=(nearest|furthest|random|arbitrary)] — 选择指定数量的目标,并指定优先级。‌‌[仅Java版]

  • sort=nearest — 将目标由近到远排序。(@p的默认排序方式)
  • sort=furthest — 将目标由远到近排序。
  • sort=random — 将目标随机排序。(@r的默认排序方式)
  • sort=arbitrary — 不进行排序。(@a@e的默认排序方式)
  • @a[limit=3,sort=nearest]‌‌[仅Java版]@p[limit=3]‌‌[仅Java版]@p[c=3]‌‌[仅基岩版] — 选择距离最近的3名玩家。
  • @a[limit=4,sort=furthest]‌‌[仅Java版]@p[c=-4]‌‌[仅基岩版] — 选择距离最远的4名玩家。
  • @a[limit=2,sort=random]‌‌[仅Java版]@r[c=2]‌‌[仅基岩版] — 随机选择2名玩家。
通过经验等级选择目标
[level=<>] — 根据指定目标的经验等级过滤目标。这将自动过滤非玩家目标。‌‌[仅Java版]
[l=L] — 只选择所有经验等级低于L的目标。‌‌[仅基岩版]
[lm=LM] — 只选择所有经验等级高于LM的目标。‌‌[仅基岩版]
此选择器支持使用范围。

  • @a[level=10] — 选择所有10级的玩家。
  • @a[level=10..12] — 选择所有10级与12级之间(包含)的玩家。
  • @a[level=5..] — 选择所有至少为5级的玩家。
  • @a[level=..15] — 选择所有至多为15级的玩家。
通过游戏模式选择目标
[gamemode=<游戏模式>] — 选择所有处于指定游戏模式的目标。‌‌[仅Java版]
[gamemode=!<游戏模式>] — 选择所有不处于指定游戏模式的目标。‌‌[仅Java版]
[m=M] — 选择所有处于指定游戏模式的玩家。‌‌[仅基岩版]
[m=!M] — 选择所有不处于指定游戏模式的玩家。‌‌[仅基岩版]
<游戏模式>的值可以为spectator‌‌[仅Java版]adventurecreativesurvival
这将自动过滤非玩家目标。
在基岩版中,M可以为全称,也可以是数字(0=生存模式,1=创造模式,2=冒险模式)或缩写(s=生存模式,c=创造模式,a=冒险模式)。
  • @a[gamemode=survival]‌‌[仅Java版]@a[m=0]‌‌[仅基岩版]@a[m=s]‌‌[仅基岩版] — 选择所有生存模式的玩家。
  • @a[gamemode=spectator]‌‌[仅Java版] — 选择所有旁观模式的玩家。
  • @a[gamemode=!survival,gamemode=!adventure]‌‌[仅Java版] — 选择所有既不是生存模式又不是冒险模式的玩家。
通过名称选择目标
[name=<某名称>] — 选择所有名字为“某名称”的目标。
[name=!<某名称>] — 选择所有名字不为“某名称”的目标。
这是一个字符串,包含空格时应当用双引号括起。不能是JSON文本。

  • @e[name=!Steve] — 选择不叫“Steve”的目标。
通过垂直旋转选择目标
[x_rotation=<>] — 根据指定目标的垂直旋转角度过滤目标。‌‌[仅Java版]
[rx=RX] — 仅选择所有最大垂直旋转角度为RX的目标。‌‌[仅基岩版]
[rxm=RXM] — 仅选择所有最小垂直旋转角度为RXM的目标。‌‌[仅基岩版]
更具体地说,是旋转高度与地平线的夹角,以度为单位。垂直旋转值从-90(垂直向上)向上增加,之后增加到0(水平),最后增加到90(竖直向下)(因此垂直旋转值随着向下旋转而增加)。
此选择器支持范围。
  • @e[x_rotation=0] — 选择所有看向地平线的目标。
  • @e[x_rotation=30..60] — 选择所有看向地平线偏下30°至60°(包含)的目标。
  • @e[x_rotation=45..] — 选择所有看向地平线偏下45°(包含)及更低的目标。
  • @e[x_rotation=..0] — 选择所有看向地平线偏上的目标。
通过水平旋转选择目标
[y_rotation=<>] — 根据指定目标的水平旋转角度过滤目标。‌‌[仅Java版]
[ry=RY] — 仅选择最大水平旋转为RY的目标。‌‌[仅基岩版]
[rym=RYM] — 仅选择最小水平旋转为RYM的目标。‌‌[仅基岩版]
其角度以正南(或正Z轴方向)为基准顺时针旋转。水平旋转值从-180(面向正北)开始,到-90(面向正东),再到0(面向正南),再到90(面向正西),最后到180(再次面向正北)。
此选择器支持范围。

  • @a[y_rotation=0] — 选择所有看向正南的目标。
  • @a[y_rotation=45] — 选择所有看向南偏西45°的目标。
  • @a[y_rotation=96] — 选择所有看向西偏北6°的目标。
  • @a[y_rotation=-90..0] — 选择所有看向正东和正南(包含)之间的目标。
  • @a[y_rotation=-90..90] — 选择所有看向正东和正西之间(包含)的目标,区域穿过正南。
  • @a[y_rotation=0..] — 选择所有不看向南方(包含)和东方之间的目标。
通过实体类型选择目标
[type=<实体类型>] — 选择所有特定的实体类型的目标。
[type=!<实体类型>] — 选择所有不是特定的实体类型的目标。
实体类型必须使用有效的实体ID或或实体标签。如果实体ID的命名空间在minecraft:内则可以省略命名空间。(举例来说,minecraft:creeper指定苦力怕,minecart指定普通矿车,tnt指定点燃的TNT等等)实体ID或标签区分大小写。
当与@r一起使用时,原本用来选择玩家的命令也可以被用来选择其他实体。

  • @e[type=skeleton] — 选择所有骷髅。
  • @e[type=!chicken,type=!cow] — 选择所有除鸡和牛之外的目标。
  • @e[type=chicken,type=cow] — 无效选择:选择所有既是鸡又是牛的目标(不存在)。
  • @e[type=#skeletons] — 选择所有在标签#skeletons内的目标(骷髅、凋灵骷髅和流浪者)。
通过家族选择目标‌‌[仅基岩版]
[family=<家族>] — 选择属于指定家族的实体。
[family=!<家族>] — 选择不属于指定家族的实体。
给定的实体家族可以是任何字符串,但不包括命名空间。这些实体家族在实体家族种类行为组件中定义。原版行为包使用的默认值包括更广泛的大型家族(例如mobinanimatemonsterundead)以及更具体的小型家族(例如zombieskeleton)和单个生物的家族(例如wandering_traderendermancreeper)。单个实体可以属于多个家族。

  • @e[family=skeleton] — 选择所有骷髅、凋零骷髅和流浪者。
  • @e[family=mob,family=!monster] — 选择所有不是攻击型生物的生物(例如:会选中牛和猪,但不会选中僵尸和骷髅)。
  • @e[family=monster,family=undead] — 选择所有是亡灵生物的攻击型生物(例如:会选中僵尸和骷髅,但不会选中苦力怕和末影人)。
通过NBT选择目标‌‌[仅Java版]
[nbt=<NBT>] — 选择具有指定NBT的所有目标。NBT结构以其命令定义编写。
例如:

  • @a[nbt={OnGround:true}] — 选择所有站在地上的玩家。
  • @e[type=sheep,nbt={Color:0b}] — 选择所有白色的羊。
  • @e[type=item,nbt={Item:{id:"minecraft:slime_ball"}}] — 选择所有黏液球物品实体。
  • @e[nbt={Tags:[a,b]}]@e[tag=a,tag=b]的效果相同。后者更简单,且减少了CPU的负载。
注意:当匹配字符串内的命名空间ID时,不得省略其命名空间。

因此@e[type=item,nbt={Item:{id:slime_ball}}]找不到任何东西,因为 id字段始终包含一个已经被转换的命名空间ID字符串。
通过进度选择目标‌‌[仅Java版]
从Java版1.13开始,目标选择器支持advancements参数,取代/advancement test。参数名称是进度的IDadvancements后接一组用中括号包含来的键值对,其中键为进度或条件的名称,值为true或false或表示进度的各条件的键值对。

  • @a[advancements={story/form_obsidian=true}] — 选择所有已达成进度“冰桶挑战”(minecraft:story/form_obsidian)的玩家。
  • @a[advancements={story/form_obsidian=false}] — 选择所有未达成进度“冰桶挑战”(minecraft:story/form_obsidian)的玩家。
  • @a[advancements={story/obtain_armor={iron_helmet=true}}] — 选择所有装备过铁头盔的玩家。选择时玩家不一定正在装备铁头盔,也不一定需要达成进度“整装上阵”(minecraft:story/obtain_armor)。
  • @a[advancements={story/follow_ender_eye=true}]@a[advancements={story/follow_ender_eye={in_stronghold=true}}]的效果相同。
通过谓词选择目标‌‌[仅Java版]
[predicate=<命名空间ID>] — 选择所有匹配该谓词的目标。
[predicate=!<命名空间ID>] — 选定所有不匹配该谓词的目标。
从19w38a起,选择器可以在其参数中使用谓词。

  • @a[predicate=example:test_predicate] — 选择所有匹配谓词example:test_predicate的玩家。
  • @e[predicate=!minecraft-wiki:smart_entity] — 选择所有不匹配谓词minecraft-wiki:smart_entity的实体。

数据标签

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

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

例: {name1:123,name2:"sometext",name3:{subname1:456,subname2:789}}

这些数据标签所采用的数据结构与Minecraft世界存档相同。这种数据结构在其他条目中有详细描述。命令使用的数据标签中键名有严格的限定(区分大小写):

数据结构规范链接
对象 例子
方块 箱子、熔炉、命令方块、刷怪蛋、告示牌等
物品 物品栏中的物品 (包括附魔、自定义名称等)
物品实体 在地上的物品
生物 苦力怕、牛、村民等
弹射物 弓箭、火球、喷溅药水等
交通工具 船、矿车等
动态方块 引燃的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之间。

例:3.1415926

Double: 64位双精度浮点数,介于-1.7E+308和+1.7E+308之间。

例:3.141592653589793

详见IEEE二进制浮点数算术标准。

 字符串(string) 一串字符,如果内容包含不在 a-z A-Z 0-9 _ .(不包括空格)的字符则需要在整个字符串前后加上双引号。\可以将后面的字符转义(不支持像JSON那样\u00a7这样的转义)。转义方式为,在"\号前加上\

例:"Call me \"Ishmael\""
 列表(list) 值的序列,用逗号分隔并用方括号包含。所有值的数据类型必须统一——数据类型标准由列表的第一个元素决定。

例:[3.2,64,129.5]
 复合标签(compound) 键值对的序列,用逗号分隔并用花括号包含。

例: {X:3,Y:64,Z:129}

每个数据标签的内容本身就是一个复合标签。

复合标签里面可以包含任何标签。

 字节数组(byte-array) 介于-128和127(包含)之间的整数序列,用逗号分隔内容并用方括号包含,首个元素前方需要加入类型标识B;

例: [B;1b,2b,3b]
 整型数组(int-array) 介于-2,147,483,648和2,147,483,647(包含)之间的整数序列,用逗号分隔内容并用方括号包含,首个元素前方需要加入类型标识I;

例: [I;1,2,3]
 长整型数组(int-array) 介于-9,223,372,036,854,775,808和9,223,372,036,854,775,807(包含)之间的整数序列,用逗号分隔内容并用方括号包含,首个元素前方需要加入类型标识L;

例: [L;1l,2l,3l]
 布尔型(boolean) 一种数据类型,只有“true”和“false”两种取值。由于程序通常使用 字节存储布尔值,布尔型只会在JSON格式中出现。在NBT中,true和false相当于1和0。

例: {doFoo:true}

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

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

原始JSON文本

/tellraw/title命令使用严格的JSON语法以显示文字。

此外,部分NBT标签的值需要输入原始JSON文本。

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[方块状态]{数据标签},其中方块状态和数据标签在不需要时可以省略。

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

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

<物品>

例子:

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

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

  • 物品的命名空间ID是必需的(如果没有设定命名空间则将设为预设值minecraft:)。
  • 数据标签位于{},是可选的。

参数类型列表

下列为Java版中的参数类型。

权限等级

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

在Java版中,权限等级可为01234

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

在基岩版中,权限等级可为01234

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

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

命令列表及其概述

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

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

命令概述
命令 描述 BE EDU JE JE权限等级 BE及EDU权限等级 仅限MP
/? /help的替代命令,提供命令使用帮助。 0 0
/ability 赋予或剥夺玩家的能力。 1
/advancement 添加、移除或查询玩家的进度。 2
/agent 操控吉祥物。 WS WS 0 0‌‌[仅EDU]
1‌‌[仅BE]
/alwaysday /daylock的替代命令,锁定或解锁日夜循环。 1
/attribute 修改或查询玩家和生物的属性。 2
/ban 将玩家加入封禁列表。 3
/ban-ip 将IP地址加入封禁列表。 3
/banlist 显示封禁列表。 3
/bossbar 修改或查询Boss栏。 2
/camerashake 启用镜头抖动效果。 1
/changesetting 更改一个正在运行的服务器的设置。 4
/classroommode 允许编辑受限制的方块。 0‌[需要验证]
/clear 从玩家物品栏中删除物品。 2 1
/clearspawnpoint 从世界中移除出生点。 1
/clone 将特定区域的方块复制到另一处。 2 1
/closechat 如果聊天框已打开,则关闭它。 0
/closewebsocket 断开已连接的WebSocket服务器。 WS WS 0
/code 启动代码编辑器。 0
/codebuilder 设置一个玩家的代码编辑状态。 1
/connect /wsserver的替代命令,连接至一个WebSocket服务器。 0‌‌[仅EDU]
2‌‌[仅BE]
/data 允许玩家获取、合并或是移除实体或方块的数据标签。 2
/datapack 控制加载的数据包。 2
/daylock /alwaysday的替代命令,锁定或解锁日夜循环。 1
/debug 开始或结束调试会话。 3
/defaultgamemode 更改默认的游戏模式。 2
/deop 撤销玩家的管理员权限。 3 2 是‌‌[仅Java版]
/dialogue 打开一个玩家的NPC对话。 1
/difficulty 设置难度等级。 2 1
/effect 添加或移除状态效果。 2 1
/enableencryption 为当前WebSocket连接启用加密。 WS WS 0
/enchant 附魔玩家的物品。 2 1
/event 用于触发一个实体的事件。 1
/execute 代表实体执行另一命令。 2 1
/experience /xp的替代命令,给予玩家经验。 2
/fill 在某个区域填充特定方块。 2 1
/fog 用于更改玩家当前的雾设置。 1
/forceload 强制不断加载区块。 2
/function 运行一个函数。 2 1
/gamemode 更改玩家的游戏模式。 2 1
/gamerule 更改或查询游戏规则。 2 1
/getchunkdata 获得特定区块的数据。 3
/getchunks 获得已加载区块列表。 3
/geteduclientinfo 显示有关客户端的数据。 0
/geteduserverinfo 显示有关服务端的数据。 0
/getlocalplayername 显示本地玩家姓名。 0
/getspawnpoint 获得特定玩家的出生地点。 3
/gettopsolidblock 获得特定位置以下最高的非空气方块。 0‌‌[仅EDU]
1‌‌[仅BE]
/give 给予玩家物品。 2 1
/globalpause 查询或设置所有玩家的世界暂停状态。 3
/help /?的替代命令,提供命令使用帮助。 0 0
/immutableworld 设置世界的不可变状态。 1
/item 用于修改方块或实体的物品栏。‌[新增:JE 1.17] 即将到来 2
/kick 将玩家踢出服务器。 3 1
/kill 清除实体(玩家、生物、掉落物等)。 2 1
/lesson 处理教育版课程报告。 0
/list 列出服务器中的玩家。 0 0
/listd 以JSON形式列出服务器中的玩家及信息。 WS WS 3
/locate 显示最近的给定结构的坐标。 2 1
/locatebiome 显示最近的给定生物群系的坐标。 2
/loot 从一个物品栏中掉落物品到地面上。 2
/me 显示一条关于自己的信息。 0 0
/mixer Mixer交互性控制。 0
/mobevent 控制或查询允许运行的生物事件。 1
/msg /tell/w的替代命令,向另一玩家发送私信。 0 0
/music 设置玩家是否能控制当前播放的音乐。 1
/op 授予玩家管理员权限。 3 2 是‌‌[仅Java版]
/ops /permission的替代命令,重载并应用权限。 4
/pardon 从封禁列表中移除玩家封禁项目。 3
/pardon-ip 从封禁列表中移除IP封禁项目。 3
/particle 创建粒子。 2 1
/permission /ops的替代命令,重载并应用权限。 4
/playanimation 运行一次特定动作。 1
/playsound 播放音效。 2 1
/publish 向局域网开放单人游戏世界。 4 仅限SP
/querytarget 检测某实体所在坐标、旋转角度、所在维度及专用ID。 WS WS 0‌‌[仅EDU]
2‌‌[仅BE]
/recipe 给予或剥夺合成配方。 2
/reload 从硬盘中重新加载战利品表、进度和函数。 2 2
/remove 移除吉祥物。 是‌[需要验证] 2
/replaceitem 替换物品栏中的物品。
[失效:JE 1.17]
2 1
/ride 控制一个实体的骑行状态。 1
/save 准备备份,查询其状态或恢复。 4
/save-all 保存服务器世界状态到硬盘。 4
/save-off 关闭服务器自动保存。 4
/save-on 开启服务器自动保存。 4
/say 向多个玩家发送消息。 2 1
/schedule 安排函数在特定的游戏刻后运行。 2 1
/scoreboard 管理记分板的目标、玩家和队伍。 2 1
/seed 显示世界种子。 0[仅单人游戏]
2[仅多人游戏]
/setblock 将方块替换为其他方块。 2 1
/setidletimeout 设置无操作玩家被踢出的延时。 3
/setmaxplayers 设置可加入游戏的玩家数量上限。 3
/setworldspawn 设置世界出生点。 2 1
/spawnpoint 为玩家设置出生点。 2 G
/spawnitem 在特定位置生成一个物品实体。 0
/spawnpoint 设置一个玩家的出生地点。 2 1
/spectate 使一个处于旁观模式的玩家旁观一个实体。 2
/spreadplayers 将实体传送到随机位置。 2 1
/stop 关闭服务器。 4 4
/stopsound 停止音效。 2 1
/structure 无需结构方块即可保存和加载结构。 1
/summon 生成一个实体。 2 1
/tag 修改实体的标签。 2 1
/takepicture 从一个玩家的角度拍摄另一个玩家的照片。 1
/team 修改队伍。 2
/teammsg /tm的替代命令,指定要发送给队伍的消息。 0
/teleport /tp的替代命令,传送实体。 2 1
/tell /msg/w的替代命令,向另一个玩家发送私信。 0 0
/tellraw 向玩家显示JSON消息。 2 1
/testfor 统计符合给定条件的实体。 已移除 2 1
/testforblock 检测某方块是否在某位置。 已移除 2 1
/testforblocks 检测两个区域中的方块是否相同。 已移除 2 1
/tickingarea 添加、删除或列出常加载区域。 1
/time 更改或查询游戏中的世界时间。 2 1
/title 管理屏幕上的标题。 2 1
/titleraw 使用JSON管理屏幕上的标题。 1
/tm /teammsg的替代命令,指定要发送给队伍的消息。 0
/toggledownfall 切换天气。 1
/tp /teleport的替代命令,传送实体。 2 1
/trigger 设置一个触发器。 0
/videostream 连接一个WebSocket服务器,并进行视频推流。 0
/w /tell/msg的替代命令,向另一玩家发送私信。 0 0
/wb /worldbuilder的替代命令,给予能编辑受限制方块的能力。 1
/weather 设置天气。 2 1
/whitelist 管理服务器白名单。 3 4
/worldborder 管理世界边界。 2
/worldbuilder /worldbuilder的替代命令,给予能编辑受限制方块的能力。 1
/wsserver /connect的替代命令,连接至WebSocket服务器。 0‌‌[仅EDU]
2‌‌[仅BE]
/xp /experience的替代命令‌‌[仅Java版],增加或减少一个玩家的经验。 2 1

已移除的命令

命令概述
命令 描述 移除版本 移除原因 BE EDU JE JE权限等级 BE及EDU权限等级 仅限MP
/achievement 给予或剥夺玩家的成就。 Java版1.12
(17w13a)
Java版1.12中,成就系统被进度替代。 已移除 2
/banip 将IP地址加入封禁列表。 Java版Indev 0.31 被整理进/ban-ip 已移除 ?
/blockdata 修改方块的数据标签。 Java版1.13
(17w47a)
被整理进/data 已移除 2
/broadcast 在整个服务器中广播消息。 Java版Classic 0.0.16a_01 被整理进/say 已移除 1
/chunk 控制一个区块是否常加载。 Java版1.13.1-pre1 被整理进/forceload 已移除 2
/clearfixedinv 清除固定的物品栏。 携带版Alpha 0.16.0
(build 2)
? 已移除 已移除 ? ?
/detect 当限制条件满足时执行命令。 基岩版1.2.0 被整理进/execute 已移除 1
/entitydata 修改实体的数据标签。 Java版1.13
(17w45b)
被整理进/data 已移除 2
/executeasself 执行一个命令。 ? ? 已移除 已移除 0
/home 将玩家召唤到世界的生成点。 Java版Alpha v1.2.5 世界生成点现在基于生成区块了,而不是单一位置。 已移除 0
/position 控制是否在HUD中显示玩家坐标。 教育版1.0.21 被整理进/gamerule 已移除 0
/resupply 村民重新补给。 ? ? 已移除 2
/setfixedinvslot 以一个物品设置固定的物品栏。 携带版Alpha 0.16.0
(build 2)
? 已移除 已移除 ? ?
/setfixedinvslots 设置固定物品栏数量。 携带版Alpha 0.16.0
(build 2)
? 已移除 已移除 ? ?
/setspawn 将当前位置设为新玩家默认的生成点。 Java版Indev 0.31 世界生成点现在基于生成区块了,而不是单一位置。 已移除 2
/solid 在放置石头和放置基岩间切换。 Java版Indev 0.31 放置的方块现在由物品栏决定。 已移除 2
/stats 更新命令结果产生的记分项。 Java版1.13
(17w45a)
被整理进/execute 已移除 2
/toggledownfall 更改天气。 Java版1.13
(17w45a)
被整理进/weather 可用 可用 已移除 2
/unban 从封禁列表中移除封禁项目。 Java版Alpha v1.0.16 被整理进/pardon 已移除 3

其他

“WS”表示这类命令通常需要使用WebSocket服务器代为执行,在游戏界面中无法被执行。“部分”表示这些命令通常并未被移除,但是玩家已无法通过任何正常方式在最新版本中执行。

基岩版开发者命令

Information icon.png
此特性为基岩版独有。

基岩版开发者命令是供游戏的开发和测试使用的,在正式版本中玩家通常无法看见并执行这些命令。然而,这些命令曾被意外地保留了下来。随后在基岩版1.2.14中被移除。

命令指引

参见:命令术语列表
格式

在Java版中,:

语法 含义
纯文本 纯文本, 直接键入。
<参数名> 需要使用一合适的值来替换该参数。
[可选参数] 该参数是可选的。
(参数|参数) (必须的)在显示的值中选择一个填写。
[entry|entry] (可选的)在显示的值中选择一个填写。
省略 ... 需要接入一条子指令。

在基岩版中,:

语法 含义
纯文本 纯文本, 直接键入。
名称:种类 需要使用一合适的值来替换该参数。
参数|参数 在显示的值中选择一个填写。
<参数> 该参数是必需的。
[可选参数] 该参数是可选的。
省略号 … 此参数可能是含有空格的多个单词。
参数:整型 此参数需要输入整数
参数:浮点型 此参数需要输入小数
参数:字符串 此参数是字符串
成功条件
只有情况符合命令的成功条件时游戏才会认为命令执行成功。成功与否本身会产生许多影响,例如接收了命令方块红石信号的红石比较器,其输出会有所变化。请注意,并非所有的“成功”的命令都会使世界有所改变,“失败”的命令也不意味着命令什么也没有做。

 

限制条件
描述该命令的执行者与执行条件要求。

  • 无:此命令可以由任何玩家在任何世界执行。下列命令没有限制条件:/help/me/tell/trigger
  • 是管理员:此命令只能由管理员或在启用作弊的单人游戏执行。在多人游戏服务器中,这类命令的结果会向所有在线管理员通报。
  • 仅多人游戏:此命令只能在多人游戏服务器中执行。下列命令只能在多人游戏服务器中执行:/ban/ban-ip/banlist/deop/kick/list/op/pardon/pardon-ip/save-all/save-off/save-on/setidletimeout/stop/whitelist
所有多人游戏限定的命令都不允许参数中有目标选择器。
除了/list/kick‌‌[仅基岩版]所有的多人游戏命令都不能由命令方块执行。
许多这类命令都可以对从未进入服务器甚至非Minecraft注册账号的玩家使用。
  • 不在命令方块上执行:此命令的执行者不能是命令方块。


已有 0 条评论