Minecraft Wiki

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

了解更多

Minecraft Wiki
注册
Advertisement
可打印版不再被支持且可能有渲染错误。请更新您的浏览器书签并改用浏览器默认的打印功能。
Disambig gray  本文章介绍的是命令方块使用实例。关于运行命令的方块,请见“命令方块”。关于所有命令及其语法,请见“命令”。

命令方块是一种主要用于冒险模式游玩、多人游戏的自动化和自定义地图的方块。

获取

拥有管理员权限或开启作弊的单人模式玩家可以在聊天框内输入命令/give @s command_block或者/setblock ~ ~ ~ command_block获取,也可以通过创造模式物品栏获取。

基础

选择器

主条目:目标选择器

使用选择器可以代替使用实体名称:

选择器 目标
@a 全部玩家
@p 最近的玩家
@r 随机玩家
@e 全部实体
@s 执行命令的实体(如果命令由命令方块或服务器控制台执行,则不会选中任何实体)

基础命令

传送

你可以通过使用/tp <x> <y> <z>来传送。其中<y>表示垂直方向的坐标,<x><z>分别表示东西和南北方向的坐标,玩家可以通过这个命令传送到(x,y,z)这一个坐标的位置。如果要以目前站的位置为基准进行传送的话就只要在其(x,y,z)坐标前面加上一个~即可,例如/tp ~<x> ~<y> ~<z>。如果当命令方块坐标(x,y,z)位于(1,2,3)时输入/tp @p ~3 ~4 ~5,这时他会被传送到(4,6,8)这个坐标,和玩家输入/tp @s 4 6 8是一个效果。还可以使用^<左偏移> ^<上偏移> ^<前偏移>的格式组成一个局部坐标,它基于玩家的位置与朝向,例如玩家输入/tp @s ^1 ^2 ^3会被传送至其左方1格,上方2格,前方3格的位置。(可使用/execute模拟玩家输入命令)

屏蔽命令方块输出

命令方块被触发时,会自动在聊天栏中输出一条信息,如:“[@]:已召唤1个实体”。

可以通过此命令屏蔽命令方块输出:/gamerule commandBlockOutput false

屏蔽命令方块输出可以给玩家带来更好的游戏体验。但将会使玩家难以直接了解命令方块的执行结果。

/gamerule commandBlockOutput true来恢复命令方块输出。

重生保留物品与记录点

/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 ~ ~[仅Java版]
/execute @e ~ ~ ~ detect ~ ~-1 ~ <方块> <数据值> 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、​rrm[仅基岩版]x、​y、​z、​dx、​dy、​dzdistance[仅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)来更改玩家所处的场景,并且时间也被设置为开始的时刻,这就好像是时间倒退。 (可以广泛用于剧情RPG地图)

时间加速

/time add 3500

时间会加速变化,你可以清楚地看到日月迅速升起落下的情景。(可以用在叙事故事类地图中)

轻松设置日/夜

在一片开阔且露天的场地上放置一个命令方块。在命令方块上放置阳光探测器,然后按下使用键,将其设置为反向阳光探测器。在命令方块中输入/time set day。或者你希望永远是夜晚,你可以直接放置一个阳光探测器,然后在命令方块中输入/time set night

天气机

使用/weather来开始或者结束降雨(雷雨)合理安排这些命令的话会十分有用,你可以随自己的意愿开始或停止降雨。这个技术可以用于村民和一些由降水控制的红石机械,不用输入任何命令就可以控制天气(需要管理员激活命令方块自动执行),合理利用将会十分有效,比如在森林火灾时或者在雨天刷怪。

对于不同游戏模式玩家的控制

使用值[gamemode=creative][仅Java版][m=1][仅基岩版]你就可以设置命令只对创造模式的玩家有效,生存模式就是[gamemode=survival][m=0][仅基岩版]。 例:传送所有创造模式的玩家到254,47,-874,使用的命令为/tp @a[gamemode=creative] 254 47 -874[仅Java版]/tp @a[m=1] 254 47 -874[仅基岩版]

“联合”住宅

建造至少两个建筑物,在房间的入口或者出口设置一个/tp命令的命令方块,你不必将你的建筑都在同一个地方建设,它们可以在任何地方,只需要入口的命令方块传送过去,玩家会忽然觉得外面感觉很小的建筑内部空间竟如此之大。用这种方法联合多个建筑,可用作与服务器或单人地图中的场景瞬移。

睡觉模拟

使用/spawnpoint可以直接设置出生点,再使用/time set day命令,就可以模拟出睡觉的效果了。

检测世界是否为和平难度

敌对生物检测法

创建一个攻击型生物,把它放在压力板上。(请确保它会保持始终按下状态,所以一定要确保它不能跳或走开)。做一个红石电路,让压力板在没有接收到红石信号的时候激活命令方块。命令方块里设置一个消息,通知玩家的地图由于难度切换到了和平难度导致损坏,需要的怪物已经消失,请重新下载这个地图。

命令查询法

Information icon
此特性为Java版独有。

使用无参数的/difficulty命令可以返回当前的游戏难度。前接/execute store result ...,会将和平难度以数值0返回。

初始化工作:创建一个记分项。

搭建:

/execute if score <虚拟玩家名(须前后一致)> <记分项> matches 0 run <将执行的命令>
/execute store result score <虚拟玩家名> <记分项> run difficulty

会说话的冒险地图(有一个任务系统!)

/say命令可以直接给玩家发送消息。将命令方块命名后会更好,这样你就不需要放很多的告示牌和页码多到不行的书来告诉玩家游戏规则,你只需要把命令方块放成一条线然后在中间铺红石中继器来弄各个语段之间的延迟即可。

有一些是和NPC配合使用的。想象一下你进了铁匠铺并且你想要让里面的铁匠说些什么。在命令方块出现之前,你需要一些书和告示牌来充当对话的效果,然后在铁匠铺里造些房间并放些杂物,这样会让这个铁匠铺看起来变得非常乱。但是现在,你只需要使用/say命令来制造铁匠说话的效果。也许柜台后面的猪会求饶!让我们再举另外一个例子:你在一家工厂里,一个报警铃的声音提示说工厂陷入危险了。用这个方法在聊天框中告诉玩家,以便保持一个紧张的气氛,特别是如果文字很长时应当用此方法。这同样可以用在定时炸弹装置,如果玩家看到了聊天框中的倒计时,他将可以更好地把情绪带进地图。

最后一点并非不重要,它可以更容易地建立一个任务系统,来让我们的玩家开始进行任务。玩家通过压力板后会用一个有/say命令的命令方块去表达屠夫对玩家的要求,然后获得一个特别的标签(前面的命令在执行时忽略带有这个标签的玩家)。他需要去杀一只。当玩家杀死在指定区域内的猪时,命令方块将会时玩家回到屠宰场之后激活三个命令方块。第一个命令是屠夫感谢玩家的/say命令,第二个命令是使玩家获得奖励的/give命令,最后同样是获得一个特别的标签(前面的命令在执行时忽略带有这个标签的玩家)。除此之外,别忘了使用目标选择器@a[tag=<标签>],使屠夫说出玩家的名字。例如,将命令方块设置为:/say 谢谢,@a[tag=<标签>],你帮我杀了那头猪。,聊天框就会显示:[@]:谢谢, <玩家> 。你帮我杀了那头猪。这让地图变得更酷,看起来像是为玩家制作的,因为上面写着他/她的名字!

建立商店

通过使用/give @p[level=<''等级''>..] <物品> <数量>/experience add @p[level=<''等级''>..] <等级> levels命令可以建立一个商店,举例来说,如果你放了两个命令方块,一个输入/give @p[level=5..] grass_block 64命令,另外一个输入/experience add @p[level=5..] -5 levels命令,并连接到相同的红石电路,当命令方块被激活后,会从等级高于5等的玩家扣除5等等级,并给玩家64个草方块。

  • 通过使用命令/experience add @p[level=3..] -3 levels将经验减去作为货币。level=后面的范围是命令执行所需的最低经验。

