我的世界命令方块指令代码大全
命令方块是一种主要用于冒险模式、多人游戏的自动化和自定义地图的方块。
获取
拥有管理员权限或开启作弊的单人模式玩家可以在聊天框内输入命令/give @s command_block
来获得命令方块。
基础
选择器
使用选择器可以代替使用实体名称:
选择器 | 目标 |
---|---|
@a | 全部玩家 |
@p | 最近的玩家 |
@r | 随机玩家 |
@e | 全部实体 |
@s | 执行命令的实体(如果命令由命令方块或服务器控制台执行,则不会选中任何实体) |
基础用途
命令方块有各种各样的用途,如改变难度,改变天气的状态,或者给你指定的物品。它们只能在作弊为开启时才能使用。
实例
以下列出了一些使用实例:
给予一个随机玩家一个物品并告诉所有人
曲奇给予器 5000X
这个装置会给予一个随机玩家五个曲奇,然后告诉所有人。
首先创建一个记分板(名字任意,注意除非你在测试,否则不要显示它),比如说“cookie”。
/scoreboard objectives add cookie dummy {"text":"cookie"}
[仅Java版]或
/scoreboard objectives add cookie dummy cookie
[仅基岩版]
第一个命令方块的命令:
/scoreboard players set @r cookie 1
第二个和第三个命令(两者可颠倒,但要同时被激活):
/say @a[scores={cookie=1}] 已被给予五个曲奇。
/give @a[scores={cookie=1}] minecraft:cookie 5
[仅Java版]或
/give @a[scores={cookie=1}] cookie 5
第四个命令方块的命令:
/scoreboard players set @a[scores={cookie=1}] cookie 0
上图中I
代表输入红石信号源。(建议可使用永动红石电路)
传送
你可以通过使用/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 @p 4 6 8
是一个效果。
玩家安全系统
命令方块也可以制作安全系统。只要在建筑物入口的铁门前放置一个压力板,并于命令方块中输入命令:/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 ~-0.1 ~ ~
[仅Java版]或/execute @e ~ ~ ~ detect ~ ~-1 ~ <方块> <数据值> tp ~-0.1 ~ ~
[仅基岩版]。
现在站到填充的方块上,你就会自动向指定的方向移动。
命令中的~-0.1 ~ ~
可以替换为你想要的坐标,但不要改为~ ~0.1 ~
或~ ~-0.1 ~
。
屏蔽命令方块输出
命令方块被触发时,会自动在聊天栏中输出一条信息,如:“[@]:已召唤1个实体”。
您可以通过此命令屏蔽命令方块输出:/gamerule CommandBlockOutput false
。
屏蔽命令方块输出可以给玩家带来更好的游戏体验。但将会使玩家难以直接了解命令方块的执行结果。
用/gamerule CommandBlockOutput true
来恢复命令方块输出。
永昼
- 在1.6.1(13w24a)以后,可通过在聊天菜单输入
/gamerule doDayLightCycle false
命令以及/time set 6000
命令来获得永昼。
通过使用蜘蛛网和矿车,你可以使用/time set 0
跳过夜晚。一个矿车需要31秒穿过一个蜘蛛网。因此,通过使用23个堆叠的蜘蛛网和探测铁轨和几个充能铁轨来达成永昼。
或者,你也可以在一个木质压力板或测重压力板上放置一个掉落物去实现,掉落物每5分钟就会被清除再放置,这时它会触发一个命令方块将时间重置为0,还会触发一个发射器(或投掷器)将一个新物品扔到木质压力板上。5分钟是一天的周期,并且会在怪物产生之前触发重置时间。然而,这个方法被限制在该区块被加载后的64×9=576个周期,即48个现实小时的游戏时间。在怪物磨床中,可以在发射器中填满火药、箭或者腐肉。 另一种方法是使用命令方块创建。(例如:/summon item ~1 ~0 ~1 {Item:{id:"brown_mushroom",Count:1}}
[仅Java版])这样做的好处是它不像使用发射器那样有64×9的格子限制。
这两种方法都要求保持区块加载以使系统工作。可以通过在机器上使用/forceload add ~ ~
命令来保持机械所在区块常加载。
或者你可以将命令方块连接到一个重复的红石脉冲,例如一个5分钟,某种类型的循环,或者如右图所示的阳光探测器。为了防止聊天框被刷屏,使用命令/gamerule CommandBlockOutput false
关闭命令方块在聊天框上的消息输出。注意:这个方法可以使用不同的命令来设置各种各样的东西。(比如,要使天气永远晴朗,在循环中添加另一个命令方块,并使用命令/weather clear
。)
为了可以在不同功能之间切换,可以在命令方块前设置一个与门,在一边放置一个拉杆,在另一边设置一些电路。
使用阳光探测器是永昼的一种更直接的方法。
当没有足够的亮度让阳光探测器在远处为红石火把提供信号时,探测器会停止充能并启动命令方块,将时间设置为8000。换句话说,当亮度太低时,命令方块会将时间设置为中午。当命令被激活时,亮度会随着红石线的距离而变化,它设置的时间随在命令方块中输入的时间而变化。
要做到这一点,首先,你需要把阳光探测器放在一个开放、露天的区域。然后你需要从它相邻的位置开始向远处设置一些红石线。红石线的距离取决于你需要多少延迟的时间。你最多只能有15个红石线从阳光探测器发送信号到它的另一端。接下来,在红石的另一端放一个方块。把红石火把放在这个方块的一侧,并在火把顶部设置一个命令方块。右键单击命令块输入命令,命令以/time set
开始,以有效的时间值结束。这个值即为命令方块在触发时会将时间设置到的数值。午夜是18000,晚上是12000,中午是6000。
这种设计可以在地图上使用,使之保持在特定的时间。但这个简单的装置只能用在创造模式或者开启作弊时。
还有一种更紧凑的设计。如果你把一个阳光探测器作为一个红石比较器的第一个输入,一个强度为15的红石线(红石块或红石火把)放在比较端,然后将比较器设置为比较模式(前段火把熄灭),则比较器将会在中午之后立即启动。
轻松设置日/夜
在命令方块上放置阳光探测器,然后按下使用键,将其设置为夜光探测器。将命令/time set day
添加到命令方块中。或者如果你希望永远是夜晚,你可以添加一个阳光探测器,不要右键单击它,然后将/time set night
添加到命令方块中。
无线红石
可以使用命令方块和记分板系统实现无线红石。该过程涉及使用记分板变量,该变量由附加到时钟电路输出的命令方块进行搜索。然后在无线输出命令方块上使用红石比较器,该命令方块在发现变量为正时触发。
无线红石也可以通过使用对象而不是变量来实现。如果输出命令块设置为尝试删除一个不存在的对象,则可以通过通过命令块或聊天命令添加said objective来创建红石信号。这种方法对于变量法的优点是它不依赖于参与者。
为此,在在输入处放置一个命令方块,并键入命令/scoreboard objectives add <对象名> dummy
,在输出位置放置一个命令块,输入/scoreboard objectives remove <对象名>
(两个对象名要一致),将其连接到时钟电路上,然后在命令方块外面放一个红石比较器,然后放一个红石中继器。然后使用红石中继器作为输出。
-
停止状态。
-
触发状态。
-
触发状态命令。
-
停止状态命令。
-
设置无线输出。
-
无线输出命令。
-
另一种使用
/call
命令的无线红石。这里使用的命令是/summon FallingSand -118 150 -60.5 {TileID:76,Time:1,DropItem:0}
(已于Java版1.12失效)。
你还可以通过使用/setblock
命令实现无线红石,而不是通过计分板系统。你所要做的就是让命令方块将一个与任何不输出信号的方块相邻的红石块的坐标设置为目标坐标,并且与一个连接到反向信号的命令方块一起设置为相同的坐标。
无线按钮
- 参见:按钮§数据值和拉杆§数据值
从技术上讲,这可以在任何方块上完成,但是按钮、拉杆和其他可以交互的方块会增加有趣的效果。虽然在服务器上非常神秘,但它其实很简单。它使用了/execute
命令。它使用了一个命令方块、一个将命令转换为红石信号的红石比较器、一个要测试的方块和一个重复激活命令方块的时钟电路。这是一个无线按钮的示例:/execute if block 123 12 123 stone_button[powered=true]
(按钮坐标是123,12,123)。输入要测试的特定方块的坐标和名称,在本例中是位于123 12 123
的石质按钮。这可以使用在任何可更改方块状态的方块上。
注意:这个值根据方块状态变化,关于数据值的详细内容,请见按钮#数据值与拉杆#数据值。
入门套件
通过使用参数[gamemode=<模式名称>]
,你可以在(服务器)地图上制作一个只能获得一次的套件,首先,在地上挖3个方格,然后放置一行命令方块(工具包中的每个物品一个)。在命令方块的界面中,输入/give @p[gamemode=<初始游戏模式>] <物品ID> <数量>
。这样他们会获得你所希望给予他们的物品。在一个额外的命令方块里面输入/gamemode <非初始游戏模式> <对象>
,然后潜行后用红石连接整个命令方块串。将洞填起来然后放上压力板。当玩家走过去,他们会得到他们应得的工具包,他们因为更改了他们的游戏模式所以他们不会获得更多的套件。
(注意:此命令也可以透过记分板的方式完成,首先建立一个记分板并命名它,如/scoreboard objectives add <名称> dummy [<显示名称>]
,然后,给予记分板数值为0的玩家要给予的物品,如/give @p[scores={<记分板名称>=0}] <物品> [<数量>]
,最后将他的记分板数值设为非0的值,如下/scoreboard players add @p <记分板名称> <任意非0的数值>
。同时,你也可以通过不同的记分板名称重复以上步骤。)
作为压力板的替代品
是不是已经厌烦了压力板只有四种材质可用了呢(石质,木质,铁质和金质)?现在你可以不再为这个问题困扰了。你可以使用包含命令/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>
。然后,用红石(包括按钮,拉杆,压力板)激活这个命令方块,然后你就会被送到远处的目的地。你可以建立多种不同的传送器。这也可以用于跨越大面积的大型项目,或者如果您将箱子从旧房子转移到新房子。
探险家地图绘制
如果一个人希望创造一个单人玩家的探险家地图,执行/publish
命令来让其他的命令(见下方)被使用。
在多人中的应用(SMP)
这个章节详细介绍了命令方块在多人游戏中的应用。
- 传送/运输
通过/tp
命令,可以制作一个所有人都可以使用的传送装置。可以在每个地方都使用。例如,在整个世界里做一个庞大的传送系统,所有的传送点入口都汇集到传送大厅中,而传送大厅可以进入每个传送点入口处进而达到出口。这样就可以建造一个“快速交通中心”了。
- “定格动画”
通过使用/clone
,或者Minecraft地图编辑器,例如Minecraft地图编辑器可以复制一张图片(利用方块做出来的绘画),然后粘贴到其它地方(一般紧挨着上一个图画),并变动绘画的一些方块,利用一些压力板或者绊线钩,在玩家短时间欣赏绘画后,命令方块做出/clone
命令,将设定好的图片复制到观看区域。如果大量的复制粘贴这样的零件,按顺序地复制方块并稍稍弄出一点点的延迟,那么玩家就会产生幻觉,认为这个绘画是在运动的(甚至认为是某MOD做出来),这就是利用命令方块来实现定格动画技术。
- 抽奖
用/give @r
命令,可以创造一个抽奖。但是记住,/give
命令是直接把物品放进他们的背包,而不是放在他们面前。
- 监狱
通过连接高频红石到一个命令方块和用/tp
命令,你可以强制玩家留在某个地方。如果你想让这个方法成为可行的,在你的聊天窗内使用命令/gamerule commandBlockOutput false
。使用选择器r
和rm
[仅基岩版]或选择器distance
[仅Java版],你可以在玩家离开一定距离后再将他们传送回来。
- 只针对指定模式的玩家
如果使用参数[gamemode=creative]
,那么只有创造模式的玩家才会受到这条命令的影响,当然输入[gamemode=survival]
既只对生存模式的玩家有效。
- 公告
注:使用AutoMessage等服务端插件就可以达到自动公告的功能。
通过在命令方块中使用/me
,可以创造一个无人自动广播(需要连接循环红石等不断发出激活信号的红石元件),不需要OP,用Java版1.7+的新命令/tellraw {text:"<信息>"
可以免除开头的[@]并且可以做到悬浮事件和点击事件等。
使用铁砧更改命令方块的名字可以把开头的[@]改为[<你更改的命令方块的名字>],这非常有用。
- 安全扫描
注:大部分服务器管理插件支持封禁危险物品。
使用/clear
命令,你可以清除玩家背包中的某物品。具体步骤是这样的,使用/clear <@a|玩家名称> <清除的物品名>
。如果想实现自动清理危险品需要连接循环红石。
- 比赛裁判
使用/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>
移动地图中的玩家到指定区域。
- 新手工具包
你可以很简单的使用命令方块给予新手包且不需任何插件:/give @p[distance=..2] stone_pickaxe
。 为防止玩家按下两次按钮获得两个新手包,您可以设置按钮后的两个命令方块:1. /give @p[distance=..2,gamemode=adventure] stone_pickaxe
,2. /gamemode survival @p[distance=..2]
。(玩家一开始是冒险模式,获得工具包后调成生存模式,然后再限定工具包仅限冒险模式能拿即可)
- 特殊的彩色文本
虽然你不能于命令方块直接输入彩色/粗体/斜体文本,但是通过McEdit编辑器可以编辑那些地图或服务器内储存的文本。基岩版可以使用“§”来进行文字的变色、甚至是乱码(§k)。 SethBling’s McEdit Filter: ColourCommandBlockText
同时/tellraw
可以直接利用“color”等参数来弄出彩色字体。
- 警报系统
当玩家走上压力板时,他能触发命令方块/say @p <警告内容>
。
- 奖励屋
如果某个玩家在服务器有着特别的贡献或者有元老资历,但却不足给他管理员权限,你可以奖励他一组钻石或者一些奇怪的东西。 创建一个只有通过传送命令才能进入的房间,将有卓越贡献的玩家传送进去,玩家会激活房间中的命令方块从而获得奖励,然后他又会被另一个命令方块传送回原地,如果服务器允许/back
的话,连续2次传送到原点,这样/back
就无效了。(可以避免玩家重复领取奖励)
- 天气机
使用/toggledownfall
和/weather thunder
来开始或者结束降雨(雷雨)合理安排这些命令的话会十分有用,你可以随自己的意愿开始或停止降雨。这个技术可以用于村民和一些由降水控制的红石机械,不用输入任何命令就可以控制天气(需要管理员激活命令方块自动执行),合理利用将会十分有效,比如在森林火灾时或者在雨天刷怪。
- 有奖竞赛
可以使用/tp @p
和/give @p
命令制作一个障碍赛跑或者有奖迷宫,游戏结束后就将玩家传送回出生点或其他地方。
- 时间机器
在地图上模拟两个十分相似的环境,通过命令方块将玩家从一个传送到另一个,并且时间也会被设置为开始的时刻,这就好像是时间倒退。 (注:可以广泛用于剧情RPG地图。)
- 地雷
使用命令/execute as @a at @s if block ~ ~-1 ~ #wood run summon tnt ~ ~ ~
检测到有玩家站在木头上时就召唤TNT!砰!
- 安全门
通过使用/execute if entity @p[distance=..5,name=<玩家名>]
[仅Java版]或/testfor @p[r=5,name=<玩家名>]
[仅基岩版],命令方块会在一定范围内检测指定玩家并且为他开门,也只会为他开门。
(注:命令方块的/execute
[仅Java版]或/testfor
[仅基岩版]命令为一次性命令,命令方块检测到一次就会一直输出信号。)
在自定义地图中的应用
这一节详细介绍了命令方块在自定义地图的应用。
Minecraft中使用大量命令方块的地图有很多优势。 比如:SethBling’s TF2 Map
{{#ev:youtube|_f2brU8hBWc|425|}}
另一个优秀的应用例子是Hypixel’s Gladiator Arena,这个地图中的战斗职业系统完全依赖于命令方块。
{{#ev:youtube|jryJkWcqmzM|425|}}
- “沉默的”命令方块
在地图中控制命令方块不输出提示信息很重要,这可以保持玩家对地图的未知性和剧情的隐蔽性,如果玩家看到了各种命令的提示信息,地图将会索然无味。关闭命令方块输出信息(除非是/say
这类的命令)使用/gamerule commandBlockOutput false
就可以实现。
- 庇护所/角斗场
使用压力板或者绊线(以安全城堡为例)设置进入城堡内的玩家为和平难度(对于不同区域视情况而定)。城堡大门可以有连接命令方块的绊线,命令方块上写/difficulty peaceful
,玩家一旦走过绊线(或压力板),激活命令方块,就会变为和平难度,这样就可以创造一个“避难所”。反之,你可以用同样的方法创造一个“困难难度区域”,当玩家进入会变为困难难度。
- 对于不同游戏模式玩家的控制
使用值[gamemode=creative]
你就可以设置命令只对创造模式的玩家有效,生存模式就是[gamemode=survival]
。 例:传送所有创造模式的玩家到254,47,-874,使用的命令为/tp @a[gamemode=creative] 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
命令来制造铁匠说话的效果。也许柜台后面的猪会求饶!让我们再举另外一个例子:你在一家工厂里,一个报警铃的声音提示说工厂陷入危险了。用这个方法在聊天框中告诉玩家,以便保持一个紧张的气氛,特别是如果文字很长时应当用此方法。这同样可以用在定时炸弹装置,如果玩家看到了聊天框中的倒计时,他将可以更好地把情绪带进地图。
最后一点并非不重要,它可以更容易地建立一个任务系统,来让我们的玩家开始进行任务。玩家通过压力板后会激活RS NOR锁存器(所以它不能被再次激活),然后用一个有/say
命令的命令方块去表达屠夫对玩家的要求。他需要去杀一只猪。当玩家杀死站在石质压力板上的猪时电路就会关闭,使玩家回到屠宰场之后会激活另一个电路,包含另一个RS或锁存器和两个带有命令的命令方块。第一个命令是屠夫感谢玩家的/say
命令,另一个命令是使玩家获得奖励的/give
命令。除此之外,别忘了使用目标选择器@p
,使屠夫说出玩家的名字。例如,将命令方块设置为:/say 谢谢, @p 。你帮我杀了那头猪。
,聊天框就会显示:[@]:谢谢, <玩家> 。你帮我杀了那头猪。
这让地图变得更酷,看起来像是为玩家制作的,因为上面写着他/她的名字!
建立商店
通过使用/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
,能将经验减去作为货币。在中括号内可以列出命令执行所需的最低经验。
可以使用命令方块创建出售任何物品的自定义村民。
例如:/summon villager ~-2 ~0 ~0 {Profession:3,CustomName:BLACKSMITH,CustomNameVisible:0,Offers:{Recipes:[ {maxUses:13,buy:{id:388,Count:5},sell:{id:283,Count:1,tag:{ench:[{id:16,lvl:9},{id:20,lvl:6}],display:{Name:Molten Gold Sword}}}},{maxUses:13,buy:{id:388,Count:1},sell:{id:280,Count:1,tag:{ench:[{id:16,lvl:5}],display:{Name:Whuppin Stick}}}},{maxUses:13,buy:{id:388,Count:2},sell:{id:369,Count:1,tag:{ench:[{id:16,lvl:5},{id:20,lvl:10}],display:{Name:Radioactive Whuppin Stick}}}},]}}
使用buy
标签的部分是村民的收购物,使用sell
标签的部分是村民的出售物。如果您不希望交易次数耗尽,您可以将maxuses
标签更改为1000;如果您希望使其成为只能交易一次的项目,您可以将maxuses
更改为1。注意这里的第一个物品(金剑)有一个超出范围的附魔(锋利9)。是的,这是可行的,但在做出超出范围的效果之前,一定要研究什么样的附魔效果,因为有些东西什么也不做,甚至会产生负面影响(水下呼吸的“看清水下”副作用使所有东西在高水平上都变成了令人眼花缭乱的白色,就像你潜入充满泥浆的北极水域一样)。至于那把金剑,记住金剑磨损得太快了(毕竟人们称之为黄油剑是有原因的)。一个10级耐久附魔会将一把金剑达到一个体面的耐用性水平。另外注意,另外两个“武器”实际上是一个木棍和一个带有武器附魔的烈焰棒。使用任何非武器作为武器都会造成与空手相同的伤害(1( )),但这些武器上的附魔使它们与未附魔的剑一样。它的优点是木棍、烈焰棒或其他物品可以无限使用。同样的技巧也可以用于生物头颅和水下呼吸3,以制造一个无限耐久的潜水面罩。
刷怪笼
你可以通过/setblock
命令放置刷怪笼,例如:/setblock ~1 ~-1 ~0 mob_spawner{EntityId:Zombie,SpawnData:{Equipment:[{id:"minecraft:iron_sword",Count:1}]}}
会放置产生拿着铁剑的僵尸的刷怪笼。几乎所有除了玩家的实体都可以透过自定义刷怪笼产生,包含了矿车、火球、箭、雪球、末影珍珠、喷溅药水、烟花火箭、点燃的TNT、掉落的沙子、掉落的红沙、掉落的沙砾、画、物品展示框、经验球甚至是掉落物。
你可以把猪、牛或鸡的刷怪笼放置于村庄的屠夫家的后院,以便创造永恒的肉类来源,例如:/setblock ~1 ~-1 ~0 mob_spawner{EntityId:Chicken,MaxNearbyEntities:10,RequiredPlayerRange:16,SpawnCount:6,SpawnRange:2,MinSpawnDelay:50,MaxSpawnDelay:200,SpawnData:{Riding:{id:"Pig"}}}
此命令会放置生成“鸡骑在猪上”的刷怪笼,而且想要多少生物骑在另外一个生物上是没有限制的,例如你可以放置一只骑着鸡的猪,那只猪也骑着一只牛,那只牛也骑着一只马,那只马也骑着一只蠹虫,同时那只蠹虫也骑着一位村民,这就是“Farmer Brown”。 请注意,如果要使用RequiredPlayerRange
标签,那你必须同时使用MaxNearbyEntities
标签,同样的事情也适用于MinSpawnDelay
和MaxSpawnDelay
。最后,请注意,这两个刷怪笼范例命令中使用的y值是~-1,(假设玩家没有飞行)意思是把刷怪笼放在玩家下方一格处。
如果你没有想要指定特别的玩家,可以使用@a
(所有玩家)、@p
(最近的玩家)或是@r
(随机玩家)参数,而不是<玩家名称>
。请记住,你可以在玩家发出的命令中使用@p
(最近的玩家)或@s
(自己)作为一个比输入自己名字更好的替换,因为你对于自己来说最近的玩家将永远是你。
一、基础
以下的命令会于X
坐标加2的格子放置一个召唤僵尸的刷怪笼:
/setblock ~2 ~ ~ minecraft:mob_spawner{EntityId:Zombie}
下面的基础命令包含了6种可设置参数:
/setblock ~ ~-1 ~-3 mob_spawner {EntityId: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游戏刻),它会在参数MaxSpawnDelay
和MinSpawnDelay
设定的值中随机选取一个数。
- 若坐标设定为
~ ~-1 ~-3
会以命令方块为基准向Y
坐标向下1个方块,向Z
坐标减少三个方块处放置刷怪笼,它有可能会将刷怪笼放置于地底。提醒你,刷怪笼的SpawnRange
参数仅对水平方向有效,而不是垂直方向。在垂直方向,它只会在相同的高度生成生物,或者低1或者高1,所以将之嵌入地面虽然会使生成面积缩减2/3,但对将它隐藏起来是有帮助的。自然地,其生成高度减少了1/3,因为它们的高度比地面高1而不是2。
- 以上所使用的值均为默认值。
二、自定义生物
下一步要做的是修改生成数据。生成数据告诉刷怪笼你想要一个非标配的怪物,比如带有钻石剑和锁链头盔的僵尸:
/setblock ~ ~1 ~ mob_spawner{EntityId:Zombie,SpawnData:{Equipment:[{id:"diamond_sword",Count:1},{},{},{},{id:"minecraft:chain_helmet",Count:1}]}}
使用~
代替坐标的值,由于使用了上一个示例中的这6个参数,因此它们都是默认值。
注意:那五个槽顺序分别为Hand
(手)、Boots
(靴子)、Legs
(护腿)、Chest
(胸甲)和Helmet
(头盔)。 注意你必须也指定空的槽,除非它以后都是空的槽,例如,若只要指定武器,后面四个槽可以省略;但如要指定头盔,五个槽都必须打出来;若要指定靴子和护腿,第一、二和三的槽都必须显示,四和五的槽可以省去。
请记住,尽管是损坏的头盔,只要戴上它,那些会因阳光而燃烧的生物,就可以存活。
虽然大多数的代码中允许你忽略count
标签,但是count标签本身十分重要。一个没有count标签的物品是一个零栈(更通俗的叫法是“幽灵物品”)。幽灵物品会在玩家第一次使用时消失(这是一个失败),但怪物可以不受影响地使用幽灵物品(这就是为什么有时代码会遗漏掉它们)。如果怪物掉落了这些物品,拾起它们的玩家也无法使用这些物品,因此强烈建议使用count标签。
下一个自定义怪物是一个骷髅,它持有火矢附魔的弓,戴着保护II附魔的自定义生物头颅(蜘蛛,需要网络连接,否则只会显示Steve头颅),并且骑在骷髅马上。
/setblock ~2 ~1 ~2 spawner replace {EntityId:Skeleton,SpawnData:{Equipment:[{id:261,Count:1,tag:{ench:[{id:50,lvl:1}]}},{},{},{},{id:397,Count:1,Damage:3,tag:{ench:[{id:0,lvl:2}],SkullOwner:MHF_Spider}}],Riding:{id:"EntityHorse",Type:4,Tame:1,SaddleItem:{id:329,Count:1,Damage:0}}}}
严格来说,骷髅仅仅是坐在马上,因为骷髅的移动取决于它骑着的马,而马并不会与你敌对。注意不要把僵尸(或其他近战生物如僵尸猪人)放在马背上,它们的攻击范围不够,因此只能坐在马上什么也不干。所幸无论马如何移动,骷髅都可以进行射击。
至于马本身,它的类型为4(骷髅马),驯服被设置为1(是),并装备有一个马鞍(事实上,它们让我们指定哪种鞍座暗示着它们最终可能有不止一种类型)。从技术层面来说,你可以设置一个多级骑乘的生物,但你很快就会意识到这么做并不明智。
三、SpawnPotentials
标签
我们可以在刷怪笼中使用SpawnPotentials
标签来生成多种实体。当计时器重置时(生成前一个生物的后一秒钟),它会随机选择一个标签进行生成。由于这些代码包含多个生物,所以它们往往是相当长的代码。多亏了一位YouTuber(Dragnoz),我们知道了代码可以被“分解”的事实(命令方块忽略换行符,因此,您可以开始一个新的行来使一个部分在哪里结束、另一个部分在哪里开始变得更清楚明白,而且这不会破坏您的代码)。以下是一个SpawnPotentials
代码的例子,看起来更加“赏心悦目”:
此命令过长,可通过[显示]按钮查看
[显示]
这个命令包含了许多代码,因为它实际上是6个独立的生物。其中有:
- 在
SpawnPotentials
标签前:最前面的部分,出现一次之后就不会再出现了。如果希望它再次出现,你需要将之再次包含在SpawnPotentials
的部分中。这一生物是一个随机的穿着蓝色染色皮革裤子、绿色染色皮革外套,拿着一把木剑的僵尸。 - 同样是一只僵尸,只是这只僵尸的木剑耐久度只有3。
- 接下来一只看起来像个忍者。它是一只骷髅,但拿着一把铁剑。它所有的盔甲都染上了忍者般的黑色。带剑的骷髅能比僵尸更快地缩短与你的距离,所以要小心。
- 一只有石剑和锁链盔甲的僵尸。其盔甲上附有保护II。
- 接下来是有一把金剑,一身金盔甲,头上套着一个南瓜,并且着了火的僵尸。南瓜上附有保护II和火焰保护X,不顾一切地试着站起来并威胁玩家超过5秒。虽然这是有效的,不过如果玩家选择远离,南瓜头先生就会被烧死。噢,它的剑也像是着了火的样子。
- 有铁剑和铁盔甲的僵尸。剑上附有锋利II,盔甲上附有保护II。
- 最后一只生物,一只Fake HB,拥有附魔等级很高的钻石盔甲(附有火焰保护IV和掉落保护IV的钻石靴子,穿着附有爆炸保护IV的钻石裤子,附有保护IV的钻石胸甲,以及保护IV、火焰保护IV,爆炸保护IV和水下呼吸III的盔甲)以及一把附有锋利IV,击退IV,节肢杀手IV,掠夺III和耐久III的钻石镐。除此之外,它还获得了
CustomNameVisible
(设置为1表示yes),CustomName
,以及PersistenceRequired
(设置为1表示yes)。最后一个属性将阻止它消失,虽然它可以被正常手段所杀死(如果你能击败这一身钻石套和IV级附魔的话)。幸运的是,它比较少见(见下文)。
除了那个忍者,这里一共有5种不同的剑和盔甲。注意Weight
标签,其需要在每个SpawnPotentials
中的生物名称后使用。这决定了该生物被选中并生成的几率。具体的数字没有什么意义,有意义的只是数字之间的比例。例如,如果你想让所有预置生物等概率生成,则可以将每个Weight都设置为1,将它们全部改成8也没有什么不同(它们之间的比例仍然是相同的),但是将除了某一个之外的所有其他Weight更改为8则会使其中1/8的可能性与其余的1/8相同。在这段代码中,默认值是4,而忍者只有2(使它被选中的可能性减半),Fake HB只有1。
四、可骑乘生物
将生物的头设置为矿车或船,则可以骑乘它们。命令相当简单:
/setblock ~ ~1 ~ spawner {EntityId:MinecartRideable(or Boat), SpawnData:{Riding:{id:<Entity>}}}
提示:
- 有些生物不能用刷怪笼生成,比如boss们和铁傀儡。添加矿车也不会影响它们。
- 具有射击能力的敌对性怪物可以并且将使用它们来对付生存玩家。请注意。
- 恶魂不能骑乘。矿车将卡在它们的脑袋里,这对任何人都毫无用处。
- 末影人不能四处走动,但可以通过投掷或射击让它们传送(比如雪球)。
- 豹猫是速度最快的怪物之一,因为他们想要逃离你。它们也可以通过指向你想去的地方来控制。
- 蜘蛛是唯一在骑乘时会减速的生物。
- 史莱姆和它的近亲岩浆怪不能改变大小。
在更少的命令方块和递归中使用更多的命令
- 有几种方法可以将命令组组合为一个命令。
- 使用以下命令集进行递归:
/scoreboard objectives add counter dummy
/scoreboard players set target_count counter <target count>
/execute if score count counter < target_count counter <chained command>
/execute unless score count counter < target_count counter run scorebard objectives remove counter
/scoreboard players add count counter 1
- 要运行多个命令,请在激活铁轨上生成一个命令方块矿车,该命令方块矿车骑在另一个命令方块矿车车上,命令顺序相反。还有一些命令称为一个命令工具,使用这种策略。
- 使用
/function
。
- 参见:函数
使用地图作为通关依据(scroll)
YouTuber “SethBling”使用地图当作通关依据(scroll),当空白地图被使用时,会变成一般地图,那时,命令会立即将地图从玩家的物品栏清除,并执行命令(召唤生物、传送玩家),同时关卡通过。
优点
- 快速的互动。
- 紧凑的系统。
- 简单触发,只要使用右键即可激活。
缺点
- 滚动只能有一个目的,即如果不使用复杂的数据值,就不能进行传送滚动和强度滚动。
- 玩家在删除地图之前激活地图时可能会看到地图动画。
- 玩家在游戏过程中不能使用地图项目(显示短信、路径、绘图…)。
机制建设
玩家可以更改项目的显示名称,让玩家更好地了解对象并使用工具提示显示。使用以下命令为玩家提供自定义命名地图: /give <玩家> map{display:{Name:"<名称>",Lore:["<tooltip>"]}}
- player:你想接触的玩家(
@p
、@a[arguments]
…)。 - displayName:在热栏中滚动或用鼠标悬停项目时显示的名称。
- tooltip:悬停项目名称下方的文本。
检测地图的激活
- 这两个漏斗形成一个红石时钟。您可以使用显示的其他时钟。
- 命令方块 1 包含
/give
上面一节中描述的命令。如果玩家不希望滚动在被激活后回来,它可以被取消。 - 命令方块 2 包含库存检查命令:
/clear <玩家> filled_map
- 命令方块 3 是成功时的输出。你可以做任何想要做的事情:比如给予玩家某种效果,传送玩家到某处,等等。你也可以将输出连接到门,活塞,或是其他接收红石信号的方块。
进阶
/clear
命令可以检验其他可交互的物品:
- 在玩家刚喝过药水时检验玻璃瓶。
- 在收起钓线时检验钓鱼竿。
/clear
命令的语法中,在物品名后包含另一个参数,是物品的耐久度:
/clear <玩家> fishing_rod{Damage:2}
请注意如果钓到了地面或者生物时,钓鱼竿可能会损失不少于2点耐久度,所以对每2点耐久度都进行一次检验。