The /execute
command is used to execute another command relative to something, the syntax you'll need is:
/execute <entity> <x> <y> <z> <command>
You should use target selectors with selector arguments to select to entity you want to execute from.
To summon TNT from an item drop, you could do:
/execute @e[type=Item] ~ ~ ~ /summon PrimedTnt
(Be careful with this command, as all item drops will act as a grenade)
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]}
If using 1.8, you will have to use a score instead. Objective to create:
/scoreboard objectives add HasItem dummy
Commands to run for labeling:
/scoreboard players set @a HasItem 0
/scoreboard players set @a HasItem 1 {SelectedItem:{tag:{display:{Name:"Fire Wand"}}}}
And for targeting, you'd use the score
parameter:
/execute @a[score_HasItem_min=1] ~ ~ ~ /summon Fireball ~2 ~1 ~ {ExplosionPower:10,direction:[0.0,0.0,0.0]}
You may be interested in the SelectedItem
compound, which holds a copy of the player's currently-held item. This way you do not need to specifically test each individual hotbar slot:
/scoreboard players tag @a[tag=!HasItem] add HasItem {SelectedItem:{tag:{display:{Name:"Fire Wand"}}}}
Best Answer
you cannot do it using execute only you must use scoreboard as in the following:
then