[Решено] Как можно определить нахождение двух игроков в одном блоке?

Статус
Закрыто для дальнейших ответов.

IlyaHaker

Активный участник
Пользователь
Баллы
76
У меня есть некий игрок, который бежит. Нужно "поймать" всех игроков, сквозь которых он пробежал и нанести им урон. Думал запустить раннейбл, который каждый тик будет отслеживать местоположение всех игроков и сравнивать с данным. Но, думается мне, что это плохая идея для производительности
Есть идеи какие-нибудь у кого-нибудь?
 
У меня есть некий игрок, который бежит. Нужно "поймать" всех игроков, сквозь которых он пробежал и нанести им урон. Думал запустить раннейбл, который каждый тик будет отслеживать местоположение всех игроков и сравнивать с данным. Но, думается мне, что это плохая идея для производительности
Есть идеи какие-нибудь у кого-нибудь?
Идея нормальная но только если шедулер будет работать в другом потоке.
В другом потоке можно спокойно получать локацию игрока, но изменять что либо нельзя, поэтому если надо там же нанести урон, создай задачу которая выполнится в основном потоке для нанесения урона.
 
Идея нормальная но только если шедулер будет работать в другом потоке.
В другом потоке можно спокойно получать локацию игрока, но изменять что либо нельзя, поэтому если надо там же нанести урон, создай задачу которая выполнится в основном потоке и наноси урон
спасибо, не подскажешь статейку по этому поводу? что за задача и как ее выполнить в основном потоке, запустив в асинхроне?
 
спасибо, не подскажешь статейку по этому поводу? что за задача и как ее выполнить в основном потоке, запустив в асинхроне?
Да просто создай задачу с помощью лямбды
Bukkit.getScheduler().runTask(plugin, () -> {
//код урона
});
в том случае, когда нужно нанести урон в другом потоке.
Задача выполнится на следующий тик.

Да тут статейки и не нужны, просто ищи доки баккита, там все есть.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх