Minecraft Wiki

由于与微软方面的协商问题,本站应要求修改了Logo等图像。详情见此

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

了解更多

Minecraft Wiki
Advertisement
Disambig gray.svg  本文章介绍的是命令方块使用实例。关于运行命令的方块,请见“命令方块”。关于所有命令及其语法,请见“命令”。
Brush.png
该文章需要整理以符合样式标准 讨论

请帮助优化文章样式来让它符合样式要求。

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

获取[]

拥有管理员权限或开启作弊的单人模式玩家可以在聊天框内输入命令/give @s command_block来获得命令方块。

基础[]

选择器[]

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

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

更多内容可见目标选择器

基础用途[]

命令方块有各种各样的用途,如改变难度,改变天气的状态,或者给你指定的物品。它们只能在作弊为开启时才能使用。

实例[]

以下列出了一些使用实例:

给予一个随机玩家一个物品并告诉所有人[]

按顺序执行这些命令(如一连串的命令方块或函数中)会给予一个随机玩家五个曲奇,然后告诉所有人。

/tag @r add cookie

/give @a[tag=cookie] minecraft:cookie 5

/say @a[tag=cookie] 已被给予五个曲奇。

/tag @a[tag=cookie] remove cookie

传送[]

你可以通过使用/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模拟玩家输入命令)

玩家安全系统[]

命令方块也可以制作安全系统。只要放置一个保持开启的循环型命令方块,并输入命令:/tp @p[r=<半径>,name=!<你的玩家名>] <x> <y> <z>[仅基岩版]/tp @p[distance=..<半径>,name=!"<你的玩家名>"] <x> <y> <z>[仅Java版],这样除你以外的其他玩家就无法靠近了。对于怪物,简单的栅栏或熔岩护城河就能达到目的。

自动人行道[]

类似于电梯的概念,用于使实体往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 ~ ~可以替换为你想要的坐标,坐标的格式可以参照上方的“传送”段落。

屏蔽命令方块输出[]

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

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

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

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

永昼[]

可通过在聊天菜单输入/gamerule doDayLightCycle false命令以及/time set day命令来获得永昼。

轻松设置日/夜[]

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

无线红石[]

可以使用/setblock命令实现无线红石。图中命令的坐标需要根据实际情况更改。

无线按钮[]

参见:按钮§数据值拉杆§数据值

从技术上讲,这可以在任何方块上完成,但是按钮、拉杆和其他可以交互的方块会增加有趣的效果。虽然在服务器上非常神秘,但它其实很简单。它使用了/execute命令。它使用了一个命令方块、一个将命令转换为红石信号的红石比较器、一个要测试的方块和一个重复激活命令方块的时钟电路。这是一个无线按钮的示例:/execute if block 123 12 123 stone_button[powered=true][仅Java版](按钮坐标是123,12,123)。输入要测试的特定方块的坐标和名称,在本例中是位于123 12 123的石质按钮。这可以使用在任何可更改方块状态的方块上。

注意:这个值根据方块状态变化,关于数据值的详细内容,请见按钮#数据值拉杆#数据值

入门套件[]

你可以使用标签来区分“已领取套件的玩家”和“未领取套件的玩家”。

通过使用参数[tag=!<标签>],在(服务器)地图上制作一个只能获得一次的套件,首先,在地上挖几个格,然后放置一行命令方块(工具包中的每个物品一个)。在命令方块的界面中,输入/give @p [tag=!<用以区分的标签>,distance=..<半径>] <物品ID> <数量>。这样他们会获得你所希望给予他们的物品。在一个另外的连锁型命令方块里面输入/tag @p add <用以区分的标签>,形成一串命令方块链。将洞填起来然后放上压力板。当玩家走过去,他们会得到他们应得的工具包,他们因为被添加了标签所以他们不会获得更多的套件。

至于这个标签的名字,你可以随意取,不过最好使用英文。

作为压力板的替代品[]

是不是已经厌烦了压力板只有四种材质可用了呢(石质,木质,铁质和金质)?现在你可以不再为这个问题困扰了。你可以使用包含命令/execute,区域大小的带有时钟电路的命令方块来代替压力板了。命令/execute as @a at @s if block ~ ~-1 ~ #sand run tp ~ ~3 ~[仅Java版]会检测任意沙子上是否有玩家并将他向上传送三格。同样你也可以修改run后的命令来达到不同效果,也可以更改sand至其他方块。

