Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement

Template:BlockTileEntity

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

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

所以这些方块可以用红石信号来执行命令行。只要使用恰当的命令,一切皆可编程

——Jeb评论于命令方块 [1]

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

获取

命令方块可以通过选取方块键或各种命令,比如/give @p minecraft:command_block获得。

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

用途

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

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

设置

Command Block GUI

命令方块GUI

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

  • enable-command-block 必须为true
  • op-permission-level 必须为2 及以上 (默认为 4)
控制台命令
命令可被输入到第一个文本框。 命令方块的命令长度限定在32,500个字符以内,但这个文本框一次只能显示其中的一小段。自从1.9,按 Tab ↹ 可以补全命令且循环代入可选项。
命令方块内的命令需要加斜杠前缀(/),就像在聊天框使用时的那样,不过加了也依旧能用。
在控制台命令文本框下是一些如何使用目标选择器的小提示。
上一个输出
下方的文本框显示上一个命令的输出(成功或是失败)。这里的文本无法编辑。
文本框右边的按钮设置上一个输出是显示还是隐藏。它设置输出将隐藏时为 O(默认),将显示时为X。当世界中有很多命令方块,尤其是电路高速运转时, 不显示输出可以减少内存使用以处理很多请求。
脉冲/循环/连锁
点击"脉冲/连锁/循环"按钮可更改命令方块类型。默认为“脉冲”,但非默认类型的命令方块也能被放置。命令方块改变类型时也会改变颜色:
  • “脉冲”方块是橙色的。这种方块是“标准”的命令方块,功能和它的前身差不多,激活一次执行一次命令。
  • “连锁”方块是绿色的。这种方块只在指向它的方块成功执行命令时才会执行命令。这不同于它在条件制约模式时,会检测什么在指向着它,而不仅仅是靠在它之后。指向它的命令方块也不必一定是连锁方块本身来触发连锁执行。
  • “循环”方块是紫色的。这种方块被激活后的每一都执行命令,减小了红石时钟设备的重要性。
条件制约/不受制约
Command block textures

上方: "不受制约"模式的命令方块 下方: "条件制约"模式的命令方块

点击“条件制约/不受制约”按钮来改变命令方块的条件制约行为
  • “条件制约”: 命令方块只有在背后的命令方块成功执行命令时才会执行命令 ("背后" 的意思是命令方块前指的对立方向,无视连锁方向,甚至连锁已被占用也一样)。
  • “不受制约”(默认): 命令方块将忽略背后的方块。
保持开启/红石控制
点击“保持开启/红石控制”按钮改变命令方块的开启需求条件:
  • “红石控制”(脉冲型命令方块的默认设置):命令方块必须像红石机械一样激活才能执行命令。
  • “保持开启”(连锁型命令方块与循环型命令方块的默认设置):命令方块甚至在没有红石信号时也会保持为开启状态 (连锁型命令方块将在感应后执行命令, 循环型命令方块将在每一游戏刻执行一次命令(每秒20次),脉冲型命令方块激活后将不能再次激活)。
完成
点击“完成”按钮或按 ↵ Enter 以保存命令并退出命令方块GUI。
取消
点击“取消”按钮或按Esc 在不保存任何修改的情况下退出命令方块GUI。

激活

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

另外,当命令方块由命令复制到一个会被激活的位置时,新的命令方块只有在原有命令未被执行过时才会执行命令。 (可从F3调试屏幕的 "triggered"看到)。

不像除了音符盒的其它红石元件,命令方块可在每个游戏刻激活一次(每秒20次,在不卡顿的情况下)。然而,在两个游戏刻中都激活一次需要使其在同一刻钟从被激活转为未激活状态(见fill+replace高频的实例)。

处于"保持开启"的命令方块将一直被激活。默认的模式为“红石控制”,也就是需要充能才能运行。

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

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

连锁执行

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

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

输出

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

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

备注

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

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

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

彩蛋

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

数据值

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

ID

命令方块的ID决定于其类型:

命令方块/ID

方块数据

参见:数据值

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

位元 数值
0x1
0x2
0x4

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

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

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

0x8 决定该方块的条件制约状态

方块实体值

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

Java版

  • 方块实体数据
    • 方块实体共通标签
    •  auto:表示此命令方块是否保持开启。
    •  Command:命令方块中的命令。
    •  conditionMet:表示受条件制约的命令方块是否满足条件。如果此命令方块不受制约,此值为true
    •  CustomName:表示当前命令方块名称的JSON文本,默认为“@”。
    •  LastOutput:上一条命令的输出,是一个JSON文本。游戏规则commandBlockOutputfalse时依旧会储存。当 TrackOutputfalse时不存在。
    •  LastExecution:上一条命令执行的时间戳。当 UpdateLastExecutionfalse时不存在。
    •  powered:表示命令方块是否已被激活。
    •  SuccessCount:表示用红石比较器输出的模拟信号强度。只在命令方块激活后更新。
    •  TrackOutput:表示是否储存上一条命令的输出。可以在GUI中点击"上一个输出"文本框旁的按钮进行开关。按钮上的标志指示出目前的状态:O为true,X为false
    •  UpdateLastExecution:表示是否储存上一条命令执行的时间戳。

