Cómo usar los selectores de objetivo en Minecraft (@a, @e, @p, @r, @s)

@e sin filtro agarra cualquier entidad dentro del radio cargado: un ítem tirado en el piso, una flecha en pleno vuelo, un cuadro colgado en la pared, no solo mobs. Es el error más común con selectores, y casi siempre la causa es olvidar el type=.
Los 5 selectores
| Selector | Apunta a |
|---|---|
| @p | el jugador más cercano a quien ejecuta el comando |
| @a | todos los jugadores |
| @r | un jugador al azar |
| @e | todas las entidades (jugadores, mobs, ítems, proyectiles, cuadros) |
| @s | quien (o lo que) está ejecutando el comando |
Los argumentos que realmente vas a usar
| Argumento | Qué hace | Ejemplo |
|---|---|---|
| type= | filtra por tipo de entidad | type=zombie, type=!player (excluye jugadores) |
| distance= | filtra por distancia en bloques | distance=..10 (hasta 10), distance=5.. (desde 5) |
| limit= | limita cuántos objetivos vuelven | limit=5 |
| sort= | ordena antes de aplicar el límite | nearest, furthest, random, arbitrary |
| gamemode= | filtra jugadores por modo de juego (solo @a/@p/@r/@s) | gamemode=survival |
| tag= | filtra por etiqueta asignada con /tag | tag=enemigo |
Tres comandos listos
Matar todo zombi en un radio de 10 bloques:
/kill @e[type=zombie,distance=..10]
Teletransportar hacia ti al jugador en supervivencia más cercano:
/tp @p[gamemode=survival] @s
Dar brillo por 30 segundos a todo jugador dentro de un radio de 20 bloques:
/effect give @a[distance=..20] minecraft:glowing 30 0 true
Arma estos mismos comandos (give, summon, effect) con el objetivo correcto en el generador de comandos: el campo de objetivo acepta @p, @a, @r, @e, @s directos o un selector personalizado con argumentos.
Errores comunes
Usé @e[limit=1] esperando la entidad más cercana y me tocó otra. limit solo no ordena nada. Sin sort=nearest, el juego devuelve la primera entidad que encuentra, que puede ser cualquiera dentro del radio cargado. limit=1,sort=nearest juntos es lo que garantiza "la más cercana".
¿distance=10 y distance=..10 no hacen lo mismo? No. distance=10 pide exactamente 10 bloques, algo que casi nunca coincide. distance=..10 significa "hasta 10 bloques": los dos puntos antes del número son los que abren el rango hacia abajo.
@s en un bloque de comandos no funciona. Dentro de un bloque de comandos sin contexto de jugador asociado (no activado por un jugador específico), @s no tiene a quién referirse y el comando falla en silencio para ese objetivo. Usa @p o @a en bloques de comandos que no dispara un jugador de forma directa.
¿Cómo hago que un selector agarre a todos menos una persona? Repite el argumento con ! delante: @a[name=!Notch] selecciona a todos los jugadores excepto a quien se llame Notch. Se pueden apilar varios ! para excluir a más de uno.
¿type= acepta más de un valor? No con type= solo, cada type= filtra un único tipo. Para varios tipos a la vez, en general es más simple correr el comando una vez por tipo que armar una condición compuesta.