可以使用命令方块创建出售任何物品的自定义村民[仅Java版]。 例如:
/summon minecraft:villager ~2 ~ ~ {VillagerData:{profession:"armorer"},CustomName:'"BLACKSMITH"',CustomNameVisible:0,Offers:{Recipes:[ {maxUses:13,buy:{id:"emerald",Count:5},sell:{id:"golden_sword",Count:1,tag:{Enchantments:[{id:"sharpness",lvl:9},{id:"fire_aspect",lvl:6}],display:{Name:'"Molten Gold Sword"'}}}},{maxUses:13,buy:{id:"emerald",Count:1},sell:{id:"stick",Count:1,tag:{Enchantments:[{id:"sharpness",lvl:5}],display:{Name:'"Whuppin Stick"'}}}},{maxUses:13,buy:{id:"emerald",Count:2},sell:{id:"blaze_rod",Count:1,tag:{Enchantments:[{id:"sharpness",lvl:5},{id:"fire_aspect",lvl:10}],display:{Name:'"Radioactive Whuppin Stick"'}}}}]},Brain:{memories:{"minecraft:job_site":{value:{pos:[I;<x>,<y>,<z>],dimension:<维度命名空间ID>}}}}}

其中<x><y><z><维度命名空间ID>要根据实际情况改为对应高炉所在的位置。

使用buy标签的部分是村民的收购物,使用sell标签的部分是村民的出售物。如果不希望交易次数耗尽,可以将maxuses标签更改为1000;如果希望使其成为只能交易一次的项目,可以将maxuses更改为1。注意这里的第一个物品(金剑)有一个超出范围的附魔(锋利9)。是的,这是可行的,但在做出超出范围的效果之前,一定要研究什么样的附魔效果,因为有些东西什么也不做,甚至会产生负面影响(水下呼吸的“看清水下”副作用使所有东西在高水平上都变成了令人眼花缭乱的白色,就像你潜入充满泥浆的北极水域一样)。至于那把金剑,记住金剑的耐久度实在是太低了(这就是人们称之为黄油剑的原因)。一个10级耐久附魔会将一把金剑达到一个体面的耐用性水平。另外注意,另外两个“武器”实际上是一个木棍和一个带有武器附魔的烈焰棒。使用任何非武器作为武器都会造成与空手相同的伤害(1(♥),但这些武器上的附魔使它们与未附魔的剑一样。它的优点是木棍、烈焰棒或其他物品可以无限使用。同样的技巧也可以用于生物头颅和水下呼吸3,以制造一个无限耐久的潜水面罩。

在更少的命令方块和递归中使用更多的命令

有几种方法可以将命令组组合为一个命令。
  • 激活铁轨上生成一个命令方块矿车,该命令方块矿车上按顺序骑着另一些命令方块矿车。
参见:函数

使用地图作为通关依据(scroll)

YouTuber “SethBling”使用地图当作通关依据(scroll),当空白地图被使用时,会变成一般地图,那时,命令会立即将地图从玩家的物品栏清除,并执行命令(召唤生物、传送玩家),同时关卡通过。

优点

  • 快速的互动。
  • 紧凑的系统。
  • 简单触发,只要使用右键即可激活。

缺点

  • 玩家在删除地图之前激活地图时可能会看到地图动画。
  • 玩家在游戏过程中不能使用地图(显示文本信息、路径、图画…)。

机制建设

玩家可以更改物品的显示名称和介绍,让玩家更好地了解并使用物品。使用以下命令为玩家提供自定义命名地图[仅Java版]/give <玩家> map{display:{Name:'"<名称>"',Lore:['"<介绍>"']}}

  • 玩家:指定的玩家(@p@a[参数]……)。
  • 名称:在快捷栏中滚动或用鼠标悬停于物品上方时显示的名称。
  • 介绍:鼠标悬停于物品上方时名称下方的文本。

检测地图的激活

搭建:

任意你想执行的命令,如给予玩家某种效果,传送玩家到某处等。
/give <玩家> map{display:{Name:'"<名称>"',Lore:['"<介绍>"']}}(可选,若有则触发后可重新获得通关依据)
/clear <玩家> filled_map

进阶

/clear命令可以检验其他可交互的物品:

  • 在玩家刚喝过药水时检验玻璃瓶
  • 在收回浮漂时检验钓鱼竿。在工具的NBT中包含一个名为Damage的标签,是工具的耐久度:

/clear <玩家> fishing_rod{Damage:2} 请注意如果钓到了地面或者生物时,钓鱼竿可能会损失不少于2点耐久度,所以对每2点耐久度都进行一次检验。

更多资源

Feare的命令方块教程
Dragnoz的YouTube教程提供了很多使用NBT标签的可能性
NBT标签的文本教程

参见

语言

Advertisement