详见:/execute

在单机非创造模式地图中使用命令方块[]

通过/gamemode也可以使你在单机非创造性地图中使用命令方块,简单的切换游戏模式可以使用/gamemode creative然后将命令方块的命令设置为您想要的任何内容,最后使用/gamemode survival切换回生存模式。命令方块只是需要在创造模式下设置,但切换至生存模式仍然可以正常运作。

他也可以被用于传送(例如一个遥远的要塞,在地下挖矿,或者在一个浮空岛)。如果他需要你花了很长时间才能到达那里,然后你不介意他是一种软作弊,这样你可以建立起一个传送系统。请确保你在设置命令方块的时候是创造模式(请使用/gamemode creative。如果你并没有开启作弊选项,打开局域网模式设置打开作弊),但你还是可以在生存模式中使用它。在打开的命令方块的界面中输入/tp @p <x> <y> <z>。然后,用红石激活这个命令方块,然后你就会被送到远处的目的地。你可以建立多种不同的传送器。这也可以用于跨越大面积的大型项目,或者将箱子从旧房子转移到新房子。

在多人中的应用(SMP)[]

该章节将详细介绍命令方块多人游戏中的应用。

  • “定格动画”

通过使用/clone,或者Minecraft地图编辑器,例如Minecraft地图编辑器可以复制一张图片(利用方块做出来的绘画),然后粘贴到其它地方(一般紧挨着上一个图画),并变动绘画的一些方块,利用一些压力板或者绊线钩,在玩家短时间欣赏绘画后,命令方块做出/clone命令,将设定好的图片复制到观看区域。如果大量的复制粘贴这样的零件,按顺序地复制方块并稍稍弄出一点点的延迟,那么玩家就会产生幻觉,认为这个绘画是在运动的,这就是利用命令方块来实现定格动画技术。

  • 抽奖

/give @r <物品> <数量>命令,可以创造一个抽奖机器。但是记住,/give命令是直接把物品放进他们的物品栏,而不是放在他们面前。

  • 监狱

通过在循环型命令方块中输入/tp命令,你可以强制玩家留在某个地方。如果你想让这个方法成为可行的,在你的聊天窗内输入命令/gamerule commandBlockOutput false关闭命令方块的输出。使用选择器rrm[仅基岩版]或选择器distance[仅Java版],你可以在玩家离开一定距离后再将他们传送回来。

  • 只针对指定模式的玩家

如果使用参数[gamemode=creative],那么只有创造模式的玩家才会受到这条命令的影响,当然输入[gamemode=survival]只对生存模式的玩家有效。

  • 自动公告

通过在命令方块中使用命令/tellraw @a {"text":"<信息>"}[仅Java版]/tellraw @a {"rawtext":["text":"<信息>"]}[仅基岩版]可以创造一个无人自动广播(需要连接循环红石等不断发出激活信号的红石元件)。

  • 安全扫描

使用/clear命令,你可以清除玩家背包中的某物品。具体步骤是这样的,使用/clear <@a|玩家名称> <清除的物品名>。如果想实现自动清理危险品可以将该命令方块设为循环型。

你甚至还可以进一步将被清除危险品的玩家显示在聊天框中:

Java版中,可以借助命令统计值来完成:

  1. 建立一个记分板。
  2. 在循环型命令方块中输入/execute as @a store success score @s <记分项> run clear @s <清除的物品名>,其中的<记分项>需要改为你在第一步时创建的记分板名称。
  3. 接上一个连锁型命令方块,输入/execute if entity @a[scores={<记分项>=1}] run tellraw @a [{"text":"已清除"},{"selector":"@a[scores={<记分项>=1}]"},{"text":"身上的危险品"}]

基岩版中,需要用到“无序遍历”的方法完成:

  1. 在循环型命令方块中输入/tag @r add <标签>
  2. 接上一个连锁型命令方块,输入/clear @a[tag=<标签>] <清除的物品名>
  3. 接下来的连锁型命令方块需要条件制约,输入/tellraw @a {"rawtext":[{"text":"已清除"},{"selector":"@a[tag=<标签>]"},{"text":"身上的危险品"}]}
  4. 最后别忘了使用/tag @a remove <标签>来移除标签!
  • 比赛裁判

