I'm trying to make a kit pvp map in vanilla Minecraft, but I ran into a problem. I want specific people to get a certain effect. So I got a /testfor
command:
/testfor @a{SelectedItemSlot:0,Inventory:[{Slot:0b,tag:{display:{Name:"Fire Wand"}}}]}
This command tests if any person has this specified item name in slot 0
. It then turns on a comparator which activates the second command once it finds that person:
/execute @p ~ ~ ~ summon Fireball ~2 ~1 ~ {ExplosivePower:10,direction:[0.0,0.0,0.0]}
How can I specify this command to the person holding the named item?
So Skylinerw suggested this command which seems to solve all my problems!
You have to use a command to apply a label to the player based on their data rather than using
/testfor
. For example,/scoreboard
can assign a label:/scoreboard players tag @a[tag=HasItem] remove HasItem /scoreboard players tag @a[tag=!HasItem] add HasItem {SelectedItemSlot:0,Inventory:[{Slot:0b,tag:{display:{Name:"Fire Wand"}}}]}
And you'd then target players based on their label. The correct tag for fireball damage is
ExplosionPower
:/execute @a[tag=HasItem] ~ ~ ~ /summon Fireball ~2 ~1 ~ {ExplosionPower:10,direction:[0.0,0.0,0.0]}
I thought this is really cool! But how does the scoreboard command activate the execute command? Is it with a comparator? Do both command blocks have to be on a clock?