Como usar seletores de alvo no Minecraft (@a, @e, @p, @r, @s)

@e sem filtro pega toda entidade no raio de carregamento — item dropado no chão, seta voando, quadro na parede, não só mobs. É o erro mais comum com seletores, e a causa quase sempre é esquecer o type=.
Os 5 seletores
| Seletor | Alvo |
|---|---|
| @p | jogador mais próximo de quem executa |
| @a | todos os jogadores |
| @r | um jogador aleatório |
| @e | todas as entidades (jogadores, mobs, itens, projéteis, quadros) |
| @s | quem (ou o quê) está executando o comando |
Argumentos que você realmente vai usar
| Argumento | Faz o quê | Exemplo |
|---|---|---|
| type= | filtra por tipo de entidade | type=zombie, type=!player (exclui jogadores) |
| distance= | filtra por distância em blocos | distance=..10 (até 10), distance=5.. (a partir de 5) |
| limit= | limita quantos alvos voltam | limit=5 |
| sort= | ordena antes de aplicar o limite | nearest, furthest, random, arbitrary |
| gamemode= | filtra jogador por modo de jogo (só @a/@p/@r/@s) | gamemode=survival |
| tag= | filtra por tag atribuída via /tag | tag=inimigo |
Três comandos prontos
Matar todo zumbi num raio de 10 blocos:
/kill @e[type=zombie,distance=..10]
Teleportar até você o jogador sobrevivência mais próximo:
/tp @p[gamemode=survival] @s
Dar brilho por 30 segundos a todo jogador num raio de 20 blocos:
/effect give @a[distance=..20] minecraft:glowing 30 0 true
Monte esses mesmos comandos (give, summon, effect) com o alvo certo no gerador de comandos — o campo de alvo aceita @p, @a, @r, @e, @s prontos ou um seletor customizado com argumentos.
Erros comuns
Usei @e[limit=1] esperando pegar a entidade mais próxima e veio outra. limit sozinho não ordena nada — sem sort=nearest, o jogo devolve a primeira entidade que encontrar, que pode ser qualquer uma dentro do raio carregado. limit=1,sort=nearest juntos é o que garante "a mais próxima".
distance=10 e distance=..10 não fazem a mesma coisa? Não. distance=10 pede exatamente 10 blocos (praticamente nunca bate certo). distance=..10 é "até 10 blocos" — o .. antes do número é o que abre o intervalo pra baixo.
@s num bloco de comando não funciona. Dentro de um bloco de comando sem contexto de jogador associado (não ativado por um jogador específico), @s não tem a quem se referir e o comando falha silenciosamente nesse alvo. Use @p ou @a em blocos de comando que não são disparados por um jogador direto.
Como faço um seletor pegar todo mundo menos uma pessoa? Repita o argumento com ! na frente: @a[name=!Notch] seleciona todos os jogadores exceto quem se chama Notch. Dá pra empilhar mais de um ! pra excluir vários.
type= aceita mais de um valor? Não com type= sozinho — cada type= filtra um tipo. Pra vários tipos ao mesmo tempo, geralmente é mais simples rodar o comando uma vez por tipo do que tentar uma condição composta.