Template:BlockTileEntity
命令方块(Command Block)是一种用以执行命令的方块。因为生存模式中只能通过作弊获得,它常用在多人服务器与自定义地图中。
获取
命令方块可以通过选取方块键或各种命令,比如/give @p minecraft:command_block
获得。
就像其他的方块一样,命令方块能够存储NBT数据,使用ctrl + 选取方块会复制命令方块内的命令和设置。这允许它被放置在别的地方时无须重新输入里面的数据。
命令方块不在创造模式物品栏中,不能在生存模式中或非管理员身份破坏,不能被点燃,有和基岩一样的爆炸抗性。命令方块不能被活塞推动。
用途
例如,连锁型命令方块称为连锁方块,等等
命令方块可以被红石信号所开启。此项没有权限限制,可以被一些通常情况不能使用命令的玩家执行一个特定的命令(比如,允许所有人通过/give
获得一件特定的物品,而不能让他们用/give
获得任何他们想要的东西)。
命令方块会拥有方向(facing),决定哪个连锁方块会受到感应,哪个“条件制约”模式的命令方块执行命令会受其控制。
设置
要输入或修改命令,对命令方块点击使用键以打开命令方块GUI(图形用户界面)。GUI只会在玩家处于创造模式, 拥有相关权限才会打开。在单机游戏里,作弊必须开启使得可以编辑命令方块。在多人游戏中,只能由创造模式中的管理员所编辑。为了使命令方块能工作,以下在server.properties的配置必须设置为:
enable-command-block
必须为true
op-permission-level
必须为2
及以上(默认为4)
- 控制台命令
- 命令可被输入到第一个文本框。命令方块的命令长度限定在32,500个字符以内,但这个文本框一次只能显示其中的一小段。自从1.9,按Tab ↹可以补全命令且循环代入可选项。
- 命令方块内的命令不需要加斜杠前缀(
/
),就像在聊天框使用时的那样,不过加了也依旧能用。
- 在控制台命令文本框下是一些如何使用目标选择器的小提示。
- 上一个输出
- 下方的文本框显示上一个命令的输出(成功或是失败)。这里的文本无法编辑。
- 文本框右边的按钮设置上一个输出是显示还是隐藏。它设置输出将隐藏时为
O
(默认),将显示时为X
。当世界中有很多命令方块,尤其是电路高速运转时,不显示输出可以减少内存使用以处理很多请求。
- 脉冲/循环/连锁
- 点击“脉冲/连锁/循环”按钮可更改命令方块类型。默认为“脉冲”,但非默认类型的命令方块也能被放置。命令方块改变类型时也会改变颜色:
- “脉冲”方块是橙色的。这种方块是“标准”的命令方块,功能和它的前身差不多,激活一次执行一次命令。
- “连锁”方块是绿色的。这种方块只在指向它的方块成功执行命令时才会执行命令。这不同于它在条件制约模式时,会检测什么在指向着它,而不仅仅是靠在它之后。指向它的命令方块也不必一定是连锁方块本身来触发连锁执行。
- “循环”方块是紫色的。这种方块被激活后的每一刻都执行命令,减小了红石时钟设备的重要性。
- 条件制约/不受制约
- 点击“条件制约/不受制约”按钮来改变命令方块的条件制约行为:
- “条件制约”:命令方块只有在背后的命令方块成功执行命令时才会执行命令 ("背后" 的意思是命令方块前指的对立方向,无视连锁方向,甚至连锁已被占用也一样)。
- “不受制约”(默认):命令方块将忽略背后的方块。
- 保持开启/红石控制
- 点击“保持开启/红石控制”按钮改变命令方块的开启需求条件:
- “红石控制”(脉冲型命令方块的默认设置):命令方块必须像红石机械一样激活才能执行命令。
- “保持开启”(连锁型命令方块与循环型命令方块的默认设置):命令方块甚至在没有红石信号时也会保持为开启状态 (连锁型命令方块将在感应后执行命令, 循环型命令方块将在每一游戏刻执行一次命令(每秒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:命令的返回值
备注
以下命令不能在命令方块中使用:/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
和 /scoreboard teams list
。
以下命令会在输出中用到命令方块的名字(默认为@
):/me
、/say
和/tell
。
彩蛋
在命令方块中不加“/
”运行命令“Searge”会把上一个输出设为“#itzlipofutzli”。另外,如果在命令方块中运行/help
,它会给出一些带有“Searge says:(Searge说:) ”前缀的信息。
数据值
命令方块拥有ID名称minecraft:command_block
并在方块数据 和 方块实体中有更深的定位。命令方块也有 方块状态旨在未来的版本中取代方块数据,
ID
命令方块的ID决定于其类型:
命令方块/ID
方块数据
命令方块的方块数据用于确定方块是否处于开启状态:
位元 | 数值 |
---|---|
0x1 0x2 0x4 |
3个位元的空间储存了命令方块的朝向
6 和 7 未被使用但会造成命令方块分别朝下和朝上 |
0x8 | 决定该方块的条件制约状态 |
方块实体值
命令方块有包含方块附加数据的方块实体。方块的方块实体ID为command_block
。
- 方块实体数据
- 方块实体共通标签
- auto:表示此命令方块是否保持开启。
- Command:命令方块中的命令。
- conditionMet:表示受条件制约的命令方块是否满足条件。如果此命令方块不受制约,此值为true。
- CustomName:表示当前命令方块名称的JSON文本,默认为“@”。
- LastOutput:上一条命令的输出,是一个JSON文本。游戏规则
commandBlockOutput
为false时依旧会储存。当 TrackOutput为false时不存在。 - LastExecution:上一条命令执行的时间戳。当 UpdateLastExecution为false时不存在。
- 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。
方块状态
名称 | 默认值 | 接受值 | 描述 |
---|---|---|---|
conditional | false | true false | 当命令方块为条件制约模式时为“true” |
facing | north | north south east west up down | 命令方块的朝向 |
基岩版:
名称 | 对应的附加值位 | 默认值 | 接受值 | 附加值位的值 | 描述 |
---|---|---|---|---|---|
conditional_bit | 0x8 | false | false true | 0 1 | 当命令方块为条件制约模式时为“true” |
facing_direction | 0x1 0x2 0x4 | 0 | 0 1 2 3 4 5 | 0 1 2 3 4 5 | 命令方块的朝向
|
历史
Java版 | |||||
---|---|---|---|---|---|
2012年7月27日 | Jeb开始发一些关于扩展生存模式的新方块的推文。他开始推送一些图片,想法和方块将来用法的线索 | ||||
2012年7月31日 | 当Notch在他的AMA中暗示这个方块会在1.4中出现。 | ||||
1.4.2 | 12w32a | File:Grid Command Block.png加入了命令方块。 | |||
1.5 | 13w03a | 命令方块的成功运行可用 红石比较器输出信号。 | |||
13w04a | 用铁砧重命名的命令方块在聊天框中会用其名字代替@。 | ||||
1.6.1 | 13w19a | 命令方块在生存模式中不再可破坏, 也不会在爆炸中破坏,但蓝色的凋灵骷髅头颅除外。 | |||
1.7.2 | 13w37a | 加入了一个显示上一个输出的框。 | |||
增加游戏内输入命令的字符限制从256 到 16,369 。使用第三方编辑器可以达到 32,767 个字符。 | |||||
1.8 | 14w07a | 发射器 将会放置命令方块,而不是发射它。 | |||
14w20a | 移除了游戏内16369的字符限制, 允许达到最高的32767个字符。 | ||||
14w27a | 加入了CommandStats NBT 标签。 | ||||
1.8.6 | 发射器不再放置命令方块。[2] | ||||
1.9 | 15w34a | File:Chain Command Block 15w34a.pngFile:Repeating Command Block 15w34a.png加入了连锁型命令方块和循环型命令方块。 | |||
加入了方块朝向。 | |||||
File:Impulse Command Block 15w34a.png升级了命令方块材质。 | |||||
15w34b | 加入了条件制约模式。 | ||||
15w35a | 升级所有三种命令方块的材质。 | ||||
加入了保持开启和红石控制选项。加入了 auto NBT标签负责控制此项。 | |||||
设置为条件制约模式后,命令方块箭头尾部会弯曲。 | |||||
15w36a | 不能使用像/give 这类命令的玩家不再能放置命令方块。 | ||||
15w36d | 不同类型的命令方块现在在地图上将显示不同的颜色。 | ||||
16w02a | 现在在命令方块中运行/help 将随机使用各种不同的幽默短语作为上一个输出。 | ||||
16w04a | 在命令方块中不带“/ ”将“Searge”作为命令运行,输出会变成“#itzlipofutzli”。 | ||||
1.11 | 16w32a | 方块实体ID由Control 更改为command_block 。 | |||
1.12 | 17w16a | 连锁型命令方块不再安排命令链中的命令在下一刻执行了,现在这些命令会在被读取后的同一刻执行。这使之后放置的方块可以经由之前放置的方块被修改,由此可以在一个游戏刻内实现分支、循环等手法。 | |||
添加了游戏规则maxCommandChainLength 以决定连锁型命令方块运行的限度。 | |||||
17w17a | 加入了NBT标签UpdateLastExecution 和LastExecution ,可以控制对存储连锁型命令方块最后执行的那一刻的跟踪。 | ||||
pre6 | 命令方块中使用Tab键来自动补全的命令名称不再添加/ 前缀。 | ||||
1.13 | 17w47a | 由于扁平化,命令方块、循环型、连锁型命令方块的数字ID分别更改为137、210、211。 | |||
pre1 | 玩家现在可以重新用tab键补全命令了。 | ||||
携带版 | |||||
1.0.5 | build 1 | 加入了所有种类的命令方块。 |