命令方块(Command Block)又称命令块,是游戏《
Minecraft》里,被
红石信号激活后(在Java1.9加入了保持开启的功能,无需红石)能执行
命令的方块,这对冒险地图提供了极多的功能。
获取方式
命令方块可以通过选取方块键或各种命令获取。
获取命令方块指令:/give [玩家] minecraft:command_block 1 0
基岩版获取指令:/give @s command_block 64
在1.8之前,物品id可用数字id,命令方块id为137。
命令方块不在
创造模式物品栏中,不能在
生存模式、冒险模式中或非管理员身份破坏,有和
基岩一样的爆炸抗性。命令方块不能被
活塞推动。
用途
命令方块可以被红石信号所开启。此项没有权限限制,可以被一些通常情况不能使用命令的玩家执行一个特定的命令(比如,允许所有人通过/
give获得一件特定的物品,而不能让他们用/give获得任何他们想要的东西)。
设置
要输入或修改命令,对命令方块点击使用键以打开命令方块GUI(图形用户界面)。GUI只会在玩家处于创造模式, 拥有相关权限才会打开。在单机游戏里,作弊必须开启,使得可以编辑命令方块。在多人游戏中,只能由创造模式中的管理员所编辑。为了使命令方块能工作,以下在server.properties的配置必须设置为:
控制台命令
脉冲/循环/连锁(1.9)
条件制约/不受制约(1.9+)
保持开启/红石控制(1.9+)
完成
取消
激活
命令方块属于红石机械且能由以下物件激活:
连锁执行
连锁中的方块将在同一游戏刻执行命令。连锁执行中无法传递过一个已经在这个游戏刻执行过命令的方块。
输出
当激活时,命令方块可以有几种不同类型的输出:
红石比较器
消息
命令统计
注意事项
以下命令不能在命令方块中使用:/ban(因为如果加上@a、@e、@p可能会导致所有传入服务器的连接被禁止)、/banlist、/ban-ip、/debug、/deop、/kick、/op、/pardon、/pardon-ip、/publish、/save-all、/save-off、/save-on、/stop和/whitelist(也就是,/debug、/publish和所有除了/list外的多人游戏命令)。
以下命令可以使用但功能受限(它们的输出只会在命令方块的“上一个输出”文本框显示而不是聊天框):/help、/seed、/list、/scoreboardobjectives、/scoreboardplayers和/scoreboardteams list。
以下命令会在输出中用到命令方块的名字(默认为“@”):/me、/say和/tell。
数据值
命令方块拥有并在方块数据和方块实体中有更深的定位。命令方块也有方块状态旨在未来的版本中取代方块数据,
ID
命令方块的ID决定于其类型:
Command Block ID名称:minecraft:command_block 方块/物品ID:137
Repeating Command Block ID名称:minecraft:repeating_command_block 方块/物品ID:210(PE版为188)
Chain Command Block ID名称:minecraft:chain_command_block 方块/物品ID:211(PE版为189)
数据值方块数据
命令方块的方块数据用于确定方块是否处于开启状态:
在1.9:
位元0x1,0x2,0x4
3个位元的空间储存了命令方块的朝向
位元 0x8
未使用但设置后造成命令方块的朝向相似于那些没有设置位元的方块。
方块实体数据方块实体值
方块状态
JAVA历史
教程/命令方块
命令方块是一种帮助支持冒险模式,生存服务器(SMP)的自动化和自定义地图的方块,了解更多细节,请参见命令方块页。如果玩家不知道在某些命令中如何设置x,y,z的值最好先看看坐标。
一般应用
命令方块可以做许多事情,改变难度,改变天气的状态,或者给玩家预先指定的物品等。他们在这些领域特别有用:/weather和/time命令(在部分基岩版、中国版中有菜单可以直接设置) /time命令很有用,它允许玩家改变当前预定时间再按下一个开关。
命令方块也可以被用来使文本出现于人的聊天菜单。格式是tell @p , 或者tell .如果加上@p在tell的后面,那么只有最近的玩家会看到信息 If a username was specified, the username will be sent the message.
玩家可以用已下命令去改变难度/difficulty x 0=和平,1=简单,2=普通,3=困难,或者在后面直接打上难度的名字。(例如:/difficulty peaceful。)(数字id在1.13被禁用。)
另一种方法是使用命令块使用/ tp @p 坐标大于在玩家的世界之间的不同基地传送
有的玩家讨厌压力板和4种材料混合在一起(石,木板,铁和金)但是不必担心,压力板可以采用命令/命令块代替testforwith范围和时钟电路。命令/测试@ P [ 2 ] r将测试以查看是否有任何玩家在2范围内(命令本身加上各个方向的2块)。2是你想要的一个命令块下一层的范围。记住,这将产生一个球形触发区(而不是一个立方体),所以一系列的2座约5x5x5面积和范围1是一个3x3x3地区(更像是一个额外的块以上+模式下中心)。您可以通过使用DX绕过这个,Dy和DZ的论点。或者你可以在代码中指定XYZ坐标。例如/测试@ P [ x = 50,y = 64,z = 46,r = 1 ]但被警告说,不能把范围缩小到1块点。与非XYZ版本范围的中心块加块周围的范围,这是得从一个命令块感。“只是中心块”意味着你必须站在命令块上,但在这里没道理。在任何速度范围1+模式与顶部和底部的一个额外的块,可以埋在地下的顶贴出来,只要你知道没有人会走通过底部2层的世界。在这个代码中非XYZ版本需要命令本身是嵌入在地板表面可以看出。
使用命令
通过更改游戏模式可以在单人模式之外的创造性使用命令方块。输入/gamemode 1命令 变成创造模式,设置命令方块命令,无论你想要什么指令,然后换回/gamemode 0。该命令方块只需要设置在创造模式,但仍将功能恢复正常。
它也可以被用来传送到特定区域(例如一个遥远的据点,深入挖掘操作,或浮动岛)。如果你花了很长的时间去那里,如果你不介意作弊,你可以设置一个传送系统。确保你在创作模式而设置使用命令/游戏模式1。如果你没有开启作弊,打开局域网和设置的作弊,但你仍然可以激活它的生存模式。键入该命令时,该命令的命令块。然后,激活命令块,和你将被发送到遥远的目的地。你可以设置多个不同的传送。这也可以用来做一个大项目,跨越一个非常大的区域,或如果你将箱子从老房子到新房子的时候。
探险地图绘制
如果一个人希望创造一个单人玩家的探险地图,做/publish命令来让其他的命令(见下方)被使用。
多人中的应用
这个章节详细介绍了命令方块在多人游戏中的应用。
通过/tp指令,可以制作一个所有人都可以使用的传送装置。可以在每个地方都使用。 例如,在整个世界里做一个庞大的传送系统,所有的传送点入口都汇集到传送大厅中,而传送大厅可以进入每个传送点入口处进而达到出口。这样就可以建造一个“快速交通中心”了。
通过使用/tp,或者Minecraft地图编辑器,例如MC地图编辑器可以复制一张图片(利用方块做出来的绘画),然后粘贴到一处遥远的地方,并变动绘画的一些方块,利用一些压力板或者绊线钩,在玩家短时间欣赏绘画后,命令方块做出/tp指令,将玩家传送到下一张绘图点. 如果大量的复制粘贴这样的零件,让玩家按顺序的在这些之间传送并稍稍弄出一点点的延迟,那么玩家就会产生幻觉,认为这个绘画是在运动的(甚至认为是某MOD做出来),这就是利用命令方块来实现定格动画技术。
1.7+里可以使用/setblock来直接放置和删除方块,利用/setblock还可以免除传送时不必要的卡顿和一大堆的房间,而1.8+的/fill和/clone更是可以极其方便地放置、复制大量的方块。
用/give @r命令,可以创造一个抽奖。但是记住,/give命令实质是在他们身上召唤一个可以被瞬间拾起的物品,并且在非常准确的位置,那个玩家会最先拾起它
如果使用参数[m=1],那么只有创造模式的玩家才会受到这条命令的影响,当然输入m=0既只对生存模式的玩家有效。
你可以放置一个命令方块,输入“/tp @p[m=1] <坐标>”或者一些整人命令。当创造模式的玩家激活这个命令方块就会被传送到某个地方或者变成生存模式。
注:使用AutoMessage等服务端插件就可以达到自动公告的功能
注:大部分服务器管理插件支持封禁危险物品。
使用/clear指令, 你可以清除玩家背包中的某物品。具体步骤是这样的,使用/clear @a(或者某玩家ID) <清除的物品名>。如果想实现自动清理危险品需要连接循环红石。
使用/say @p,命令方块就能报告最近的玩家。如果命令方块放在终点线后,他会很方便的说出赢家,但是/say会给所有玩家发送信息,为了防止刷屏,建议使用/tell或/tellraw。
注:Residence等服务器领地插件的拓展插件可以实现领地内游戏模式的变化。
你可以通过命令方块创造一个“创造/生存模式区域”,但是很繁琐。可以通过用命令方块的范围限制来制作一个“围栏”,通过围栏的玩家会变成生存或创造模式。在命令方块中输入指令/gamemode 2 @a[x=<区域中心坐标> y=<区域中心坐标> z=<区域中心坐标> r=<最大的玩家搜索半径> rm=<最小的玩家搜索半径>]这样放置两个搜索区域不重合的命令方块,就可以将规定半径内的玩家改变模式。
使用指令 /gamerule keepInventory true 来关闭玩家死亡后的物品掉落(同样在重生后会保留物品和经验等,所以需要在玩家重生后清空背包) 。使用 /give @p <物品ID>可以给予玩家武器(可以添加NBT标签),你可以设计一套完善的职业系统,玩家选择不同的职业会有不同的装备。使用 /spawnpoint [x y z坐标] 设置玩家重生地点,使用 /tp [x y z坐标]移动地图中的玩家到指定区域。
通过McEdit滤器可以编辑那些服务器内的文本,或使用§+0~9、a~f均可打出不同颜色的彩字
同时/tellraw可以直接利用color等参数来弄出彩色字体
当玩家走上踏板时,他能触发命令方块 /say @p <警告内容>
如果某个玩家在服务器有着过人的贡献或者有元老资历,但却不足给他管理,你可以奖励他一组钻石或者一些奇怪的东西.... 创建一个只有通过传送指令才能进入的房间,将有贡献的玩家传送进去,玩家会激活房间中的命令方块从而获得奖励,而后他又会被另一个命令方块传送回原地,如果服务器允许/back的话,连续2次传送到原点,这样/back就无效了。(可以避免玩家二次领取奖励)
使用/toggledownfall和/weather thunder来开始或者结束降雨(雷雨。)合理安排这个指令的权限会十分有用, 你可以顺随自己的意愿开始或停止降雨。这个技术可以用于村民和一些由降水控制的红石机械,不用输入任何指令就可以控制天气(需要管理员激活命令方块自动执行), 合理利用将会十分有效,比如在森林火灾时或者在雨天刷怪
使用/tp @p 和 /give @p,你可以制作一个障碍赛跑或者奖励迷宫,游戏结束后就将玩家传送回出生点或其他地方。
在地图上模拟两个十分相似的环境,通过命令方块将玩家从一个 tp(传送)到另一个,并且时间也会被设置为开始的时刻,这就好像是时间倒退。 注:可以广泛用于剧情RPG地图。
使用指令/testfor @p[r=<检测范围>,name=<玩家名(如果没有限制可不写)>]使用红石中继器连接命令方块和TNT,当命令方块检测到有玩家经过就会激活TNT。 注:命令方块的/testfor指令为一次性指令,命令方块检测到一次就会一直输出信号,如果需要多次性的话,你可以直接使用/summon召唤出TNT。
通过使用/testfor @p[r=5,name=<房主>],命令方块会在一定范围内检测房主并且为他开门,也只会为他开门。 注:命令方块的/testfor指令为一次性指令,命令方块检测到一次就会一直输出信号。
自定义地图
这一节详细介绍了命令方块在自定义地图的应用。
Minecraft中使用大量命令方块的地图有很多优势。 比如:SethBling's TF2 Map
另一个优秀的应用例子是 Hypixel's Gladiator Arena,这个地图中的战斗职业系统完全依赖于命令方块。
在地图中控制命令方块不输出提示信息很重要,这可以保持玩家对地图的未知性和剧情的隐蔽性,如果玩家看到了各种指令的提示信息,地图将会索然无味。 关闭命令方块输出信息(除非是/say这类的指令)使用/gamerule commandBlockOutput false就可以实现。
使用压力板或者绊线 (以安全城堡为例)检测到有玩家进入城堡的话就把游戏模式设置为和平模式(对于不同区域视情况而定)。城堡大门可以有连接命令方块的绊线,玩家一旦走过绊线,激活命令方块,就会变为和平模式,这样就可以创造一个“避难所”。反之,你可以用同样的方法创造一个“困难模式区域”,只要有玩家进入游戏模式就会变为困难模式。
使用值[m=1]你就可以设置指令只对创造模式的玩家有效,生存模式就是[m=0]。 例:传送所有创造模式的玩家到254,47,-874,使用的指令为 /tp @a[m=1] 254 47 -874
(更多:[lm=x,l=x,m=x,x=x,y=x,z=x,r=x])
在房间的入口或者出口设置一个 /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指令非常有用因为它可以直接给玩家发送消息. 用命令方块将会更好,这样你就不需要放很多的牌子和编页码长到不行的书来告诉玩家游戏规则. 你只需要把命令方块放成一条线然后在中间铺中继器来弄各个语段之间的延迟(so the player isn't spammed)接着你就可以把那堆牌子和放着书的箱子移走。
有一些是和NPC配合使用的. 想象一下你进了铁匠铺并且你想要让里面的铁匠说些什么。在命令方块出现之前, 你需要一些书和牌子来充当对话的效果, 然后在铁匠铺里造些房间并放些杂物,这样会让这个铁匠铺看起来变得非常乱,但是你只需要使用/say命令来制造铁匠说话的效果. 也许一头猪在柜台后面甚至会乞求怜悯。让我们再举一个例子:你在一个工厂里,一个闹钟突然响了,说它会爆炸。在聊天中,特别是如果文本很长,让那些有压力的心情;同样的事情为炸弹定时器。玩家将获得更多的地图的心情,如果聊天显示“10……”8……' 9…。
最后但并非最不重要的,它使它更容易创建一个探索系统。比方说,球员会在一个屠宰场。他通过激活连接到RS和锁存器压力板(所以无法激活两次)和/ saycommand,屠夫要求玩家的帮助命令块:他要杀一头猪(可耻)。玩家在一块石头上的压力盘上得到了一头猪,当猪死了的时候,他就开始了。所以,当玩家回到屠杀,他激活另一个电路包含另一个RS和锁存器和两命令两命令块。首先,/ saycommand,屠夫感谢球员,和其他人,/ givecommand,所以玩家得到奖励。在那之后,别忘了使用“命令”,所以屠夫说,玩家的名字。例如,如果命令块被设置为:谢谢,“你帮我杀了那头猪”,频道会说:“谢谢,”。你帮我杀了那只猪,“这使地图更酷,看起来像是为玩家做的,因为它说他/她的名字。
使用/give @p[lm=(等级)] (物品) (数量)和/xp -(等级)l @p[lm=(等级)],你可以创建一个使用经验交易物品的商店系统。例如,如果你创建了一个使用/give @p[lm=5] 2 64的命令方块以及一个使用/xp -5l @p[lm=5]的命令方块,并把它们连接到同一个红石电路,那么激活时就会从最近的玩家身上扣除5级经验并给他64个草方块。
1.7指令用法
Minecarts over floating rails created with the setblock command. (矿车多年来与setblock命令搭配来创造浮空铁轨。)
在1.7版本中,命令方块的潜力得到了扩大。也就是/summon /setblock命令的添加, 并可用于自动构建结构,填充箱子,以及生成以前不能生成的实体。 下面是这些命令的语法:
setblock的使用方法:/setblock <方块名> [数据值] [旧方块处理方式] [数据标签]
summon的使用方法:/summon <实体名> [x] [y] [z] [数据标签]
setblock指令也可以用于做突然消失的地板或突然出现的墙。
/give、/summon、/setblock等指令只能用方块数字代码,暂不支持英文。
我的世界分类项
任何游戏模式