Помогите (Решено) Игроки в радиусе

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

ermaksochi

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Serega007
Здравствуйте, нужно достать игроков которые будут находится на координате например 10 10 10 в радиусе 10-ти блоков и отправить им сообщение.
P.S. Я естественно пользовался поиском и находил темы в которых спрашивали похожее но код либо оказывался нерабочем, то либо eclipse выдавал ошибки (может я криворукий),
P.P.S. Я плагин пишу на версии майнкрафта 1.7.10 на ядре Spigot
 
Я плагин пишу на версии майнкрафта 1.7.10 на ядре Spigot
либо eclipse выдавал ошибки
Что-то я не удивлён.

PHP:
public static List<Player> getPlayers(Location loc, double radius) {
     List<Player> players = new ArrayList<>();
     Collection<Entity> nearby = loc.getWorld().getNearbyEntities(loc, radius, radius, radius);
     for (Entity e : nearby) {
        if (e.getType() == EntityType.PLAYER) {
            players.add((Player)e);
        }
    }
    return players;
}
 
@Cool_boy
И вот ошибку выдаёт...
upload_2018-9-5_21-35-51.png
Если нажму Add cast то исчо одна ошибка будет, не пойму шо не так
upload_2018-9-5_21-36-41.png
 
@Cool_boy
И вот ошибку выдаёт...
Посмотреть вложение 51890
Если нажму Add cast то исчо одна ошибка будет, не пойму шо не так
Посмотреть вложение 51891
Ну так бы сразу. В 1.7.10 походу нету метода для получения существ в радиусе. Можно стяпать немного по-другому. У тебя радиус обязательно должен быть квадратный, или круглый будет лучше?
 
Ну так бы сразу. В 1.7.10 походу нету метода для получения существ в радиусе. Можно стяпать немного по-другому. У тебя радиус обязательно должен быть квадратный, или круглый будет лучше?
Без разницы, но хотелось бы что б он не просчитывал Entity
Нужно брать сразу игроков. А не все сущности, тратить ресурсы на рассчитывание расстояния каждого и только потом отлавливать нужных среди них.
Получается трата ресурсов ни на что. Высчитать кучу дистанций для сотен мобов, дропа, стрел и т.д. Это затратно. Из тысячей сущностей вы итоге возьмете ~10 (именно игроков и именно в радиусе). Какие потери!
Взято отсюда
 
Без разницы, но хотелось бы что б он не просчитывал Entity
Ну так там уже есть ответ, зачем новую тему делать?
PHP:
Location location = //твоя локация от которой надо проверять
double radius = 10;
for (Player p : Bukkit.getOnlinePlayers()) {
   if (p.getLocation().distance(location) < radius) {
       // Ваши действия
   }
}
 
Ну так там уже есть ответ, зачем новую тему делать?
Там в ответе немножко другой код если сравнивать с тем что ты щас скинул, тот код что там написан я не понял и Eclipse выдавал ошибку, поэтому я создал новую тему.
Вообщем-то работает, благодарю за помощь
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх