Перейти к содержанию

Как отключить агрессию моба на игрока?


Рекомендуемые сообщения

В теме 13 сообщений

Хочу создать карту про вора и хочу добавить скрытность. Мне нужна команда в связке execute которая проверяет находится ли игрок в квадратной области(area, в данном случае в какой-нибудь нычке) и отключает агрессию мобов с определённым тегом. Версия 1.20

Ссылка на комментарий
Поделиться на другие сайты

1. Если поместить игрока и моба в одну команду, то моб не будет агрится на игрока

2. У мобов аттрибут generic.follow_range отвечает зато, насколько далеко моб может видеть игрока и следовать за ним

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, NotDen сказал:

 

2. У мобов аттрибут generic.follow_range отвечает зато, насколько далеко моб может видеть игрока и следовать за ним

Если поставить на 0 то они не будут агриться?

Ссылка на комментарий
Поделиться на другие сайты

Только что, NotDen сказал:

Да, но в плотную могут ударить

Спасибо большое

1 минуту назад, NotDen сказал:

Да, но в плотную могут ударить

Не могли бы написать execute команду?(синтаксис капец сложный)

 

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, The Doctor сказал:

Не могли бы написать execute команду?(синтаксис капец сложный

А что именно вам нужно от команды?
Просто задоюсь вопросом, причем тут execute?

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, NotDen сказал:

А что именно вам нужно от команды?
Просто задоюсь вопросом, причем тут execute?

Мне нужно задетектить игрока в определенной квадратной зоне  dx, dy, dz и отключить агрессию мобов с определённым тегом

Ссылка на комментарий
Поделиться на другие сайты

Только что, The Doctor сказал:

Мне нужно задетектить игрока в определенной квадратной зоне  dx, dy, dz и отключить агрессию мобов с определённым тегом

execute as @e[tag=MyTag] at @s if entity @p[distance=..5] run attribute @s minecraft:generic.follow_range base set 0
execute as @e[tag=MyTag] at @s unless entity @p[distance=..5] run attribute @s minecraft:generic.follow_range base set 32

  MyTag - тэг моба
  ..5 - радиус детекта игрока
  0 - если игрок нащёлся, иначе 32 [Вроде измеряется в блоках]
Здесь я использовал селектор distance, который ищет игрока в определённом радиусе
Если хотите именно в коробке то замените if/unless entity @p[distance=..5] на positioned ~-5 ~-5 ~-5 if/unless entity @p[dx=10,dy=10,dz=10]
   ...причём после positioned нужно записывать половину от размера коробки

8 минут назад, The Doctor сказал:

Мне нужно задетектить игрока в определенной квадратной зоне  dx, dy, dz и отключить агрессию мобов с определённым тегом

А вообще не лучше в самом начале устанавливать каждому мобу свой minecraft:generic.follow_range в зависимости от тэга, чтоб не парится с этим

Ссылка на комментарий
Поделиться на другие сайты

10 минут назад, NotDen сказал:

execute as @e[tag=MyTag] at @s if entity @p[distance=..5] run attribute @s minecraft:generic.follow_range base set 0
execute as @e[tag=MyTag] at @s unless entity @p[distance=..5] run attribute @s minecraft:generic.follow_range base set 32

  MyTag - тэг моба
  ..5 - радиус детекта игрока
  0 - если игрок нащёлся, иначе 32 [Вроде измеряется в блоках]
Здесь я использовал селектор distance, который ищет игрока в определённом радиусе
Если хотите именно в коробке то замените if/unless entity @p[distance=..5] на positioned ~-5 ~-5 ~-5 if/unless entity @p[dx=10,dy=10,dz=10]
   ...причём после positioned нужно записывать половину от размера коробки

А вообще не лучше в самом начале устанавливать каждому мобу свой minecraft:generic.follow_range в зависимости от тэга, чтоб не парится с этим

Спасибо! Вроде то что нужно. Если ты недопонял то я хотел сделать места, например по столом где мобы "охранники' не видели игрока, соответственно у них должен меняться follow range

Ссылка на комментарий
Поделиться на другие сайты

Только что, The Doctor сказал:

Спасибо! Вроде то что нужно. Если ты недопонял то я хотел сделать места, например по столом где мобы "охранники' не видели игрока, соответственно у них должен меняться follow range

Почему им уже заспавнеными не установить свой follow_range?

Ссылка на комментарий
Поделиться на другие сайты

Только что, The Doctor сказал:

Спасибо! Вроде то что нужно. Если ты недопонял то я хотел сделать места, например по столом где мобы "охранники' не видели игрока, соответственно у них должен меняться follow range

Мне надо искать игрока 

 

1 минуту назад, NotDen сказал:

Почему им уже заспавнеными не установить свой follow_range?

Мне нужно его менять в зависимости от положения игрока в квадратной области

Ссылка на комментарий
Поделиться на другие сайты

Только что, The Doctor сказал:

Мне нужно его менять в зависимости от положения игрока в квадратной области

Всё, понял. Тогда:
execute if entity @p[x=,y=,z=,dx=,dy=,dz=] run attribute @e[tag=MyTag] minecraft:generic.follow_range base set 0
execute unless entity @p[x=,y=,z=,dx=,dy=,dz=] run attribute @e[tag=MyTag] minecraft:generic.follow_range base set 32

x y z dx dy dz - настраиваете на нужную область

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, The Doctor сказал:

Мне надо искать игрока 

 

Мне нужно его менять в зависимости от положения игрока в квадратной области

Не относительно от моба охранника, а от мировых координат

Только что, NotDen сказал:

Всё, понял. Тогда:
execute if entity @p[x=,y=,z=,dx=,dy=,dz=] run attribute @e[tag=MyTag] minecraft:generic.follow_range base set 0
execute unless entity @p[x=,y=,z=,dx=,dy=,dz=] run attribute @e[tag=MyTag] minecraft:generic.follow_range base set 32

x y z dx dy dz - настраиваете на нужную область

Спасибо

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...