Hey!這次給大家帶來一個新的commandblock教程貼。(靈感來自于小游戲服務器的Survival Games)教材大概意思就是:當你拿到一個TNT并放置時,TNT會自動爆炸,注: 本教材由本人獨立完成,并非抄襲!!
首先,創建幾個積分榜:
/scoreboard objectives add usetnt stat.useItem.minecraft:tnt
/scoreboard objectives add usetnt2 stat.useItem.minecraft:tnt
兩個積分榜看似差不多,但是實際用途不同。
積分榜usetnt用于召喚指定實體和放置方塊
積分榜usetnt2用于召喚用于探測TNT位置的實體
下面給自己一個TNT(創造模式自己拿出也行)
/give @p minecraft:tnt 1 0 {ench:[{id:0,lvl:10}]}
-------------------------------------
當玩家放置了TNT后,usetnt和usetnt2的積分都會加1.
以下指令2條指令命令方塊循環激活:
玩家放置TNT后,生成一個盔甲架,用于召喚指定實體和放置方塊
/execute @a[score_usetnt_min=1] ~ ~ ~ /summon ArmorStand ~ ~ ~ {CustomName:"tnt",Marker:1,Invisible:1b,Silent:1b,NoGravity:1b}
當tnt盔甲架生成后,放置一個紅石塊在指定位置(坐標自己訂):
/execute @e[name=tnt] ~ ~ ~ /setblock 122 4 -421 minecraft:redstone_block
在坐標處旁用紅石連上命令方塊:
下面進行探測TNT方塊的位置,據估計需要81個命令方塊進行探測,因為進過本人測試:玩家在生存模式是放置方塊是最多只能放4格遠。通過計算得出放置方塊的面積:(4x2+1)x(4x2+1)=81 ,所以需要81的命令方塊進行探測。
因為指令太多,不一一列出,拿幾個當例子:
/execute @a[score_usetnt2_min=1] ~ ~ ~ /summon ArmorStand ~-2 ~5 ~-4 {CustomName:"tnt1",Silent:1b,Marker:1b}
/execute @a[score_usetnt2_min=1] ~ ~ ~ /summon ArmorStand ~-2 ~5 ~ {CustomName:"tnt1",Silent:1b,Marker:1b}
/execute @a[score_usetnt2_min=1] ~ ~ ~ /summon ArmorStand ~-2 ~5 ~1 {CustomName:"tnt1",Silent:1b,Marker:1b}
/execute @a[score_usetnt2_min=1] ~ ~ ~ /summon ArmorStand ~-1 ~5 ~2 {CustomName:"tnt1",Silent:1b,Marker:1b}
當玩家放置TNT方塊時,生成81個盔甲架進行對在81格范圍內的TNT方塊進行探測,因為給盔甲架加了個Marker的NBT,所以若有生物想攻擊玩家,"tnt1"不會擋住攻擊并影響傷害。
因為玩家最多只能放4格遠,所以生成的盔甲架的x和z坐標的絕對值不能大于4,y坐標不能小于5,因為TNT方塊的y坐標和玩家的y坐標可能會不同,所以“tnt1"的y坐標必須大于玩家的最大放置距離,盔甲架從上方5格落下便可探測到與玩家的y坐標不同的TNT方塊。
-------------------------------------
以下7條指令命令方塊循環激活:
給落下的盔甲架一個隱形的效果,不擋視線:
/entitydata @e[name=tnt1] {Invisible:1b}
當盔甲架落到TNT方塊上(也就是說探測到了TNT方塊的方位時),生成一只蝙蝠,蝙蝠用于生成炸彈并清除TNT方塊:
/execute @e[name=tnt1] ~ ~ ~ detect ~ ~-1 ~ minecraft:tnt 0 summon Bat ~ ~1 ~ {NoAI:1,Silent:1b,CustomName:tntbat,CustomNameVisible:1,ActiveEffects:[{Id:14,ShowParticles:0b,Duration:99999}]}
清除TNT方塊:
/execute @e[type=Bat,name=tntbat] ~ ~ ~ /setblock ~ ~-2 ~ minecraft:air
生成”偽炸彈“,”偽炸彈“只是為了造成視覺的錯覺,真正的爆炸還是要靠苦力怕(因為開了防爆后苦力怕不會破壞地形,而TNT會)
/execute @e[type=Bat,name=tntbat] ~ ~ ~ /summon PrimedTnt ~ ~-2 ~ {Fuse:10000}
偽炸彈爆炸慢,待清除...
生成苦力怕進行爆炸:
/execute @e[type=Bat,name=tntbat] ~ ~ ~ /summon Creeper ~ ~-2.6 ~ {ActiveEffects:[{Id:14,ShowParticles:0b,Duration:99999}],Silent:1b,ignited:1,ExplosionRadius:3,Fuse:60,CustomName:TNTCreeper}
清除蝙蝠:
/effect @e[type=Bat,name=tntbat] 7 1 1 true
爆炸前TNT特效:
/execute @e[type=PrimedTnt] ~ ~ ~ /particle lava ~ ~0.1 ~ 0 0 0 0.2 1
這樣在放置的TNT處產生爆炸就完成了
-------------------------------------
在坐標處另一旁用紅石連上命令方塊:
把玩家的usetnt2的分數設為0,以便重復激活:
/scoreboard players set @a[score_usetnt2_min=1] usetnt2 0
清除tnt1盔甲架:
/kill @e[name=tnt1]
-------------------------------------
當生成Creeper過一段時間后,把”偽炸彈“清除:
探測苦力怕:
/testfor @e[name=TNTCreeper] (循環)
紅石比較器和中續器連上:
/execute @e[name=TNTCreeper] ~ ~ ~ /kill @e[type=PrimedTnt] (循環紅石激活)
-------------------------------------
[-TNT-]
視頻介紹: