搜索
教程/命令方块
语言
编辑
< 教程
 本文章介绍的是命令方块使用实例。关于运行命令的方块,请见“命令方块”。关于所有命令及其语法,请见“命令”。
命令方块是一种主要用于冒险模式游玩、多人游戏的自动化和自定义地图的方块。
获取
编辑
拥有管理员权限或开启作弊的单人模式玩家可以在聊天框内输入命令/give @s command_block或者/setblock ~ ~ ~ command_block获取,也可以通过创造模式物品栏获取。
基础
编辑
选择器
编辑
主条目:目标选择器
使用选择器可以代替使用实体名称:
选择器 目标
@a 全部玩家
@p 最近的玩家
@r 随机玩家
@e 全部实体
@s 执行命令的实体(如果命令由命令方块或服务器控制台执行,则不会选中任何实体)
基础命令
编辑
传送
编辑
基础用法(直接传送)
通过使用/tp <x> <y> <z>来传送到指定坐标。其中<y>表示垂直方向的坐标,<x>和<z>分别表示东西和南北方向的坐标,玩家可以通过这个命令传送到(x,y,z)这一个坐标的位置。
增量传送
讲解
若需要以目前站的位置为基准进行传送,需要使用“~”符号并给出增量(若增量为0则可以被省略),增量允许为负。格式:/tp ~<x增量> ~<y增量> ~<z增量>。可以将~视为“原坐标”的意思,即~1相当于“原坐标值 1”。
实例
当玩家处于位于坐标(0,0,0)时,在聊天栏输入/tp @s ~1 ~2 ~3,此时玩家被传送到坐标(1,2,3);因为增量允许为负,因此当玩家位于坐标(0,0,0)时,在聊天栏输入/tp @s ~-1 ~-2 ~-3,此时玩家被传送到坐标(-1,-2,-3)。
增量传送可以与直接传送搭配使用,如/tp @s ~1 100 ~可以将执行目标传送至坐标(x:原坐标 1,y:100,z:原坐标
偏移传送
还可以使用^<左偏移> ^<上偏移> ^<前偏移>的格式组成一个局部坐标,它基于玩家的位置与朝向,例如玩家输入/tp @s ^1 ^2 ^3会被传送至其面朝方向左方1格,上方2格,前方3格的位置。
偏移传送不能与直接传送和增量传送混搭使用。
拓展
可以使用/execute模拟对应目标输入命令,使得增量/偏移传送在命令方块中有效(因为命令方块坐标&朝向不变,增量/偏移传送相当于多此一举用法),并将效果应用于其他实体。
屏蔽命令方块输出
编辑
命令方块执行成功时,会在聊天栏中输出执行信息,如:“[@]:已召唤1个实体”。
这项功能由游戏规则项CommandBlockOutput控制开关,默认为true(即开启)。
通过gamerule命令将其设为false可关闭命令方块输出。若需要重新开启命令方块输出,则需要将其重新设为true。即:/gamerule CommandBlockOutput true(开启)/false(关闭)
屏蔽命令方块输出可以为玩家带来更好的游戏体验。但也会使玩家难以直接了解命令方块的执行结果。
重生保留物品与重生点设置
编辑
/gamerule keepInventory true可以在玩家死后保存背包物品。同时记录点可以用/spawnpoint来做。
实例
编辑
以下列出了一些使用实例:
给予一个随机玩家一个物品并告诉所有人
编辑
给予一个随机玩家五个曲奇,然后告诉所有人。
搭建:
/tag @a[tag=cookie] remove cookie
/say @a[tag=cookie] 已被给予五个曲奇。
/give @a[tag=cookie] minecraft:cookie 5
/tag @r add cookie
自动人行道
编辑
类似于电梯的概念,用于使实体往x或z坐标移动。
初始化工作:
使用/fill <x> <y> <z> <x2> <y2> <z2> <方块>[仅Java版]或/fill <x> <y> <z> <x2> <y2> <z2> <方块> <数据值>[仅基岩版]命令填充一片方块。
搭建:
/execute as @e at @s if block ~ ~-1 ~ <方块> run tp @s ~-0.1 ~ ~
现在站到填充的方块上,你就会自动向指定的方向移动。
命令中的~-0.1 ~ ~可以替换为你想要的坐标,坐标的格式可以参照上方的“传送”段落。
无线红石
编辑
输入
编辑
可以使用/execute[仅Java版]命令实现无线红石输入:
/execute if block 123 12 123 stone_button[powered=true] ...[仅Java版]
输入要测试的特定方块的坐标和名称,在本例中是位于123 12 123的石质按钮。这可以使用在任何可更改方块状态的方块上。测试所得的值根据方块状态变化。
输出
编辑
可以使用/setblock命令实现无线红石输出。图中命令的坐标需要根据实际情况更改。

停止状态

触发状态

触发状态命令

停止状态命令
入门套件
编辑
你可以使用标签来区分“已领取套件的玩家”和“未领取套件的玩家”。
通过使用参数[tag=!<标签>],选择不带指定标签的玩家,然后把已经领取套件的玩家以同样的标签标记,来在(服务器)地图上制作一个只能获得一次的套件。至于这个标签的名字,你可以随意取,不过最好使用英文。
搭建:
/tag @a add <用以区分的标签>
与上一个命令方块中的格式相同,有几个物品就放几个这样的命令方块。
/give @a[tag=!<用以区分的标签>,distance=..<半径>] <物品ID> <数量>
方块踩踏事件
编辑
/execute as @a at @s if block ~ ~-1 ~ iron_block run tp @s ~ ~3 ~[仅Java版]
或/execute @a ~ ~ ~ detect ~ ~-1 ~ iron_block 0 tp @s ~ ~3 ~[仅基岩版]
以上命令会让踩在铁块上的玩家向上传送三格。也可以将tp @s ~ ~3 ~改为其他内容来达到不同效果,或将iron_block改为其他方块。
在单机非创造模式地图中使用命令方块
编辑
通过/gamemode也可以使你在单机非创造性地图中使用命令方块,简单的切换游戏模式可以使用/gamemode creative然后将命令方块的命令设置为你想要的任何内容,最后使用/gamemode survival切换回生存模式。命令方块只是需要在创造模式下设置,但切换至生存模式仍然可以正常运作。
他也可以被用于传送(例如一个遥远的要塞,在地下挖矿,或者在一个浮空岛)。如果他需要你花了很长时间才能到达那里,然后你不介意他是一种软作弊,这样你可以建立起一个传送系统。请确保你在设置命令方块的时候是创造模式(请使用/gamemode creative。如果你并没有开启作弊选项,打开局域网模式设置打开作弊),但你还是可以在生存模式中使用它。在打开的命令方块的界面中输入/tp @p <x> <y> <z>。然后,用红石激活这个命令方块,然后你就会被送到远处的目的地。你可以建立多种不同的传送器。这也可以用于跨越大面积的大型项目,或者将箱子从旧房子转移到新房子。
定格动画
编辑
通过使用/clone,或者Minecraft地图编辑器,例如Minecraft地图编辑器可以复制一张图片(利用方块做出来的绘画),然后粘贴到其他地方(一般紧挨着上一个图画),并变动绘画的一些方块,利用一些压力板或者绊线钩,在玩家短时间欣赏绘画后,命令方块做出/clone命令,将设定好的图片复制到观看区域。如果大量的复制粘贴这样的零件,按顺序地复制方块并稍稍弄出一点点的延迟,那么玩家就会产生幻觉,认为这个绘画是在运动的,这就是利用命令方块来实现定格动画技术。
自动公告
编辑
通过在命令方块中使用命令/tellraw @a {"text":"<信息>"}[仅Java版]或/tellraw @a {"rawtext":["text":"<信息>"]}[仅基岩版]可以创造一个无人自动广播(需要连接循环红石等不断发出激活信号的红石元件)。还可以加入一些判断,如在第一位玩家抵达终点时向所有人广播。
特殊的彩色文本
编辑
参见:格式化代码
虽然你不能于命令方块直接输入彩色/粗体/斜体文本,但是可以直接利用原始JSON文本来弄出彩色/粗体/斜体字体。也可以使用“§”[仅基岩版]或“\u00a7”来进行文字的变色、甚至是乱码(§k[仅基岩版]或\u00a7k)。
安全扫描
编辑
使用/clear命令,你可以清除玩家背包中的某物品。具体步骤是这样的,使用/clear <@a|玩家名称> <清除的物品名>。如果想实现自动清理危险品可以将该命令方块设为循环型。
你甚至还可以进一步将被清除危险品的玩家显示在聊天框中:
在Java版中,可以借助命令统计值来完成:
初始化工作:建立一个记分项。
搭建:
/execute if entity @a[scores={<记分项>=1}] run tellraw @a [{"text":"已清除"},{"selector":"@a[scores={<记分项>=1}]"},{"text":"身上的危险品"}]
/execute as @a store success score @s <记分项> run clear @s <清除的物品名>
在基岩版中,需要用到“无序遍历”的方法完成:
搭建:
/tag @a remove <标签>
/tellraw @a {"rawtext":[{"text":"已清除"},{"selector":"@a[tag=<标签>]"},{"text":"身上的危险品"}]}
/clear @a[tag=<标签>] <清除的物品名>
/tag @a add <标签>
区域内检测
编辑
在选择器参数中,x、y、z、dx、dy、dz、r和rm[仅基岩版]或x、y、z、dx、dy、dz和distance[仅Java版]可用于检测玩家是否在指定的区域内
可以用命令方块的范围限制来制作一个“围栏”,通过围栏的玩家会变成指定游戏模式。比如这样:
/gamemode <游戏模式> @a[x=<区域中心X>,y=<区域中心Y>,z=<区域中心Z>,distance=<距离下限>..<距离上限>][仅Java版]
或/gamemode <游戏模式> @a[x=<区域中心X>,y=<区域中心Y>,z=<区域中心Z>,rm=<距离下限>,r=<距离上限>][仅基岩版]
这样放置两个搜索区域不重合的命令方块,就可以将规定半径内的玩家改变模式。
也可以是一个长方体区域,比如这样:
/effect give @a[x=<X>,y=<Y>,z=<Z>,dx=6,dy=3,dz=6] strength 1 2 true[仅Java版]
或/effect @a[x=<X>,y=<Y>,z=<Z>,dx=6,dy=3,dz=6] strength 1 2 true[仅基岩版]
将使所有在方块区域(X~X 6,Y~Y 3,Z~Z 6)内的玩家获得1秒力量II效果。
PVP玩法
编辑
使用命令/gamerule keepInventory true来关闭玩家死亡后的物品掉落(同样在重生后会保留物品和经验等,所以需要在玩家重生后清空背包)。使用/give @p <物品ID>可以给予玩家武器(可以添加NBT标签),你可以设计一套完善的职业系统,玩家选择不同的职业会有不同的装备。使用/spawnpoint <x> <y> <z>设置玩家重生地点,使用/tp <x> <y> <z>移动地图中的玩家到指定区域。
时间与天气
编辑
时间倒流
编辑
使用方块类命令(/setblock、/fill和/clone)来更改玩家所处的场景,并且时间也被设置为开始的时刻,这就好像是时间倒退