1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Получение ip-адреса пользователя

Тема в разделе "Разработка плагинов для новичков", создана пользователем fromgate, 2 июн 2012.

  1. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Это кросс пост из соседней темы (чтобы не возникала путаница).


    makkarpov
    Я определял адрес в событии PlayerPreLoginEvent, там всё просто:

    String ip = event.getAddress().getHostAddress();

    А вообще некоторое время назад народ жаловался на любопытную ошибку (вроде как уже исправлена). Там адрес терялся уже в событии PlayerLoginEvent (которое как я понимаю следующее после PlayerPreLoginEvent).

    Может и тут что-то подобное? Ты в каком событии определяешь адрес игрока?
     
  2. makkarpov

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

    Баллы:
    88
    Как раз в PlayerLoginEvent.
    arg0.getPlayer().getAddress().getAddress().getHostAddress();
     
  3. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    А попробуй там event.getAddress()
     
  4. makkarpov

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

    Баллы:
    88
    Код:
                InetSocketAddress a = player.getAddress();
                if (a == null) log.warning("******* A IS NULL! *********");
                InetAddress b = a.getAddress();
                long ip = ip2long(b.getHostAddress());
    16:36:03 [WARNING] ******* A IS NULL! *********
     
  5. makkarpov

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

    Баллы:
    88
    Event недоступен из той процедуры, которую я вызываю

    UPD: Когда же rubukkit глючить перестанет
     
  6. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Подожди? Ты же обрабатываешь PlayerLoginEvent?

    Т.е. что-то вроде:
    Код:
    @EventHandler(priority=EventPriority.NORMAL)
        public void onPlayerLogin(PlayerLoginEvent event){
            // вот тут event.getAddress() точно доступно
           
        }
    }
     
  7. makkarpov

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

    Баллы:
    88
    Ну как выглядят события, я знаю. Дело в том, что IP адрес нужен в функции, которая может работать не только из эвента и ей доступен только аргумент Player p.

    UPD: Твой способ тоже выкидывает NullPointerException
     
    slavik123123123 нравится это.
  8. ensirius

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

    Баллы:
    123
    Код:
    @EventHandler
    public void onPlayerLogin(PlayerLoginEvent event) {
      String ip = event.getKickMessage();
    }
     

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