Текст и цвет

Селекторы целей

Тот самый кусок @e[type=zombie,distance=..10], который стоит внутри почти каждой команды. Ошибку в нём игра не называет: команда выполняется и просто не находит никого.

С чего начинается

Любые сущности — включая предметы, стрелы и рамки.

Кого искать

Без него @e берёт вообще всё: предметы, стрелы, рамки.

Ник игрока или имя над головой моба.

Метка, которую вешает /tag. Своего смысла в игре не имеет.

От точки отсчёта. «..10» — не дальше десяти блоков.

Точка отсчёта. По умолчанию — та, откуда выполняется команда.

Не радиус, а размер коробки от точки отсчёта в плюс.

−90 — прямо вверх, 90 — прямо вниз.

Значения из /scoreboard.

Проверка данных сущности целиком.

Из датапака.

Куда подставить

Селектор

@e

Команда целиком

/kill @e

8 из 256 знаков

  • @e без «Тип существа» ловит вообще всё: выпавшие предметы, стрелы, рамки, картины, лодки и вагонетки. С командой /kill это выглядит как «у меня пропал весь дроп и разъехались рамки».

Что значит каждый селектор

Селектор Кого выбирает Сколько целей Уже включено
@e Любые сущности — включая предметы, стрелы и рамки. сколько найдётся —
@a Все игроки, в том числе наблюдатели и мёртвые. сколько найдётся —
@p Ближайший игрок. одна limit=1, sort=nearest
@r Случайный игрок. одна limit=1, sort=random
@s Тот, кто выполняет команду. Ничего не ищет. одна —
@n Ближайшая сущность. Появился в 1.21. одна limit=1, sort=nearest

Аргументы пишутся в квадратных скобках сразу за селектором и через запятую: @a[gamemode=survival,distance=..20]. Восклицательный знак перед значением означает «кроме»: type=!player.

Что нужно знать про селекторы

  • @e — это вообще всё. Выпавшие предметы, стрелы, сферы опыта, рамки, картины, лодки и вагонетки тоже сущности. Отсюда самая известная беда: /kill @e убивает дроп, разъезжает рамки и заодно самого игрока.
  • Диапазоны пишутся точками. ..10 — не дальше десяти, 2.. — не ближе двух, 2..10 — между. Одно число означает «ровно столько», и по расстоянию оно почти никогда не срабатывает.
  • Отрицаний можно много, утверждение — одно. type=!zombie,type=!creeper законно, а два положительных type= игра отвергнет: сущность не бывает двух видов сразу.
  • У @p и @r уже стоят limit=1 и порядок. Дописывать их не ошибка, но и не работа. А вот @s[limit=1] игра отвергает командой целиком — @s и так один.
  • dx, dy, dz — не радиус. Это размер коробки от точки отсчёта в плюс. Вместе с distance они работают как «и», а не как «или»: цель обязана попасть и в шар, и в коробку.
  • @a берёт мёртвых и наблюдателей. Для «всех живых игроков» нужен gamemode=!spectator, а иногда и проверка здоровья через NBT.
  • Команды по игрокам не примут селектор, ловящий мобов. /gamemode, /give, /clear и /xp отвергнут @e целиком — даже если по факту в него попадают одни игроки.
  • Порядок аргументов игре безразличен. Наш вывод всегда один и тот же не ради неё, а ради адреса: у одного селектора должна быть одна запись.

Селектор — половина команды. Вторая половина у соседей: генератор мобов собирает того, кого вы потом будете искать, а генератор /tellraw — сообщение, которое им отправят.

Частые вопросы

Чем отличается @p от @s в Minecraft?

@p — ближайший игрок к точке выполнения команды, @s — тот, кто команду выполняет. В командном блоке @s не указывает ни на кого.

Как выбрать мобов в радиусе?

Аргументом distance с диапазоном через две точки: distance=..10 — не дальше десяти блоков. Тип существа при этом обязателен, иначе @e поймает и предметы, и стрелы, и рамки.

Почему селектор не находит никого?

Чаще всего из-за опечатки в типе: type=zomby выглядит идентификатором, и команда «выполняется», ничего не найдя. Второй случай — limit=1 у @s, такую команду игра отвергает целиком.