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-]
视频介绍:
//player.youku.com/player.php/sid/XMTUyODUxOTYzNg==/v.swf