Как выделить игроков на определенной высоте относительно исполнителя (Майнкрафт) (Командный блок) (КБ) ?
В общем ситуация следующая:
Если делать банально -
execute as @a[tag=S4] positioned as @s at @s run tag @e[tag=!S4,distance=0..10] add NS4
тогда выделяются все В РАДИУСЕ 10 блоков. Казалось бы, в чём проблема?
Выделяются игроки ещё и по высоте... То есть по X на +-10 по Z на +-10 и по Y на +-10
Как мне выделить игроков по X на +-10 по Z на +-10 НО по Y на +-2 или любое другое значение.
Говорю сразу: Если делать: ...run tag @e[tag=!S4,x=-10,dx=20,z=-10,dz=20,y=-2,dy=4] add NS4
Если делать так, то выделяются игроки по КООРДИНАТАМ, НЕЗАВИСИМО ОТ ИСПОЛНИТЕЛЯ.
Не, ну есть костыль........
Цепной условный всегда активный КБ: execute as @a[tag=S4] positioned as @s positioned ~ ~10 ~ run tag @e[tag=!S4,distance=0..5] remove NS4
Цепной условный всегда активный КБ: execute as @a[tag=S4] positioned as @s positioned ~ ~-10 ~ run tag @e[tag=!S4,distance=0..5] remove NS4
Но это такой костыль!!!!!! Есть более адекватное решение? Буду очень признателен за помощь. В любом случае спасибо что прочитали. Хорошего вам дня!
Вы можете использовать команду execute с параметром if entity, чтобы отфильтровать игроков по высоте. Добавьте следующую команду в свой командный блок:
Базовая команда:
execute as @a[tag=S4] at @s run tp @e[tag=!S4,distance=0..10] ~ ~ ~
Используйте параметр if entity для фильтрации по высоте:
Цепной условный всегда активный КБ:
execute as @a[tag=S4] at @s if entity @e[tag=!S4,distance=0..10,dy=-2] run tag @e[tag=!S4,distance=0..10,dy=-2] add NS4
Цепной условный всегда активный КБ:
execute as @a[tag=S4] at @s if entity @e[tag=!S4,distance=0..10,dy=2] run tag @e[tag=!S4,distance=0..10,dy=2] add NS4
Эти команды проверят наличие игроков на определенной высоте относительно исполнителя и добавят им соответствующий тег. Значения dy=-2 и dy=2 указывают на допустимый диапазон по оси Y. Вы можете изменить эти значения в зависимости от ваших требований.