All target selectors start with @. The following character is the selector type. For example, @p means 'closest player'.
Target selectors may have additional, optional arguments. You can specify these in [ ], using the syntax a=0. For example, @p[a=0,b=5,c=-500].
There is a special short syntax for just specifying x, y, z and r arguments; simply list their values separated by a comma, without x=. For example: @p[100,64,-100,5] for 5 range, x=100, y=64 and z=-100. Each of these are optional and skippable by leaving them empty. For example, to just specify y coordinate: @p[,64].
x- X coordinate for search center. Default is senders coordinate, or 0.y- Y coordinate for search center. Default is senders coordinate, or 0.z- Z coordinate for search center. Default is senders coordinate, or 0.r- Range, number above 0. Default 0 ("No range limit")m- Game mode, number above 0. Default -1 ("No mode limit")c- Max count of results. Default 0 ("No count limit"). Numbers below 0 will make it return the last x amount of entries.
p- Closest player.a- A list of all players.r- A random player.
All selectors are lists, but only p has a default count limit of 0 (unlimited). When using lists in a string context (for example, /say Hello @a) it will list all players as strings. When used as a command argument, it will iterate the command for each player in the list.
@p[r=5]
Closest person within 5 blocks. If there's nobody within 5 blocks, the command will fail.
@a[x=100,y=64,z=-100,c=10,r=5]
Closest 10 players within 5 blocks of 100,64,-100.
@p[0,64,0,c=-2]
The furthest 2 players from 0,64,0.
@a[,,,10,c=5]
The closest 5 players within 10 blocks of your current position.
I think it would be nice if command blocks could target mobs as well, or rather, target specific targets.
A way to do that is through an optional variable t.
t - Valid targets. Defaults to Player. Other EntityIDs can be specified, and multiple can be specified if separated with |. You can also use player names as input by specifying them in quotation marks.
Here is an example which would target the closest creature
@p[t=Bat|Blaze|CaveSpider|Chicken|Cow|Creeper|EnderDragon|Enderman|Ghast|Giant|LavaSlime|MushroomCow|Ozelot|Pig|PigZombie|Player|Sheep|Silverfish|Skeleton|Slime|SnowMan|Spider|Squid|Villager|VillagerGolem|Witch|WitherBoss|Wolf|Zombie]
Here is an example which would target all hostile non-boss mobs
@A[t=Blaze|CaveSpider|Creeper|Enderman|Ghast|Giant|LavaSlime|PigZombie|Silverfish|Skeleton|Slime|Spider|VillagerGolem|Witch|Zombie]
Here is one that selects randomly between Tom, Dick, and Harry.
@r[t="Tom"|"Dick"|"Harry"]