Помогите При проверке на права выдаёт ошибку null

  • Автор темы Автор темы clysic
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

clysic

Новичок
Пользователь
Баллы
11
Добрый вечер, многоуважаемые кодеры! Благодарю,что вы решили обратить внимание на эту тему. У меня следующая проблема: проверяю у игрока право на выполнение ивента, однако на это право плугин не реагирует и указывает на строчку этой проверерки с ошибкой null. У меня предположение, что я возможно неправильно получил игрока...
Собственно прикреплю код:
Код:
@EventHandler
    public void onAngree(EntityTargetLivingEntityEvent e) {
         Player p = (Player) e.getTarget();       
         if(p.hasPermission("perm.angree")) {
            if(e.getEntityType() == EntityType.ZOMBIE) {
                e.setCancelled(true);               
            }
Заранее спасибо за помощь!
 
В конце добавь e.setCancelled(true);
Если условие с проверкой не выполнилось, это не значит что ивент отменен.
 
Добрый вечер, многоуважаемые кодеры! Благодарю,что вы решили обратить внимание на эту тему. У меня следующая проблема: проверяю у игрока право на выполнение ивента, однако на это право плугин не реагирует и указывает на строчку этой проверерки с ошибкой null. У меня предположение, что я возможно неправильно получил игрока...
Собственно прикреплю код:
Код:
@EventHandler
    public void onAngree(EntityTargetLivingEntityEvent e) {
         Player p = (Player) e.getTarget();      
         if(p.hasPermission("perm.angree")) {
            if(e.getEntityType() == EntityType.ZOMBIE) {
                e.setCancelled(true);              
            }
Заранее спасибо за помощь!
Делай проверку, является ли сущность на которую собрались нацелиться - игрок.
if (e.getTarget() instanceof Player) {
//А вот тут уже и делай каст игрока и выполняй проверку прав.
}
 
Но мне же и не нужно, чтобы отменялся весь ивент, а только в данном условии.
e.getTarget() может быть null, если моб сбрасывает цель, например, по-этому нужна и проверка e.getTarget() != null и e.getTarget().getType() == EntityType.PLAYER.
 
e.getTarget() может быть null, если моб сбрасывает цель, например, по-этому нужна и проверка e.getTarget() != null и e.getTarget().getType() == EntityType.PLAYER.
Однако в этом случае ошибка не пропала
Делай проверку, является ли сущность на которую собрались нацелиться - игрок.
if (e.getTarget() instanceof Player) {
//А вот тут уже и делай каст игрока и выполняй проверку прав.
}
Это помогло
Ошибка пропала, но всё равно не понятно одно - на право он забивает, то есть игнорирует его.
 
Однако в этом случае ошибка не пропала

Это помогло
Ошибка пропала, но всё равно не понятно одно - на право он забивает, то есть игнорирует его.
Сделай дебаг. Над каждым условием отправь в консоль сообщение, скажем "test". И добавляй его под каждым условием. Таким образом поймешь, почему он игнорирует
 
Сделай дебаг. Над каждым условием отправь в консоль сообщение, скажем "test". И добавляй его под каждым условием. Таким образом поймешь, почему он игнорирует
Оказывается, что право работает, но вообще достаточно странно.
Почему-то право не хочет работать из-за того, что у игрока когда-то был op (проверка была произведена без Op как бы, но Op был когда-то). Короче, странно, но главное - робит.
Всем спасибо за помощь! Тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх