模拟爬行者爆炸

By MCSugar_cane    2017/11/24

用命令方块模拟爬行者的爆炸,在开启怪物可破坏方块规则下使爬行者爆炸不破坏地形,代码适用版本为1.11.2-1.12


模拟爬行者爆炸

图片就介绍到这里,下面是思路以及代码部分~


整体思路:

关于数据值ExplosionPower:的说明,是火球等一般实体的爆炸威力,若将其改为负数,则不会破坏地形以及造成伤害,固在这里起到了关键作用。

根据之前的想法,我是想通过当爬行者开始爆炸时,便给其gboom加分,到一定值时,在爬行者位置生成一个爆炸威力为负数的火球,并播放爆炸粒子效果后将爬行者tp出世界(也可以看做kill爬行者)。但令我无奈的是,无法根据NBT获取到爬行者开始爆炸时间!!!(冷漠脸.png),固在此我直接模拟了原版中玩家(生存和冒险模式下)靠近爬行者即爆炸的机制。


代码:

创建变量:

  1. /scoreboard objectives add gboom dummy

使生存和冒险模式被检测:[高频循环]

  1. /scoreboard players tag @a[tag=sa,m=1] remove sa
  2. /scoreboard players tag @a[tag=sa,m=3] remove sa
  3. /scoreboard players tag @a[tag=!sa,m=0] add sa
  4. /scoreboard players tag @a[tag=!sa,m=2] add sa

标记被检测玩家附近爬行者:[高频循环]

  1. /execute @a[tag=sa] ~ ~ ~ scoreboard players tag @e[type=Creeper,tag=sboom] remove sboom
  2. /execute @a[tag=sa] ~ ~ ~ scoreboard players tag @e[type=Creeper,r=5] add sboom

被标记爬行者开始爆炸反之则否:[高频循环]

  1. /execute @e[type=Creeper,tag=!sboom,score_gboom_min=1,score_gboom=27] ~ ~ ~ summon Creeper ~ ~ ~
  2. /tp @e[type=Creeper,tag=!sboom,score_gboom_min=1,score_gboom=27] ~ ~-1000 ~
  3. /scoreboard players add @e[type=Creeper,tag=sboom] gboom 1
  4. /entitydata @e[type=Creeper,score_gboom_min=5,score_gboom=5] {ignited:1}
  5. /execute @e[type=Creeper,score_gboom_min=28,score_gboom=28] ~ ~ ~ summon Fireball ~ ~1 ~ {power:[0.0d,-55.0d,0.0d],direction:[0.0d,-55.0d,0.0d],ExplosionPower:-3}
  6. /execute @e[type=Creeper,score_gboom_min=28,score_gboom=28] ~ ~ ~ /particle hugeexplosion ~ ~ ~ 0 0 0 0.3 1 force
  7. /tp @e[type=Creeper,score_gboom_min=29,score_gboom=29] ~ ~-1000 ~


OOC:

v1.11.2-v1.12
展开


欢迎加群交流划水:481528679