Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем XjCyan1de, 18 янв 2017.

Статус темы:
Закрыта.
  1. Автор темы
    XjCyan1de

    XjCyan1de Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Собсна как мне проверить есть ли игрок на определённых кординатах?
     
  2. Хостинг MineCraft
    <
  3. Kalabealu

    Kalabealu Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    GoldFox
    Вроде p.getWorld().getLocation().getBlock().getBlockX().getBlockY().getBlockZ().Если не ошибаюсь.
     
  4. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Vector vec = player.getLocation().toVector();
    vec.isInAABB(min, max);
     
  5. Автор темы
    XjCyan1de

    XjCyan1de Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    А это не сработает?
    Код:
    
    for (Player p : Bukkit.getOnlinePlayers()) {
    Location playerLoc = p.getLocation();
    if (playerLoc == new Location(world, -14, 72, 2)) {
    //Do something
    }
    }
    
     
    Последнее редактирование: 18 янв 2017
  6. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Это никогда не будет работать, так как сравнивание через == любых разных объектов даже с одинаковым содержанием всегда вернёт false. Если нужна именно такая проверка, то стоит использовать equals().
    Хотя в данном случае даже equals() не поможет, так как внутри Location находятся double-координаты, которые почти никогда не бывают целыми (т.е. после запятой всегда что-то есть). Или вычисляйте расстояние от точки по теореме Пифагора, или смотрите совет alexandrage.
     
    Последнее редактирование: 18 янв 2017
  7. Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Далеко не всех объектов. Но в данном случае действительно нужен equals
     
  8. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Всех. Абсолютно. Если вы про обёртки чисел, то они кэшируются в пределах возможных значений byte (и то только для valueOf()). Если про String, то они хранятся в пуле констант класса, так что иногда могут переиспользоваться (ну и есть механизм дедупликации, но рассчитывать на него не стоит). Но если вы создадите (а не переиспользуете готовый) объект, то сравнение его с любым другим всегда вернёт false.
     
    Последнее редактирование: 18 янв 2017
  9. Автор темы
    XjCyan1de

    XjCyan1de Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Я это уже понял, щас допиливаю одну фичу если будет работать то скину код[DOUBLEPOST=1484744560,1484743150][/DOUBLEPOST]Вот рабочий код:
    Код:
    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");
       }
    }
    
     
  10. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Я же дал вам верное решение, в чем ваши проблемы?
     
  11. Автор темы
    XjCyan1de

    XjCyan1de Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    В чём верность? мне нужно было координаторы сверить по 3 осям а не вектора, то что я скинул вверху и делает эту задачу. Спасибо @Kalabealu и @gamerforEA за инфу. Тема закрыта
     
Статус темы:
Закрыта.

Поделиться этой страницей