命令简介
命令是指《我的世界》基岩版将执行的特定指令。这些指令可以简单到更改一天中的时间,也可以复杂到设置和使用计分板。 有各种各样的命令,每个命令都有各自的功能用来改进您的内容。
内容创作者使用命令来改变或响应玩家周围的环境。 玩家可以执行一个任务,命令系统将以某种方式检测和响应这个任务,而不再是一个静态的世界。 一个示例是检测玩家是否在“完成纪念碑”风格的地图的特定位置放置了彩色羊毛方块。
在本教程中,您将学习以下内容:
- 什么是命令以及如何开始使用命令。
- 命令语法。
- 如何使用目标选择器和选择器参数。
启用命令
在开始使用命令之前,必须启用无敌模式。 这可以在您创建世界或编辑现有世界时完成。 请注意,启用无敌模式功能将禁用该世界的成就。
激活无敌模式将允许在聊天界面中使用命令。 在聊天中运行命令对于在新创建的世界中获取第一个命令方块至关重要,而且必须在启用(在同一菜单中)后才能使用。 默认情况下将启用命令方块,因此您不必更改该选项。
虽然这不是必需的,但在开始时将默认游戏模式设置为创造模式会很有帮助,因为命令方块只能在创造模式下编辑。 将默认游戏模式设置为创造模式也会激活无敌模式。
最后,您可能需要为自己启用“管理员命令”权限,以便在聊天和访问命令方块中运行命令。 尽管默认情况下为您创建的新世界启用了此设置,但对于之前创建的世界或想要授予此权限的其他玩家,您可能需要更改此设置。 这可以通过在世界中打开“暂停”菜单并点击玩家右侧的图标来完成。
将显示各种权限的列表。 为了在聊天和访问命令方块中使用命令,必须专门启用“管理员命令”权限。
使用聊天命令
学习命令的第一步是学习如何使用聊天功能。 在这里,您可以运行简单的命令、学习语法、测试并最终打开通往命令方块的大门。 如果您的设置和权限设置正确,在聊天中输入正斜杠 /
将显示大量命令。
还提供了一个快速操作按钮,用于为特定情况生成命令(例如更改一天中的时间或当前天气)。
当您键入时,聊天屏幕上显示的命令列表将筛选,以匹配您输入的字符。 您可以随时按 tab
循环浏览列表以选择要运行的命令。 完全输入命令名称后,命令列表将更改为所选命令的语法列表。
备注
如果您打开聊天并按键盘上的向上箭头,可以看到您之前输入的命令。 在需要反复输入同一命令的变体时,这会派上用场。 结束。
命令语法
所有命令都遵循相同的语法:
- 要在聊天中运行命令,请以正斜杠开头。
- 正斜杠后面是命令的名称。
- 名称后面是一个空格 -- 如果后面命令带有任何参数。
- 空格后面是命令的任何参数,每个参数用空格分隔。
例如,以下 /say
命令将向聊天室发送一条提供的消息,供所有玩家查看:
/say Hello World
- 它以正斜杠开头。
- 然后是命令的名称“say”。
- 由于名称后有参数,因此在名称后放置一个空格。
- 然后提供了 `/say`` 的唯一参数,即要显示的消息。
执行的结果是将“Hello World”打印在聊天中。
参数
不同的命令需要不同的参数。 `/help`` 命令将描述一个命令和它的参数。 键入命令时,聊天提供的自动完成功能将显示相同的信息。
例如,在聊天中运行 /help testfor
将为 /testfor
命令提供可用的语法。
/testfor <victim: target>
该命令只有一个参数:测试一个是否存在的目标。 如果指定名称的玩家已登录世界,则使用玩家名称填充参数并运行该命令将打印成功消息。
/testfor PlayerName
有三种主要类型的参数:必需、可选和字面。
必需参数
必需参数包含在尖括号中,如 <this>
。 对于 /testfor
命令,可看出其唯一的参数包含在尖括号中,因此也是必需参数。 如果未提供参数,则命令将无法运行。 这些类型的参数有一个简短的参数描述符以及预期的输入类型。 如 /difficulty
命令:
/difficulty <difficulty: Difficulty>
/difficulty <difficulty: int>
`/difficulty` 命令设置世界的难度级别,有两种不同的方式来指定所需的级别。 该文本为您提供了一些有关输入内容的线索。 在每一行,冒号后面是预期的输入类型。 可以看出,输入可以是预期值列表中的一个值,例如“peaceful”、“easy”、“normal”或“hard”,也可以是对应于每个难度级别的整数:0、1、2 或 3。
以下任一命令都会将难度设置为“hard”:
/difficulty hard
/difficulty 3
可选参数
可选参数包含在方括号中。 这些参数不是必须提供的。 与必需参数一样,它将包含一个描述符和一个预期类型。
/gamemode <gameMode: GameMode> [player: target]
/gamemode <gameMode: int> [player: target]
与 /difficulty
命令一样,/gamemode
命令有两种不同的方式来做同样的事情。 “gameMode”描述符提示预期值是游戏模式,而实际类型可以是枚举中的一个值(标记为“GameMode”)或对应于游戏模式的整数(0 到 2)。
在此例中,游戏模式后面有一个可选参数:将改变游戏模式的玩家。 输入类型是“target”,它接受玩家名称或目标选择器。 如果不提供可选参数,该命令仍将运行。 这样做会改变执行命令的玩家的游戏模式。 如果提供可选参数,则更改目标的游戏模式。
以下任一命令都会将指定玩家(“PlayerName”)的游戏模式设置为生存模式。
/gamemode survival PlayerName
/gamemode 0 PlayerName
字面参数
字面参数是没有描述符的参数。 预期的输入是参数本身的名称。 例如,/time
命令有一个名为“set”的参数:
/time set <amount: int>
/time set <time: TimeSpec>
“set”参数没有描述符,这意味着它必须按字面写出。 它也不包含括号,尽管它仍然是必需的参数。
/time set 6000
/time set noon
一个字面参数可以有多个接受的值。 在这些情况下,字面值由竖线分隔。
/weather
命令利用该参数应用天气类型,其中参数的值必须是可接受的值之一。
/weather <clear|rain|thunder> [duration: int]
/weather rain 10000
可选的字面参数包含在方括号中。
/testforblocks
的最后一个参数是一个可选的字面参数,可以是“all”或“masked”。 如果没有指定,则默认为“all”。 “masked”选项将导致比较时忽略空气方块,只要源位置存在空气方块,允许任何方块存在于目标位置。
/testforblocks <begin: x y z> <end: x y z> <destination: x y z> [masked|all]
/testforblocks 0 64 0 20 64 20 100 50 100
/testforblocks 0 64 0 20 64 20 100 50 100 masked
输入类型
任何不是字面参数的参数都将在描述符后指定预期的输入类型。
/command <descriptor: type>
/command [descriptor: type]
有大量的输入类型。 最常见的是基本数值,但也有许多类型是一个命令独有的。 下表详细介绍了最常见的输入类型和它们所属的一些常用命令。 大多数独特的输入类型,例如来自 /gamemode
命令的“GameMode”,都可以使用聊天中的自动完成功能轻松检查其输入。
类型 | 描述 | 常用命令 |
---|---|---|
Boolean | true 或 false。 | /effect , /gamerule |
int | 一个整数(1、2、3)。 | /give /give、/scoreboard 、/time 、/weather 、/xp /xp |
float | 十进制数(1、2.3、4、5.6)。 | /spreadplayers |
string | “引号”中的单个单词或文本。 | /scoreboard /scoreboard、/summon 、/tag /tag |
message | 不需要用引号引起来的文本。 | /me /me、/msg 、/say 、/tell 、/title 、/title、/w /w |
x y z | 用于指定坐标的 3 个由空格分隔的浮点数。 每个值也可以是波浪号 (~),表示该轴上的执行原点没有变化,或者是波浪号后跟数字 (~5) 以表示距离该轴上的执行原点的方块数。 |
/clone /clone、/execute 、/fill 、/setblock 、/summon 、/teleport 、/testforblock /testforblock |
Block | 一个方块 ID。 | /clone /clone、/execute 、/fill 、/setblock 、/testforblock /testforblock |
Item | 物品 ID。 | /clear /clear、/give 、/replaceitem /replaceitem |
EntityType | 实体 ID。 | /summon |
json | JSON 格式的文本。 | /give /give、/replaceitem 、/summon 、/tellraw 、/titleraw /titleraw |
target | 玩家名称或目标选择器。 | /clear /clear、/execute 、/gamemode 、/give 、/kill 、/replaceitem 、/scoreboard 、/tag 、/teleport 、/testfor /testfor |
目标选择器
对于旨在成为完全通用的命令系统来说,使用玩家名称作为参数值并不理想。 系统不可能事先知道将使用您的内容的玩家名称。 目标选择器可以任意针对玩家和其他实体,从而解决了这个问题。
有 5 个基本选择器可供选择:@p
、@a
、@r
、@e
和 @s
。 要选择的选择器取决于预期目标是谁或什么。
@p
@p:选择一个最近的活跃玩家,除非使用x
、y
和z
选择器参数更改执行原点。 如果执行者是命令方块,则将选择最靠近命令方块的玩家,因为命令方块的坐标是执行原点。@a
@a:选择所有在线玩家,无论是否活跃。@r
@r:除非指定了type
参数,否则会随机选择一个活跃玩家。@e
@e:选择所有实体(玩家、奶牛、掉落的物品等)@s
@s:选择执行实体,可以使用/execute
命令更改。
选择器在可能的情况下替换玩家名称。 例如,不必在 /gamemode
命令中指定玩家名称,可以在该处使用选择器。 以下命令会将所有玩家的游戏模式更改为创造模式:
/gamemode creative @a
如果选择器未找到目标,则命令将无法运行。
选择器参数
基本选择器可以具有参数。 这些可选参数有助于缩小所需目标的范围,例如,如果您只想针对冒险模式中的玩家。 所有参数都包含在一组方括号内,每个参数之间用逗号分隔。 参数的名称后跟一个等号,然后是参数的值。
@<selector>[param1=value1,param2=value2]
如果前一个 /gamemode
命令针对的目标是所有处于冒险模式的玩家,m
参数会将选择器的潜在目标减少到只有处于冒险模式的玩家。
下面是所有参数的列表。
/gamemode creative @a[m=adventure]
潜在目标必须匹配所有指定的参数才能被选中。 这意味着使用 @p[tag=sometag,m=survival]
将选择最近的具有“sometag”标签且处于生存模式的玩家。
参数列表
参数 | 描述 | 示例 |
---|---|---|
x, y, z |
指定要查找玩家的坐标。 并非所有轴都必须指定。 | 使用 @p[x=0,y=64,z=0] 将选择最靠近这些坐标的玩家,而不是最靠近执行原点的玩家。 |
r, rm |
选择执行原点周围半径范围内的目标,除非被“x、y、z”参数更改。r r 是要选择的远离原点的最大方块数,而 rm 是远离原点的最小方块数。可以仅指定其中一个。 |
@p[x=0,y=64,z=0,r=1] @p[x=0,y=64,z=0,r=1] 将选择距离指定坐标 1 个方块的玩家。@a[rm=3] @a[rm=3] 将选择距离执行原点 3 个方块的所有玩家。@e[rm=3,r=10] @e[rm=3,r=10] 将选择执行原点 3 到 10 个方块之间的所有实体。 |
dx, dy, dz |
在矩形方块中选择目标。 执行原点将是一个角,而这些参数中的每一个都指定了从原点到另一个角的距离。 如果指定了这些参数中的任何一个,则未指定的其他参数将默认为 0。 |
@a[x=60,y=64,z=60,dx=5,dy=3,dz=5] @a[x=60,y=64,z=60,dx=5,dy=3,dz=5] 将选择指定坐标的 X 和 Z 方向内 5 个方块和 Y 方向内 3 个方块的玩家。@a[dy=50] @a[dy=50] 将选择在 Y 方向上距离执行原点 50 个方块以内,同时在 X 和 Z 方向上 0 个方块以内的玩家。 这意味着玩家必须处于原点的同一水平位置,但最多高于原点 50 个方块。 |
c |
更改可能选择的最大目标数。 选择的目标取决于目标选择器的排序。 请注意,如果可用目标的数量少于给定参数的值,选择器仍将成功选择这些目标。 |
@a[c=5] @a[c=5] 将最多选择最接近的 5 个玩家而不是所有玩家。 如果世界上只有 3 名玩家,他们仍然会被选中。@p[c=100] @p[c=100] 将选择最接近执行原点的 100 名玩家。@r[c=3] @r[c=3] 将选择最多 3 个随机玩家。 |
type |
根据实体 ID 选择目标。 此参数不能与 @a 或 @p 选择器一起使用。可以与 @r 一起使用来定位玩家以外的实体。可以对该值取反,以选择非指定实体的目标。 将多个此参数一起使用可进一步限制目标,但前提是对参数取反。 |
@e[type=minecraft:bat] @e[type=minecraft:bat] 将选择所有蝙蝠 (bat)。@r[type=minecraft:cow] @r[type=minecraft:cow] 将随机选择一头牛 (cow)。@s[type=!minecraft:player] @s[type=!minecraft:player] 将选择非玩家 (player) 的执行实体。@r[type=!minecraft:sheep, type=!minecraft:chicken] 将选择一个非羊非鸡的随机实体。 |
m |
根据玩家的游戏模式选择玩家。 可以对该值取反,以选择非指定游戏模式的玩家。 |
@a[m=survival] @a[m=survival] 将选择所有生存模式的玩家。@a[m=!creative] @a[m=!creative] 将选择所有非创造模式的玩家。 |
tag |
选择具有指定标签的目标(通过 /tag 命令指定)。可以取反以选择没有指定标签的目标。 将多个此参数一起使用可进一步限制目标。 |
@e[tag=myfriend] @e[tag=myfriend] 将选择所有带有“myfriend”标签的实体。@e[tag=!myfriend] @e[tag=!myfriend] 将选择所有不带“myfriend”标签的实体。@a[tag=a,tag=b,tag=!c] @a[tag=a,tag=b,tag=!c] 将选择同时具有“a”和“b”标签没有“c”标签的所有玩家。 |
name |
选择具有指定名称的目标,无论是玩家名称还是实体的自定义名称。 可以取反以选择没有指定名称的目标。 将多个此参数一起使用,但前提是对额外的参数取反。 |
@a[name=PlayerName] @a[name=PlayerName] 将选择所有名为“PlayerName”的玩家。@a[name=!PlayerName] @a[name=!PlayerName] 将选择所有名称不是“PlayerName”的玩家。@e[name=!a,name=!b] @e[name=!a,name=!b] 将选择名称不是“a”或“b”的实体。 |
l, lm |
选择介于最低经验级别 (lm ) 和最高经验级别 (l ) 之间玩家。可以仅指定其中一个。 |
@a[lm=10] @a[lm=10] 将选择所有经验级别大于等于 10 的玩家。@a[l=15] @a[l=15] 将选择所有经验级别小于等于 15 的玩家。@a[lm=10,l=15] @a[lm=10,l=15] 将选择所有经验级别介于 10 到 15 之间的所有玩家。 |
rx, rxm |
选择 X 旋转(纵向朝向)介于最小旋转 (rxm ) 和最大旋转 (rx ) 之间的目标。 实体的纵向朝向介于 -90 度(朝上)和 90 度(朝下)之间。可以仅指定其中一个。 |
@p[rxm=45,rx=90] @p[rxm=45,rx=90] 将选择俯视角度介于 45 度和 90 度之间最近的玩家。@e[rx=-45] @e[rx=-45] 将选择仰视角度在 45 度角和 90 度角之间的所有实体。 |
ry, rym |
选择 Y 旋转(横向朝向)介于最小旋转 (rym ) 和最大旋转 (ry ) 之间的目标。 实体的横向朝向介于 -180 度和 180 度之间。可以仅指定其中一个。 |
@a[rym=45,ry=135] @a[rym=45,ry=135] 将选择所有大致面向西的玩家。@a[rym=-180,ry=-180] @a[rym=-180,ry=-180] 将选择所有面向正北的玩家。 |
scores |
选择在目标中得到特定分数的对象。 该参数可以在一组大括号内指定多个目标,每个目标用逗号分隔。 可以使用“..”表示法指定两个包含值之间的范围,这样“3..7”将检查 3 到 7 之间的值。 可以对给定目标的值取反,以选择与分数不匹配的目标。 请注意,空值不等于取反值。 |
@e[scores={objectiveA=3}] @e[scores={objectiveA=3}] 将选择在“objectiveA”目标中得分为 3 的所有实体。@a[scores={points=4,deaths=!5}] @a[scores={points=4,deaths=!5}] 将选择所有“点数”(points) 分数为 4 且“死亡”(deaths) 分数不为 5 的玩家。@a[scores={points=10..50}] @a[scores={points=10..50}] 将选择“点数”(points) 分数在 10 到 50 之间的所有玩家。@a[scores={deaths=10..,points=..2}] @a[scores={deaths=10..,points=..2}] 将选择所有“死亡”(deaths) 分数不低于 10 且“点数”(points) 分数不超过 2 的玩家。 |
family |
选择属于家族类型的目标,如实体的 minecraft:type_family 组件中所定义。可以对该值取反,以选择非家族类型的目标。 将多个此参数一起使用可进一步限制目标。 |
@e[family=skeleton] @e[family=skeleton] 将选择属于“skeleton”家族的所有实体。@e[family=!monster] @e[family=!monster] 将选择所有不属于“monster”家族的实体。 |
下一步内容?
现在您已经了解了命令,接下来可进一步了解关于常用命令的信息或如何使用命令方块来拓展聊天窗口。
[常用命令](CommandsPopularCommands.md)
[命令方块](CommandBlocks.md)