基岩版

  • 方块实体数据
    • 方块实体共通标签
    •  Command:命令方块内的命令。
    •  Version:数据版本。
    •  SuccessCount:成功次数,表示红石比较器输出的信号强度。
    •  CustomName:命令方块的自定义名称,显示在方块顶部以及GUI内。
    •  LastOutput:由命令方块最新的一行输出的本地化键名。在游戏规则commandBlockOutput被设置为false时仍会储存。在命令方块的GUI中显示。
    •  LastOutputParams:输出的本地化字符串的参数列表。
      • :具体参数。
    •  TrackOutput:用于决定是否储存LastOutput。可以在命令方块UI内的“上一个输出”旁边的按钮进行控制。
    •  LastExecution:存储命令方块最后一次执行命令的时间。
    •  TickDelay:执行每次命令的间隔时间(刻)。
    •  ExecuteOnFirstTick:在保存或激活后在首个刻执行命令时为true。

方块状态

参见:方块状态

Java版

名称 默认值 接受值 描述
conditionalfalsetrue
false
当命令方块为条件制约模式时为“true”
facingnorthnorth
south
east
west
up
down
命令方块的朝向

基岩版

名称对应的附加值位 默认值 接受值附加值位的值 描述
conditional_bit0x8falsefalse
true
0
1
当命令方块为条件制约模式时为“true”
facing_direction0x1
0x2
0x4
00
1
2
3
4
5
0
1
2
3
4
5
命令方块的朝向
  • 0:朝下
  • 1:朝上
  • 2:朝北
  • 3:朝南
  • 4:朝西
  • 5:朝东

历史

JebAdventureModeControlBlockDev1

Mojang发布的第一张命令方块的截图。

JebAdventureModeControlBlockDev2

Mojang发布的第二张截图,展示着方块正在给予玩家 玻璃

release
2012年7月27日Jeb开始发一些关于扩展生存模式的新方块的推文。他开始推送一些图片,想法和方块将来用法的线索
2012年7月31日Notch在他的AMA中暗示这个方块会在1.4中出现。
1.4.212w32aFile:Grid Command Block.png加入了命令方块。
1.513w03a命令方块的成功运行可用 红石比较器输出信号。
13w04a铁砧重命名的命令方块在聊天框中会用其名字代替@。
1.6.113w19a命令方块在生存模式中不再可破坏, 也不会在爆炸中破坏,但蓝色的凋灵骷髅头颅除外。
1.7.213w37a加入了一个显示上一个输出的框。
增加游戏内输入命令的字符限制从256 到 16,369 。使用第三方编辑器可以达到 32,767 个字符。
1.814w07a发射器 将会放置命令方块,而不是发射它。
14w20a移除了游戏内16,369的字符限制, 允许达到最高的 32,767 个字符。
14w27a加入了CommandStats NBT 标签。
1.8.6发射器不再放置命令方块。[2]
1.915w34aFile:Chain Command Block 15w34a.pngFile:Repeating Command Block 15w34a.png加入了连锁型命令方块和循环型命令方块。
加入了方块朝向。
File:Impulse Command Block 15w34a.png升级了命令方块材质。
15w34b加入了条件制约模式。
15w35aImpulse Command BlockChain Command BlockRepeating Command Block升级所有三种命令方块的材质。
加入了保持开启和红石控制选项。加入了 auto NBT 标签负责控制此项。
设置为条件制约模式后,命令方块箭头尾部会弯曲。
15w36a不能使用像/give这类命令的玩家不再能放置命令方块。
15w36d不同类型的命令方块现在在地图上将显示不同的颜色。
16w02a现在在命令方块中运行/help将随机使用各种不同的幽默短语作为先前的输出。
16w04aRunning "Searge" as the command in the command block without a preceding "/" will now set the previous output to "#itzlipofutzli".
1.1116w32a方块实体ID由Control更改为command_block
upcoming
1.1217w16aChains of command blocks no longer schedule their commands to be run in the next tick, they now execute all in the same tick they are read. This allows later blocks in a chain to be modified via earlier blocks, allowing techniques like branching and looping, all in the same tick.
Added maxCommandChainLength game rule to control the max length of such a chain.
17w17aAdded UpdateLastExecution and LastExecution NBT tags, which control the tracking of which tick a chain command block was last executed in.
携带版
1.0.5build 1加入了所有种类的命令方块。

参考


Advertisement