本站文本内容除另有声明外,转载时均必须注明出处,并遵守CC BY-NC-SA 3.0协议。(转载须知
本站是中文Minecraft Wiki的镜像站,与Mojang AB、Gamepedia没有从属关系。(免责声明

命令方块

来自Minecraft WIKI
跳到导航 跳到搜索
页面贡献者 :
中文mcwiki机器人
命令方块
Impulse Command Block.gifChain Command Block.gifRepeating Command Block.gif
Conditional Impulse Command Block.gifConditional Chain Command Block.gifConditional Repeating Command Block.gif
命令方块连锁型命令方块循环型命令方块
稀有度

史诗

透明

亮度

0

爆炸抗性

3,600,000

硬度

-1

工具

可再生

可堆叠

是(64)

可燃尽

可被熔岩点燃

掉落物

自身

方块实体ID

command_block

数据值

数据值

命名空间ID

数据值

Jeb twitter.jpg 那么这些方块将可以通过红石信号控制来执行命令。只要使用恰当的命令,很多东西都能被编程。
——Jeb关于命令方块的宣告 [1]

命令方块(Command Block)是一种用以执行命令方块。因为生存模式中只能通过作弊获得,它常用在多人服务器与自定义地图中。

获取

命令方块可以通过选取方块键或使用命令(如/give @s minecraft:command_block‌‌[仅Java版]/give @s command_block‌‌[仅基岩版])获得。

就像其他的方块实体一样,命令方块有对应的方块实体,能够存储NBT数据,使用ctrl + 选取方块会复制命令方块内的命令和设置。这允许它被放置在别的地方时无须重新输入里面的数据。

命令方块不在创造模式物品栏中,不能在生存模式中或以非管理员身份破坏,不能被点燃,有和基岩一样的爆炸抗性。命令方块不能被活塞推动。

用途

为了避免啰嗦,以下段落可能对带类型的命令方块进行缩写

例如,连锁型命令方块称为连锁方块,等等

参见:命令教程/命令方块

命令方块可以被红石信号开启。此项没有权限限制,可以被一些通常情况不能使用命令的玩家执行一个特定的命令(比如,允许所有人通过/give获得一件特定的物品,而不是让他们用/give获得任何他们想要的东西)。

命令方块会拥有朝向(facing),决定哪个连锁方块会受到感应,“条件制约”模式的命令方块会受哪个命令方块控制。

设置

命令方块GUI

要输入或修改命令,对命令方块点击使用键以打开命令方块GUI(图形用户界面)。GUI只会在玩家处于创造模式, 拥有相关权限才会打开。在单机游戏里,作弊必须开启才可以编辑命令方块。在多人游戏中,只能由创造模式中的管理员所编辑。为了使命令方块能工作,以下在server.properties的配置必须设置为:

  • enable-command-block必须为true
  • op-permission-level必须为2及以上(默认为4)
控制台命令
命令可被输入到第一个文本框。命令方块的命令长度限定在32,500个字符以内,但这个文本框一次只能显示其中的一小段。按Tab ↹可以补全命令且循环代入可选项。
命令方块内的命令可以加斜杠前缀(/),就像在聊天框使用时的那样,但这不是必需的。
在命令文本框下是一些如何使用目标选择器的小提示。
上一个输出
下方的文本框显示上一个命令的输出。这里的文本无法编辑。
文本框右边的按钮设置上一个输出是否储存并显示。它设置输出将隐藏时为O(默认),将显示时为X。当世界中有很多命令方块,尤其是电路高速运转时,不显示输出可以减少内存使用以处理很多请求。
脉冲/循环/连锁
点击“脉冲/连锁/循环”按钮可更改命令方块类型。默认为“脉冲”,但非默认类型的命令方块也能被放置。命令方块改变类型时也会改变颜色:
  • “脉冲”方块是橙色的。这种方块是“标准”的命令方块,激活一次执行一次命令。
  • “连锁”方块是绿色的。这种方块只在指向它的方块执行命令时才会执行命令。这不同于条件制约模式,连锁方块检测的是指向着它的命令方块,而不是在它后面。指向它的命令方块不必是连锁方块。
  • “循环”方块是紫色的。这种方块被激活时每一游戏都执行一次命令。
条件制约/不受制约
上方:“不受制约”模式的命令方块 下方:“条件制约”模式的命令方块
点击“条件制约/不受制约”按钮来改变命令方块的条件制约行为:
  • “条件制约”:只有当背后的命令方块成功执行命令时才会执行命令 ("背后" 的意思是命令方块的指向的反方向,无视连锁方向)。
  • “不受制约”(默认):命令方块将忽略背后的方块。
保持开启/红石控制
点击“保持开启/红石控制”按钮改变命令方块的开启需求条件:
  • “红石控制”(脉冲方块和循环方块的默认设置):命令方块必须像红石机械一样激活才能执行命令。
  • “保持开启”(连锁方块的默认设置):命令方块甚至在没有红石信号时也会保持为开启状态 (连锁型命令方块将在感应后执行命令, 循环型命令方块将在每一游戏刻执行一次命令(每秒20次),脉冲型命令方块在设置完毕后将立即激活,且此后将无法再次执行)。
完成
点击“完成”按钮或按↵ Enter以保存命令并退出命令方块GUI。
取消
点击“取消”按钮或按Esc在不保存任何修改的情况下退出命令方块GUI。

激活

命令方块属于红石机械 且能由以下物件激活:

命令方块有1游戏刻的延迟,当它受到红石更新时将在1游戏刻后做出反应(激活或撤销激活)。

当被激活时,命令方块将尝试执行它的命令。激活后的动作将取决于命令方块的类型:

  • 命令方块(“脉冲型”)会在刚激活时尝试执行命令一次。
  • 连锁的命令方块(“连锁型”)将在指向它的命令方块执行命令后才会执行命令。
  • 循环中的命令方块(“循环型”)将会在每个游戏刻都尝试执行一次命令直到不再被激活为止。

连锁执行

如果一个指向连锁方块的命令方块被激活了,它将向连锁方块发出准备执行命令的信号。连锁方块只有在被激活开启时,在“条件制约”模式下还要在背后的命令方块成功执行命令时(背后针对指向而言,不是说某个命令方块接入连锁的方向),才会执行命令。不管这个连锁方块是否执行命令,只要指向另一个连锁方块,它也同样会发送出准备执行命令的信号。

连锁中的方块将在同一游戏刻执行命令。连锁执行的信号无法传递给一个已经在这个游戏刻执行过命令的方块。

输出

当激活时,命令方块可以有几种不同类型的输出:

红石比较器
命令方块可以向背对它的红石比较器输入一个信号,强度取决于上一个命令的执行情况的信号(例如,被命令所影响的玩家数)。
信号强度一直根据上一个命令的执行情况保持,即使是在命令方块关闭之后。
消息
输出消息描述执行命令的成功与否,会有几种输出位置:
上一个输出:输出消息都会写入命令方块GUI的“上一个输出”文本框里。
聊天框:输出信息将在单人模式下或多人模式下对所有管理员写入聊天框,除非已经用/gamerule commandBlockOutput false拦截。一些命令可能会在聊天框写入其正常工作时的附带文本,这不会被拦截。(比如,/say命令将在所有玩家的聊天框写入消息)。带有执行者的名字作为前缀的聊天信息(比如命令/me/say/tell)会使用@作为执行者名字。如果命令方块在放置前已经被命名过,那么就使用这个名字。
日志:输出信息会写入到多人联机服务器日志,除非使用/gamerule logAdminCommands false拦截。
命令统计
Information icon.png
此特性为基岩版独有。
命令方块可以推送多种成功结果到记分板目标,包括:
  • SuccessCount:成功的次数(之前也能用红石比较器输出,但不会限制到15)
  • AffectedBlocks:被修改的方块的个数
  • AffectedEntities:被修改的实体的个数,包括玩家
  • AffectedItems:被修改的物品的个数
  • QueryResult:命令的返回值
要使用的目标可以用命令/stats确定或直接用命令/blockdata修改命令方块的NBT数据。

备注

以下命令不能在命令方块中使用:/ban/banlist/ban-ip/debug/deop/kick/op/pardon/pardon-ip/publish/reload/save-all/save-off/save-on/stop/whitelist(也就是/debug/publish和所有除了/list外的多人游戏命令)。

以下命令可以使用但功能受限(它们的输出只会在命令方块的“上一个输出”文本框显示而不是聊天框):/help/seed/list/scoreboard objectives/scoreboard players/team list

以下命令会在输出中用到命令方块的名字(默认为@):/me/say/tell

彩蛋

在命令方块中不加“/”运行命令“Searge”会把上一个输出设为“#itzlipofutzli”。另外,如果在命令方块中运行/help,它会给出一些带有“Searge says:(Searge说:) ”前缀的信息。

数据值

命令方块拥有ID名称minecraft:command_block并在方块数据方块实体中有更深的定位。命令方块也有 方块状态旨在未来的版本中取代方块数据,

ID

Java版

名称命名空间ID翻译关键字
命令方块command_block block.minecraft.command_block
连锁型命令方块chain_command_block block.minecraft.chain_command_block
循环型命令方块repeating_command_block block.minecraft.repeating_command_block
名称命名空间ID
方块实体command_block

基岩版

名称命名空间ID数字ID翻译关键字
命令方块command_block 137tile.command_block.name
连锁型命令方块chain_command_block 189tile.chain_command_block.name
循环型命令方块repeating_command_block 188tile.repeating_command_block.name
名称命名空间ID
方块实体command_block

方块数据

参见:数据值

命令方块的方块数据用于确定方块是否处于开启状态:

位元 数值
0x1 在命令方块已经在上一次激活了当前命令时设定
0x2
0x4
0x8
(未使用)

在1.9:

位元 数值
0x1
0x2
0x4

3个位元的空间储存了命令方块的朝向

  • 0: 朝下
  • 1: 朝上
  • 2: 朝北
  • 3: 朝南
  • 4: 朝西
  • 5: 朝东

6 和 7 未被使用但会造成命令方块分别朝下和朝上

0x8 未使用但设置后造成命令方块的朝向相似于那些没有设置位元的方块。

方块实体

参见:区块格式§方块实体

命令方块有包含方块附加数据的方块实体。方块的方块实体ID为command_block

  • 方块实体数据
    • 方块实体共通标签 see Template:Nbt inherit/blockentity/template
    •  CustomName:非必项。当前命令方块名称的JSON文本组件,取代由命令方块执行了/say/tell等命令后默认出现的“@”符号。
    •  Command:命令方块中的命令。
    •  SuccessCount:表达用红石比较器输出的模拟信号强度。只在命令方块用红石信号激活后更新。
    •  LastOutput:上一条命令方块生成的输出。游戏规则commandBlockOutput为false时依旧会储存。在右键打开命令方块GUI时显示,包含生成输出的时间戳
    •  TrackOutput:1或0(true/false) - 决定LastOutput是否储存。可以在GUI中点击"上一个输出"文本框旁的按钮进行开关。按钮上的标志指示出目前的状态:O为true,X为false。
    •  powered:1或0(是/否) - 决定命令方块现在的状态是否被红石所激活。
    •  auto:1或0(是/否) - 允许命令方块在没有红石信号的情况下激活命令。
    •  conditionMet:1或0(是/否)- 指示条件命令块在上次激活时是否满足其条件。如果不是条件命令块,则为1。
    •  UpdateLastExecution:1或0(是/否) - 默认为是。如果设为否,创建循环后同一个命令方块可以在一刻内运行多次。
    •  LastExecution:储存一个连锁型命令方块最后被执行的游戏刻。


方块状态

参见:方块状态
名称 默认值 接受值 描述
conditionalfalsetrue
false
当命令方块为条件制约模式为真
facingnorthnorth
south
east
west
up
down
命令方块的指向

历史

参见:命令§历史
Java版
2012年7月27日Jeb开始发一些关于扩展生存模式的新方块的推文。他开始推送一些图片,想法和方块将来用法的线索。
2012年7月31日Notch在他的AMA中暗示这个方块会在1.4中出现。
1.4.212w32aImpulse Command Block JE1.png 加入了命令方块。
1.513w03a命令方块的成功运行可用红石比较器输出信号。
13w04a铁砧重命名的命令方块在聊天框中会用其名字代替@
1.6.113w19a命令方块在生存模式中不再可破坏,也不会在爆炸中破坏,但蓝色的凋灵之首除外。
1.7.213w37a加入了一个显示上一个输出的框。
增加游戏内输入命令的字符限制从256到16,369。使用第三方编辑器可以达到32767个字符。
1.814w07a发射器会放置命令方块,而不是发射它。
14w20a移除了游戏内16369的字符限制,允许达到最高的32767个字符。
14w27a加入了CommandStatsNBT标签。
1.8.6发射器不再放置命令方块。[2]
1.915w34a
生成缩略图出错:无法找到文件
生成缩略图出错:无法找到文件
加入了连锁型命令方块和循环型命令方块。
加入了方块朝向。
生成缩略图出错:无法找到文件
更改了命令方块材质。
15w34b加入了条件制约模式。
15w35a
生成缩略图出错:无法找到文件
生成缩略图出错:无法找到文件
生成缩略图出错:无法找到文件
更改了所有命令方块的材质。
加入了保持开启和红石控制选项。加入了autoNBT标签负责控制此项。
设置为条件制约模式后,命令方块箭头尾部会弯曲。
15w36a不能使用像/give这类命令的玩家不再能放置命令方块。
15w36d不同类型的命令方块现在在地图上将显示不同的颜色。
16w02a现在在命令方块中运行/help将随机使用各种不同的幽默短语作为上一个输出。
16w04a在命令方块中不带“/”将“Searge”作为命令运行,输出会变成“#itzlipofutzli”。
1.1116w32a方块实体ID由Control更改为command_block
1.1217w16a连锁型命令方块不再安排命令链中的命令在下一刻执行了,现在这些命令会在被读取后的同一刻执行。这使之后放置的方块可以经由之前放置的方块被修改,由此可以在一个游戏刻内实现分支、循环等手法。
加入了游戏规则maxCommandChainLength以决定连锁型命令方块运行的限度。
17w17a加入了NBT标签UpdateLastExecutionLastExecution,可以控制对存储连锁型命令方块最后执行的那一刻的跟踪。
pre6命令方块中使用Tab键来自动补全的命令名称不再添加/前缀。
1.1317w47a扁平化之前,命令方块、循环型、连锁型命令方块的数字ID分别为137、210、211。
pre1玩家现在可以重新用tab键补全命令了。
1.1418w43a
生成缩略图出错:无法找到文件
生成缩略图出错:无法找到文件
生成缩略图出错:无法找到文件
更改了所有命令方块的材质。
18w47bImpulse Command Block TextureUpdate.png
生成缩略图出错:无法找到文件
更改了脉冲型和循环型命令方块的材质。
携带版
1.0.5alpha 1.0.5.0
生成缩略图出错:无法找到文件
生成缩略图出错:无法找到文件
生成缩略图出错:无法找到文件
加入了所有种类的命令方块。
基岩版
1.8.0beta 1.8.0.8命令方块现在的默认名称为!而不是@
1.10.0beta 1.10.0.3Impulse Command Block TextureUpdate.png
生成缩略图出错:无法找到文件
生成缩略图出错:无法找到文件
更改了材质。
1.12.0beta 1.12.0.2加入了自动完成功能。
加入了延迟选项。
原主机版
TU19CU71.12Patch 1
生成缩略图出错:无法找到文件
加入了命令方块。
命令方块没有任何功能。

画廊

参考