Войти или зарегистрироваться

Помогите Эвент наведения курсора на игрока

konfyciu98

Старожил
Пользователь
Баллы
123
Имя в Minecraft
konfyciu
Подскажите Event, который срабатывает, если игрок наводит курсор на entity.
 
ProtocolLib'ом можно отлавливать поворот головы игрока.
 
А как ты тогда определишь, что игрок смотрит на entity?

Так собственно в чем вопрос? В том что лучше, подключать библиотеку или пользоваться стандартным эвентом, или же алгоритм который говорит смотрит-ли игрок на игрока?
 
Так собственно в чем вопрос? В том что лучше, подключать библиотеку или пользоваться стандартным эвентом, или же алгоритм который говорит смотрит-ли игрок на игрока?
Явно последнее, ибо 2 первых не дадут мне нужный результат
 
Явно последнее, ибо 2 первых не дадут мне нужный результат

Ну вообще, тут надо посидеть и подумать с часик.
Если у меня останется время, я подумаю. А так вообще, задача программиста и состоит в придумывании алгоритма, а этот раздел предназначен только чтобы узнать какие-то основные функции нужные для составления алгоритма.

Занятие инерестное, я завтра посараюсь предложить что-нибудь работающее.
 
Подскажите Event, который срабатывает, если игрок наводит курсор на entity.
Можно взять 2 вектора(2 локации - смотрящего и того, на кого смотрят) и с помощью метода angle в классе Vector проверять отклонение взгляда на игрока. И естественно нужно пилить отдельные проверки на расстояние между игроками и спрятан ли он за блоками
 
Можно взять 2 вектора(2 локации - смотрящего и того, на кого смотрят) и с помощью метода angle в классе Vector проверять отклонение взгляда на игрока. И естественно нужно пилить отдельные проверки на расстояние между игроками и спрятан ли он за блоками
А нельзя Entity преобразовать в Block? :)
Можно еще попробовать в игрока поставить 2 блока воздуха, задать мету и так проверять. Но один минус, возможны лаги на сервере из-за постоянного перемещения блоков воздуха.
 
А нельзя Entity преобразовать в Block? :)
Можно еще попробовать в игрока поставить 2 блока воздуха, задать мету и так проверять. Но один минус, возможны лаги на сервере из-за постоянного перемещения блоков воздуха.
Боже, а зачем блок то?
 
Первая мысль преобразовать в блок, чтоб проверять getTargetBlock() :D
А что на счет второй?
Всё проще, выясняешь, когда игрок смотрит на игрока(как - см. выше), узнаёшь между ними расстояние и через тот же getTargetBlock() выясняешь, нет ли между ними блока
 
Всё проще, выясняешь, когда игрок смотрит на игрока(как - см. выше), узнаёшь между ними расстояние и через тот же getTargetBlock() выясняешь, нет ли между ними блока
Нагрузка будет большая?
 
Есть 1 способ, но это скажем так.. костыль.
В общем каждый короткий промежуток времени можно запускать с большой силой снаряд (projectile) по взгляду игрока, но дописав в него спец. метадату и сделав невидимым(Хотя при большой силе он и так будет незаметен), а затем слушать EntityDamageByEntity и в случае если наш тип сущности того кто ударил эквивалентен например снежку, то в случае наличия спец. метадаты отменять event и задавать как цель event.getEntity()
Таким образом мы сразу решаем проблему с тем что игрок может быть спрятан за блоком, но это таки довольно костыльно.
Можно также кидать проджектайл при EntityMoveEvent, но это еще хуже, так что лучше используй общий шедулер который будет бегать по игрокам, или Шедулер-Куратор отдельный для каждого, но опять же это как-то костыльно [2]

В общем отпишись если найдешь что :)
 
Я бы написал клиентский мод... ну правда, гораздо проще и удобней, а главное без костылей.
 
Назад
Верх