[MCBE][指令]多功能箭

给玩家提供各种火箭箭

/give @p firework_rocket 64 4
/give @p firework_rocket 64 5
/give @p firework_rocket 64 6
/give @p firework_rocket 64 7
/give @p firework_rocket 64 8
/give @p firework_rocket 64 9
/give @p firework_rocket 64 10
/give @p firework_rocket 64 11

积分板设置

/scoreboard objectives add 箭 dummy
/scoreboard objectives add 碰撞 dummy

检测与识别箭种给予标签

execute @e[type=arrow,tag=!箭] ~~~ execute @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=4}] ~~~ tag @e[type=arrow,tag=!箭,r=3,c=1] add 种类1
execute @e[type=arrow,tag=!箭] ~~~ execute @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=5}] ~~~ tag @e[type=arrow,tag=!箭,r=3,c=1] add 种类2
execute @e[type=arrow,tag=!箭] ~~~ tag @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=5}] add 爆裂箭
execute @e[type=arrow,tag=!箭] ~~~ execute @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=6}] ~~~ tag @e[type=arrow,tag=!箭,r=3,c=1] add 种类3
execute @e[type=arrow,tag=!箭] ~~~ execute @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=7}] ~~~ tag @e[type=arrow,tag=!箭,r=3,c=1] add 种类4
execute @e[type=arrow,tag=!箭] ~~~ execute @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=8}] ~~~ tag @e[type=arrow,tag=!箭,r=3,c=1] add 种类5
execute @e[type=arrow,tag=!箭] ~~~ execute @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=9}] ~~~ tag @e[type=arrow,tag=!箭,r=3,c=1] add 种类6
execute @e[type=arrow,tag=!箭] ~~~ execute @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=10}] ~~~ tag @e[type=arrow,tag=!箭,r=3,c=1] add 种类7
execute @e[type=arrow,tag=!箭] ~~~ execute @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=11}] ~~~ tag @e[type=arrow,tag=!箭,r=3,c=1] add 种类8
execute @e[type=arrow,tag=!箭] ~~~ tag @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=11}] add 传送箭

清除相应的火箭物品

execute @e[type=arrow,tag=!箭,tag=种类1] ~~~ clear @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=4}] firework_rocket 4 1
execute @e[type=arrow,tag=!箭,tag=种类2] ~~~ clear @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=5}] firework_rocket 5 1
execute @e[type=arrow,tag=!箭,tag=种类3] ~~~ clear @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=6}] firework_rocket 6 1
execute @e[type=arrow,tag=!箭,tag=种类4] ~~~ clear @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=7}] firework_rocket 7 1
execute @e[type=arrow,tag=!箭,tag=种类5] ~~~ clear @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=8}] firework_rocket 8 1
execute @e[type=arrow,tag=!箭,tag=种类6] ~~~ clear @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=9}] firework_rocket 9 1
execute @e[type=arrow,tag=!箭,tag=种类7] ~~~ clear @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=10}] firework_rocket 10 1
execute @e[type=arrow,tag=!箭,tag=种类8] ~~~ clear @p[r=3,hasitem={item=firework_rocket,location=slot.weapon.offhand,data=11}] firework_rocket 11 1

给箭添加标签

tag @e[type=arrow,tag=!箭] add 箭
scoreboard players add @e[type=arrow,tag=箭] 箭 1

箭种效果后台执行

爆破箭

execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..}] ~~~ scoreboard players set @s 碰撞 0
execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..}] ~~~ detect ~ ~0.3 ~ air 0 scoreboard players add @s 碰撞 1
execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..}] ~~~ detect ~ ~-0.3 ~ air 0 scoreboard players add @s 碰撞 1
execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..}] ~~~ detect ~0.3 ~ ~ air 0 scoreboard players add @s 碰撞 1
execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..}] ~~~ detect ~-0.3 ~ ~ air 0 scoreboard players add @s 碰撞 1
execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..}] ~~~ detect ~ ~ ~0.3 air 0 scoreboard players add @s 碰撞 1
execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..}] ~~~ detect ~ ~ ~-0.3 air 0 scoreboard players add @s 碰撞 1

execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=3..}] ~~~ execute @e[type=!item,type=!arrow,r=6] ~~~ scoreboard players set @e[type=arrow,tag=箭,tag=种类1,scores={箭=3..},r=6] 碰撞 0
execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..,碰撞=..5}] ~~~ particle minecraft:knockback_roar_particle
execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..,碰撞=..5}] ~~~ particle minecraft:huge_explosion_lab_misc_emitter
execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..,碰撞=..5}] ~~~ playsound random.explode @a[r=50]

execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..,碰撞=..5}] ~~~ damage @e[r=10,type=!item] 20 entity_explosion
execute @e[type=arrow,tag=箭,tag=种类1,scores={箭=1..,碰撞=..5}] ~~~ kill @s

爆裂箭

execute @e[type=arrow,tag=箭,tag=种类2,scores={箭=1..}] ~~~ kill @s
execute @a[tag=爆裂箭] ~~~ summon boat ^^^-3
execute @a[tag=爆裂箭] ~~~ summon boat ^0.1^^-3
execute @a[tag=爆裂箭] ~~~ summon boat ^-0.1^^-3
execute @a[tag=爆裂箭] ~~~ summon boat ^0.25^^-3
execute @a[tag=爆裂箭] ~~~ summon boat ^-0.25^^-3