使用/say @p,命令方块就能报告最近的玩家。如果命令方块放在终点线后,他会很方便的说出赢家,但是/say会给所有玩家发送信息,为了防止刷屏,建议使用/tell/tellraw

  • 建立保护区域

注:Residence等服务器领地插件的拓展插件可以实现领地内游戏模式的变化。

你可以通过命令方块创造一个“创造/生存模式区域”,但是很繁琐。可以通过用命令方块的范围限制来制作一个“围栏”,通过围栏的玩家会变成生存或创造模式。在命令方块中输入命令:
/gamemode adventure @a[x=<区域中心坐标> y=<区域中心坐标> z=<区域中心坐标> distance=<最小的玩家搜索半径>..<最大的玩家搜索半径>]
这样放置两个搜索区域不重合的命令方块,就可以将规定半径内的玩家改变模式。

  • PVP玩法

使用命令/gamerule keepInventory true来关闭玩家死亡后的物品掉落(同样在重生后会保留物品和经验等,所以需要在玩家重生后清空背包)。使用/give @p <物品ID>可以给予玩家武器(可以添加NBT标签),你可以设计一套完善的职业系统,玩家选择不同的职业会有不同的装备。使用/spawnpoint <x> <y> <z>设置玩家重生地点,使用/tp <x> <y> <z>移动地图中的玩家到指定区域。

  • 特殊的彩色文本

虽然你不能于命令方块直接输入彩色/粗体/斜体文本,但是可以直接利用原始JSON文本来弄出彩色/粗体/斜体字体。也可以使用“§”[仅基岩版]或“\u00a7”来进行文字的变色、甚至是乱码(§k[仅基岩版]或\u00a7k)。

  • 警报系统

当玩家走上压力板时,他能触发命令方块/say @p <警告内容>

  • 奖励屋

如果某个玩家在服务器有着特别的贡献或者有元老资历,但却不足给他管理员权限,你可以奖励他一组钻石或者一些奇怪的东西。 创建一个只有通过传送命令才能进入的房间,将有卓越贡献的玩家传送进去,玩家会激活房间中的命令方块从而获得奖励,然后他又会被另一个命令方块传送回原地。

  • 天气机

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

  • 有奖竞赛

可以使用/tp @p/give @p命令制作一个障碍赛跑或者有奖迷宫,游戏结束后就将玩家传送回出生点或其他地方。

  • 时光机

在地图上模拟两个十分相似的环境,通过命令方块将玩家从一个传送到另一个,并且时间也会被设置为开始的时刻,这就好像是时间倒退。 (注:可以广泛用于剧情RPG地图。)

  • 时光机器

在一个循环命令方块中键入以下命令:time add 10000,拉下拉杆,时间就会加速变化。你可以清楚地看到日月迅速升起落下的情景。 (可以用在叙事故事类地图中)

  • 地雷

使用命令/execute as @a at @s if block ~ ~-1 ~ #wood run summon tnt ~ ~ ~[仅Java版]/execute @p ~ ~ ~ detect ~ ~-1 ~ planks -1 summon tnt[仅基岩版]检测到有玩家站在木头上时就召唤TNT!砰!

  • 安全门

通过使用/execute if entity @p[distance=..5,name=<玩家名>][仅Java版]/testfor @p[r=5,name=<玩家名>][仅基岩版],命令方块会在一定范围内检测指定玩家并且为他开门,也只会为他开门。

在自定义地图中的应用[]

这一节详细介绍了命令方块在自定义地图的应用。

  • “沉默的”命令方块

在地图中控制命令方块不输出提示信息很重要,这可以保持玩家对地图的未知性和剧情的隐蔽性,如果玩家看到了各种命令的提示信息,地图将会索然无味。关闭命令方块输出信息(除非是/say这类的命令)使用/gamerule commandBlockOutput false就可以实现。

  • 避难所/角斗场

可以设置进入城堡内后变为和平难度(对于不同区域视情况而定)。城堡的入口有一个命令方块,命令方块上写/execute if entity @a[distance=<范围>] run difficulty peaceful[仅Java版]/execute @a[r=<半径>] ~ ~ ~ difficulty peaceful[仅基岩版]这样当玩家处于命令方块周围时就会变为和平难度,这样就可以创造一个“避难所”。反之,你可以用同样的方法创造一个“困难难度区域”,当玩家进入会变为困难难度。但是注意,难度的变动会对整个世界生效,而不能限制在特定的区域内。

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

