Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

fromgate

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

Не, я сейчас над другим работаю. Вот как получить IP юзера (player.getAddress().getAddress().getHostAddress()) не работает (NullPointerException)


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

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

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

Может и тут что-то подобное? Ты в каком событии определяешь адрес игрока?
 
Как раз в PlayerLoginEvent.
arg0.getPlayer().getAddress().getAddress().getHostAddress();
 
Код:
            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! *********
 
Event недоступен из той процедуры, которую я вызываю

UPD: Когда же rubukkit глючить перестанет
 
Подожди? Ты же обрабатываешь PlayerLoginEvent?

Т.е. что-то вроде:
Код:
@EventHandler(priority=EventPriority.NORMAL)
    public void onPlayerLogin(PlayerLoginEvent event){
        // вот тут event.getAddress() точно доступно
       
    }
}
 
Ну как выглядят события, я знаю. Дело в том, что IP адрес нужен в функции, которая может работать не только из эвента и ей доступен только аргумент Player p.

UPD: Твой способ тоже выкидывает NullPointerException
 
Код:
@EventHandler
public void onPlayerLogin(PlayerLoginEvent event) {
  String ip = event.getKickMessage();
}
 

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

Назад
Верх