Помогите [РЕШЕНО] Проверка есть ли игрок на определённых кординатах

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

XjCyan1de

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
XjCyan1de
Собсна как мне проверить есть ли игрок на определённых кординатах?
 
Вроде p.getWorld().getLocation().getBlock().getBlockX().getBlockY().getBlockZ().Если не ошибаюсь.
 
А это не сработает?
Java:
for (Player p : Bukkit.getOnlinePlayers()) {
Location playerLoc = p.getLocation();
if (playerLoc == new Location(world, -14, 72, 2)) {
//Do something
}
}
 
Последнее редактирование:
Это никогда не будет работать, так как сравнивание через == любых разных объектов даже с одинаковым содержанием всегда вернёт false. Если нужна именно такая проверка, то стоит использовать equals().
Хотя в данном случае даже equals() не поможет, так как внутри Location находятся double-координаты, которые почти никогда не бывают целыми (т.е. после запятой всегда что-то есть). Или вычисляйте расстояние от точки по теореме Пифагора, или смотрите совет alexandrage.
 
Последнее редактирование:
Это никогда не будет работать, так как сравнивание через == любых разных объектов даже с одинаковым содержанием всегда вернёт false. Если нужна именно такая проверка, то стоит использовать equals().

Далеко не всех объектов. Но в данном случае действительно нужен equals
 
Далеко не всех объектов. Но в данном случае действительно нужен equals
Всех. Абсолютно. Если вы про обёртки чисел, то они кэшируются в пределах возможных значений byte (и то только для valueOf()). Если про String, то они хранятся в пуле констант класса, так что иногда могут переиспользоваться (ну и есть механизм дедупликации, но рассчитывать на него не стоит). Но если вы создадите (а не переиспользуете готовый) объект, то сравнение его с любым другим всегда вернёт false.
 
Последнее редактирование:
Это никогда не будет работать, так как сравнивание через == любых разных объектов даже с одинаковым содержанием всегда вернёт false. Если нужна именно такая проверка, то стоит использовать equals().
Хотя в данном случае даже equals() не поможет, так как внутри Location находятся double-координаты, которые почти никогда не бывают целыми (т.е. после запятой всегда что-то есть). Или вычисляйте расстояние от точки по теореме Пифагора или смотрите совет alexandrage.
Я это уже понял, щас допиливаю одну фичу если будет работать то скину код
Вот рабочий код:
Java:
for (Player p : Bukkit.getOnlinePlayers()) {
   int x = p.getLocation().getBlockX();
   int y = p.getLocation().getBlockY();
   int z = p.getLocation().getBlockZ();
   if (x == -14 && y == 72 && z == 2) {
      p.sendMessage("Ты на -15 72 2");
   }
}
 
Я же дал вам верное решение, в чем ваши проблемы?
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх