我的世界里面命令方块是个非常强大的工具,玩家可以通过命令方块来实现很多功能,这也是游戏最大乐趣所在,不过想要弄懂命令方块还需要一些代码知识,下面是爆破系统原理实现方法详解。
爆破系统原理详解
这是主要处理部分,命令方块比较多,将给大家详细讲解。(将以羊毛颜色命名命令方块)
前端输入区
主要目的:探测玩家是否有安放C4的动作,并输入信号。
首先一个命令方块脉冲(←点击“脉冲”进入教程)连接蓝色。
蓝色:
/testfor @p[388,8,381,r=0] {SelectedItemSlot:4,Inventory:[{Slot:4b,id:"minecraft:firework_charge",tag:{display:{Name:"C4"}}}]}
命令讲解:探测某方位(地图中红色地毯处,也就是C4安放点)那个方块位置的最近玩家、且手里拿着在5号物品栏(模仿背包中的C4为止)的名为C4的烟火之星。
若探测是,则输出黄色
黄色:在绿色放置一个红石块
绿色开启脉冲,激活安包区
主要目的:显示安包时间、刷出实体C4
绿色下面:
/xp 8l @p
命令讲解:给予最近(因为前面已经探测到了最近玩家持有C4,不用增加判据)玩家8级经验。
脉冲长度5刻,模拟大概1秒
白色:
/xp -1l @p
命令讲解:(每秒)减少最近玩家1级经验。
于是制作了一个经验条显示器。
灰色组:
/effect @p 2 2 255 true
命令讲解:(每秒)给予玩家长度2秒,等级255(无法移动)并隐藏颗粒物的缓慢效果。
/testfor @p[l=0]
命令讲解:探测玩家等级0,若是则输出。
深灰组:
/summon Item 388 8 381 {Item:{id:firework_charge,Count:1},PickupDelay:1000000000,Age:-32768}
命令讲解:在下包处(红色地毯处)生成一个无法捡起的烟火之星。(无法捡起物品的教程)
/clear @p firework_charge 0 1 {display:{Name:"C4"}}
命令讲解:清除玩家物品栏里的C4
在“前端输入区”红色处防止一个红石块,一个命令方块把红色羊毛设为空气,且激活:
/scoreboard players set @e[type=Item,c=-1] firework 1
命令讲解:给最近物品的firework计分板分数设为1。
首先我们需要一个实体计分板firework来探测:
/scoreboard objectives add firework dummy firework
这样做的主要目的是execute无法直接添加NBT标签,只能通过这样增加判据。
黑色组:
开启爆炸计时区、拆弹区、关闭安包区。
爆炸计时区
主要目的:显示爆炸倒计时、爆炸特效及重置。
当红色下面得到红石块输入后,激活三个命令方块:
按照先后信号顺序实现上下后左右
所以下面是:
/scoreboard objectives add C4DetonatingTime dummy C4DetonatingTime
命令讲解:创建名为“C4引爆时间”的计分板。
接着左右:
/scoreboard objectives setdisplay sidebar C4DetonatingTime
命令讲解:把这个计分板设置到侧边栏。
/scoreboard players set @a C4DetonatingTime 30
命令讲解:分数设为30(模拟30秒)
接着仍然也是激活一个5刻(长度1秒)的脉冲,连接黄色:
/scoreboard players remove @a C4DetonatingTime 1
命令讲解:(每秒)给这个计分板减1.
也连接蓝色:
/testfor @a[score_C4DetonatingTime=0]
命令讲解:探测全部玩家分数0,若是,则输出信号
绿色组(负责爆炸特效):
/execute @e[type=Item,score_firework_min=1] ~ ~ ~ kill @e[type=!FallingSand,r=10]
命令讲解:杀死所有在firework分数为1的物品周围10个方块单位的实体(除了掉落沙是因为周围有一个命令方块脉冲,同时也清除了C4)
/playsound ambient.weather.thunder @a ~ ~ ~ 1 1 1
命令讲解:给所有人播放打雷的音效。
/execute @e[type=Item,score_firework_min=1] ~ ~ ~ /particle largeexplode ~ ~ ~ 10 10 10 0.001 2000
命令讲解:在firework分数为1的物品处生成一个范围10,时间0.001,颗粒数量2000的大型烟雾
/scoreboard objectives remove C4DetonatingTime
命令讲解:删除倒计时计分板。
棕色(负责重置):
关闭爆炸倒计时、关闭拆包探测、关闭拆包倒计时、重置经验(若拆包失败及时清除倒计时)。
紫色:在拆包区另外讲解。
拆包区
主要负责拆包倒计时、重置。
首先我们来看一下警匪判据:
/scoreboard objectives add ispolice dummy
命令讲解:创建一个判断警匪的计分板。
若选择警察:
/scoreboard players set @p ispolice 1
则设为1
若选择土匪:
/scoreboard players set @p ispolice 0
/give @p firework_charge 1 0 {slot:4b,display:{Name:"C4"}}
设为0,并且给个C4。
所以若拆包,就探测这个人是否为警察。
拆包探测区:
红色:
/execute @e[type=Item,score_firework_min=1] ~ ~ ~ execute @p[score_ispolice_min=1,r=0] ~ ~ ~ playsound random.successful_hit @p[sore_ispolice_min=1] ~ ~ ~ 1 1 1
命令讲解:探测firework为1的物品(C4)接触到警察就播放ding的音效,并输出黄色
黄色:激活拆包倒计时
/xp 8l @p[score_ispolice_min=1]
给警察8级经验
倒计时区:
激活5刻(长度1秒)脉冲。激活蓝色组:
/xp -1l @p[score_ispolice_min=1]
命令讲解:(每秒)减去警察1级经验
/effect @p[score_ispolice_min=1] 2 2 255 true
命令讲解:(每秒)给予警察长度2秒,等级255(无法移动)并隐藏颗粒物的缓慢效果。
绿色:
/testfor @p[score_ispolice_min=1,l=0]
命令讲解:探测警察等级0,若是,则输出信号。
输出棕色:
/scoreboard objectives remove C4DetonatingTime
命令讲解:移除爆炸倒计时计分板
/kill @e[type=Item,score_firework_min=1]
命令讲解:清除C4
并且关闭爆炸倒计时、关闭拆包探测、关闭拆包倒计时
最后两个紫色一起讲:
若C4爆炸,则
匪:
/tellraw @a[score_ispolice=0] {text:"Explosion C4 successfully!",color:red,bold:true}
警:
/tellraw @a@a[score_ispolice_min=1] {text:"C4 has exploded",color:gray,bold:true}
若拆包成功,则:
警:
/tellraw @a[score_ispolice_min=1] {text:"Demolition C4 successfully!",color:red,bold:true}
匪:
/tellraw @a[score_ispolice=0] {text:"C4 has been defused",color:gray,bold:true}
最后希望大家能从中增长下命令知识