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

Помогите Как сделать радиус действия чего либо.

  • Автор темы Автор темы MrTeldi
  • Дата начала Дата начала

MrTeldi

Новичок
Пользователь
Баллы
11
Допустим мне нужно чтобы по нажатию на слизь в радиусе 30 блоков всем выдался эффект замедления.

Как это можно сделать?
 
Допустим мне нужно чтобы по нажатию на слизь в радиусе 30 блоков всем выдался эффект замедления.

Как это можно сделать?
Как-то так:
PHP:
Location location = ...; // Откуда считать 30 блоков
for (Player p : Bukkit.getOnlinePlayers()) {
    if (p.getLocation().distance(location) <= distance) {
        // TODO: Выдать игроку "p" эффект замедления
    }
}
 
Как-то так:
PHP:
Location location = ...; // Откуда считать 30 блоков
for (Player p : Bukkit.getOnlinePlayers()) {
    if (p.getLocation().distance(location) <= distance) {
        // TODO: Выдать игроку "p" эффект замедления
    }
}
Это не сработает - игроки могут быть в других мирах. Исключение возникнет.
Да и есть более производительный способ получения сущностей в радиусе от локации.

Для Spigot:
PHP:
for (Entity entity : location.getWorld().getNearbyEntities(location, 30, 30, 30))
+ Не забыть проверять тип сущностей

Для Paper удобней:
PHP:
for (Player player : location.getWorld().getNearbyPlayers(location, 30))
 
Назад
Верх