使用值[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可以设定玩家出生地点。(应用十分广泛,PVP地图,RPG地图等等)

  • 熔岩跑酷

之前的内容提到过,/gamerule keepInventory true可以在玩家死后保存背包物品。在跑酷地图的出发点设置一个这样的命令方块,就可以使掉落熔岩死亡的玩家不会丢失物品,同时记录点可以用/spawnpoint来做。

  • 我要睡觉!

使用/spawnpoint可以直接设置出生点,但是要跳过白天就需要/time set <时间>命令,18000为夜晚(并非绝对,可以按喜好设置,不要少于12500),这样就可以模拟出睡觉的效果了。(可用/time set 700直接转为白天,/spawnpoint命令和/time set 700配合不就能模拟睡觉了么?)

  • 时间和天气下的场景

比方说,你的地图开始在一个寒冷的暴风雨之夜,你可以设置突然天晴了,外面有灿烂的阳光!或者,如果你想开始一个光明的一天,想让雨突然下起来又没办法?不要怕,有/weather命令。只需使用/weather,输入就行了!你也可以使用/time set输入:0是凌晨,6000是中午,12000是黄昏,18000是午夜。

  • 检测世界是否切换到了和平难度

创建一个攻击型生物,把它放在压力板上。(请确保它会保持始终按下状态,所以一定要确保它不能跳或走开)。做一个红石电路,让压力板在没有接收到红石信号的时候激活命令方块。命令方块里设置一个消息,通知玩家的地图由于难度切换到了和平难度导致损坏,需要的怪物已经消失,请重新下载这个地图。你甚至可以做一个隐形传输命令方块,把那些故意切换到创造模式的玩家换成冒险模式后传送到一间基岩屋内,并让他不能使用/kill/tp命令,并把他的重生点设在那个房子里,让他永生见不得光明!(单人的话,可以点“对局域网开放”,或用修改器编辑)

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

/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,以制造一个无限耐久的潜水面罩。

刷怪笼[]

Information icon.svg
此特性为Java版独有。
Clock JE3 BE3.gif
此条目需要更新。

理由:由于在21w37a中更改了刷怪笼的相关NBT,以下内容将不再可用

你可以通过/setblock命令放置刷怪笼,例如:/setblock ~1 ~-1 ~0 spawner{SpawnData:{id:"minecraft:zombie",HandItems:[{id:"iron_sword",Count:1},{}]}}会放置产生拿着铁僵尸的刷怪笼。几乎所有除了玩家的实体都可以透过自定义刷怪笼产生,包含了矿车、火球、箭、雪球、末影珍珠、喷溅药水、烟花火箭、点燃的TNT、掉落的沙子、掉落的红沙、掉落的沙砾、画、物品展示框、经验球甚至是掉落物。

你可以把猪、牛或鸡的刷怪笼放置于村庄的屠夫家的后院,以便创造永恒的肉类来源,例如:/setblock ~1 ~-1 ~0 spawner{MaxNearbyEntities:10,RequiredPlayerRange:16,SpawnCount:6,SpawnRange:2,MinSpawnDelay:50,MaxSpawnDelay:200,SpawnData:{id:"minecraft:pig",Passengers:[{id:"chicken"}]}}此命令会放置生成“鸡骑在猪上”的刷怪笼,而且想要多少生物骑在另外一个生物上是没有限制的,例如你可以放置一只骑着鸡的猪,那只猪也骑着一只牛,那只牛也骑着一只马,那只马也骑着一只蠹虫,同时那只蠹虫也骑着一位村民,这就是“Farmer Brown”。 请注意,如果要使用RequiredPlayerRange标签,那你必须同时使用MaxNearbyEntities标签,同样的事情也适用于MinSpawnDelayMaxSpawnDelay。最后,请注意,这两个刷怪笼范例命令中使用的y值是~-1,(假设玩家没有飞行)意思是把刷怪笼放在玩家下方一格处。

如果你没有想要指定特别的玩家,可以使用@a(所有玩家)、@p(最近的玩家)或是@r(随机玩家)参数,而不是<玩家名称>。请记住,你可以在玩家发出的命令中使用@p(最近的玩家)或@s(自己)作为一个比输入自己名字更好的替换,因为你对于自己来说最近的玩家将永远是你。

一、基础[]

以下的命令会于X坐标加2的位置放置一个召唤僵尸刷怪笼

/setblock ~2 ~ ~ minecraft:spawner{SpawnData:{id:"minecraft:zombie"}}

下面的基础命令包含了6种可设置参数: /setblock ~2 ~ ~ minecraft:spawner{SpawnPotentials:{id:"minecraft:skeleton"},SpawnRange:4,RequiredPlayerRange:16,SpawnCount:4,MaxNearbyEntities:6,MinSpawnDelay:200,MaxSpawnDelay:800}

提醒:

  • 所有时间都是以“游戏刻”计算的(一般情况下,1秒约等于20刻,200~800游戏刻约等于10~40秒钟)。
  • 请记住,参数是一对的,如果参数没有匹配,将无法正常工作。SpawnRange需要RequiredPlayerRange工作,反之亦然,MinSpawnDelay需要MaxSpawnDelay工作,而SpawnCount需要MaxNearbyEntities工作。
  • 还有一种参数叫做Delay用于控制这次怪物生成到下次生成时间的延迟,以游戏刻为单位(1秒等于20游戏刻),它会在参数MaxSpawnDelayMinSpawnDelay设定的值中随机选取一个数。
  • 若坐标设定为~ ~-1 ~-3会以命令方块为基准向Y坐标向下1个方块,向Z坐标减少三个方块处放置刷怪笼,它有可能会将刷怪笼放置于地底。提醒你,刷怪笼的SpawnRange参数仅对水平方向有效,而不是垂直方向。在垂直方向,它只会在相同的高度生成生物,或者低1或者高1,所以将之嵌入地面虽然会使生成面积缩减2/3,但对将它隐藏起来是有帮助的。自然地,其生成高度减少了1/3,因为它们的高度比地面高1而不是2。
  • 以上所使用的值均为默认值。

二、自定义生物[]

下一步要做的是修改生成数据。生成数据告诉刷怪笼你想要一个非标配的怪物,比如带有钻石和锁链头盔僵尸

/setblock ~ ~1 ~ spawner{SpawnData:{id:"zombie",HandItems:[{id:"diamond_sword",Count:1},{}],ArmorItems:[{},{},{},{id:"minecraft:chain_helmet",Count:1}]}}

使用~代替坐标的值,由于使用了上一个示例中的这6个参数,因此它们都是默认值。
注意:
HandItems标签两个槽的顺序为主手和副手,ArmorItems标签四个槽顺序分别为靴子、护腿、胸甲和头盔。你必须也指定空的槽。
尽管是损坏的头盔,只要戴上它,那些会因阳光而燃烧的生物,就可以存活。
Count标签十分重要。一个没有Count标签的物品将在生成后迅速消失。

下一个自定义怪物是一个骑在骷髅马上的骷髅,它持有火矢附魔的,戴着保护II附魔的自定义生物头颅蜘蛛,需要网络连接,否则只会显示Steve头颅)。

/setblock ~2 ~1 ~2 spawner{SpawnData:{id:"skeleton_horse",Tame:1,SaddleItem:{id:"minecraft:saddle",Count:1},Passengers:[{id:"minecraft:skeleton",HandItems:[{id:"minecraft:bow",Count:1,tag:{Enchantments:[{id:"minecraft:flame",lvl:1}]}},{}],ArmorItems:[{},{},{},{id:"minecraft:player_head",Count:1,tag:{SkullOwner:"MHF_Spider",Enchantments:[{id:"minecraft:protection",lvl:2}]}}]}]}}

严格来说,骷髅仅仅是坐在马上,因为骷髅的移动取决于它骑着的马,而马并不会与你敌对。注意不要把僵尸(或其他近战生物如僵尸猪人)放在马背上,它们的攻击范围不够,因此只能坐在马上什么也不干。所幸无论马如何移动,骷髅都可以进行射击。
至于骷髅马本身,它的驯服被设置为1(是),并装备有一个马鞍(事实上,它们让我们指定哪种鞍座暗示着它们最终可能有不止一种类型)。从技术层面来说,你可以设置一个多级骑乘的生物,但你很快就会意识到这么做并不明智。

三、SpawnPotentials标签[]

我们可以在刷怪笼中使用SpawnPotentials标签来生成多种实体。当计时器重置时(生成前一个生物的后一秒钟),它会随机选择一个标签进行生成。由于这些NBT包含多个生物,所以它们往往是相当长的。以下是一个示例命令,看起来十分“赏心悦目”:

这个命令的NBT部分特别长,因为它实际上是6个独立的生物。其中有:

  • SpawnPotentials标签前:最前面的部分,出现一次之后就不会再出现了。如果希望它再次出现,你需要将之再次包含在SpawnPotentials的部分中。这一生物是一个穿着蓝色染色皮革裤子、绿色染色皮革外套,拿着一把满耐久木剑的僵尸。
  • 一只与上述内容几乎相同的僵尸,唯一的不同是这只僵尸的木剑耐久度只有3。
  • 接下来一只看起来像个忍者。它是一只骷髅,但拿着一把铁剑。它所有的盔甲都染上了忍者般的黑色。带剑的骷髅能比僵尸更快地缩短与你的距离,所以要小心。
  • 一只有石剑和锁链盔甲的僵尸。其盔甲上附有保护II。
  • 接下来是有一把金剑,一身金盔甲,头上套着一个南瓜,并且着了火的僵尸。南瓜上附有保护II和火焰保护X,不顾一切地试着站起来并威胁玩家超过5秒。虽然这是有效的,不过如果玩家选择远离,南瓜头先生就会被烧死。
  • 有铁剑和铁盔甲的僵尸。剑上附有锋利II,盔甲上附有保护II。
  • 最后一只生物,一只假Herobrine,拥有附魔等级很高的钻石盔甲(附有火焰保护IV和掉落保护IV的钻石靴子,穿着附有爆炸保护IV的钻石裤子,附有保护IV的钻石胸甲,以及保护IV、火焰保护IV,爆炸保护IV和水下呼吸III的盔甲)以及一把附有锋利IV,击退IV,节肢杀手IV,抢夺III和耐久III的钻石镐。除此之外,它还获得了CustomNameVisible(设置为1表示true),CustomName,以及PersistenceRequired(设置为1表示yes)。最后一个属性将阻止它消失,虽然它可以被正常手段所杀死(如果你能击败这一身钻石套和IV级附魔的话)。幸运的是,它比较少见(见下文)。

除了那个忍者,这里一共有5种不同的剑和盔甲。注意Weight标签,其需要在每个SpawnPotentials中的EntityNBT后使用。这决定了该生物被选中并生成的几率。具体的数字没有什么意义,有意义的只是数字之间的比例。例如,如果你想让所有预置生物等概率生成,则可以将每个Weight都设置为1,将它们全部改成8也没有什么不同(它们之间的比例仍然是相同的),但是将除了某一个之外的所有其他Weight更改为8则会使其中1/8的可能性与其余的1/8相同。在这段代码中,默认值是4,而忍者只有2(使它被选中的可能性减半),而那只假Herobrine只有1。

四、可骑乘生物[]

将生物的头设置为矿车或船,则可以骑乘它们,但看起来会有些奇怪。命令相当简单:

/setblock ~ ~1 ~ minecraft:spawner{SpawnData:{id:"<实体名称>",Passengers:[{id:"minecraft:minecart"(或"minecraft:boat")}]}}

提示:

  • 有些生物不能用刷怪笼生成,比如boss们和铁傀儡。添加矿车也不会影响它们。
  • 具有射击能力的敌对性怪物可以并且将使用它们来对付生存玩家。请注意。
  • 恶魂不能骑乘。矿车将卡在它们的脑袋里,这对任何人都毫无用处。
  • 末影人不能四处走动,但可以通过投掷或射击让它们传送(比如雪球)。
  • 豹猫是速度最快的怪物之一,因为他们想要逃离你。它们也可以通过指向你想去的地方来控制。
  • 蜘蛛是唯一在骑乘时会减速的生物。
  • 史莱姆和它的近亲岩浆怪不能改变大小。

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

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

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

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

优点

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

缺点

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

机制建设

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

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

检测地图的激活

Minecraftscroll.jpg

  • 命令方块 1 包含/give上面一节中描述的命令。如果玩家不希望通关依据在被激活后回来,它可以被取消。
  • 命令方块 2 包含物品栏检测命令:

/clear <玩家> filled_map

  • 命令方块 3 是成功时的输出。你可以做任何想要做的事情:比如给予玩家某种效果,传送玩家到某处,等等。你也可以将输出连接到门,活塞,或是其他接收红石信号的方块。

进阶

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

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

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

更多资源[]

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

参见[]

Advertisement