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

Помогите В чем ошибка?

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

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

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    Снимок экрана 2013-12-31 в 20.40.39.png Всех с наступающим или с уже наступившем)!!! Но мне нужна помощь. Вот код, bukkit ругается на первое же условие((
    Смысл плагина такова при наличии диспенсера с измененом именем требуется переименовать палку в то же имя, чтобы войти в диспенсер.
    Вот логи:
    Код:
    public void openCase(PlayerInteractEvent event){
       
            Player player = event.getPlayer();
       
            if(event.getClickedBlock().getType() == Material.DISPENSER && player.getItemInHand().getType() == Material.STICK)
            {
                Dispenser blockD = (Dispenser)event.getClickedBlock();
                if(player.getItemInHand().getItemMeta().getDisplayName() == null || blockD.getInventory().getName() == null)return;
                if(player.getItemInHand().getItemMeta().getDisplayName().equals(blockD.getInventory().getName()))
                {
                    return;
                }else
                {
                    event.setCancelled(true);
                }
            }
             
        }
     
    Последнее редактирование: 31 дек 2013
    DavidShabaev нравится это.
  2. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Может быть покажешь логи ?
     
  3. Автор темы
    _Rufu5_

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    вот
     

    Вложения:

  4. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    из блока извлеки BlockState, получишь раздатчик.
    (Dispenser) event.getClickedBlock().getState();
     
    zuma2 нравится это.
  5. Автор темы
    _Rufu5_

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    но бакет ругается на первое if
     
  6. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Добавь проверку
    if(!event.hasBlock())
    return
     
  7. Автор темы
    _Rufu5_

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    Код:
    @EventHandler
        public void openCase(PlayerInteractEvent event){
            Player player = event.getPlayer();
            if(!event.hasBlock())return;
            if(event.getClickedBlock().getType() == Material.DISPENSER)
            {
                Dispenser blockD = (Dispenser)event.getClickedBlock().getState();
                player.sendMessage(blockD.getInventory().getName());
                if(blockD.getInventory().getName().equalsIgnoreCase("container.dispenser"))
                {
                    player.sendMessage("√");
                    return;
                }else{
                    if(player.getItemInHand().getType() == Material.STICK &&
                            player.getItemInHand().getItemMeta().getDisplayName().equals(blockD.getInventory().getName()))
                    {
                        return;
                    }else{         
                        event.setCancelled(true); 
                    }
                }
            }       
        } 
    Вот так тоже не работает. WhY?
     
    slavik123123123 нравится это.
  8. ptnk

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

    Баллы:
    173
    Ошибка из-за того, что при срабатывании данного события не всегда есть блок и нужно проверять getClickedBlock() на null. Данной проверки нет - от сюда и ошибка.
     
  9. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Для этого и нужен hasBlock(), который проверяет блок на нулл
    Код:
      public boolean hasBlock()
      {
        return this.blockClicked != null;
      }
     
  10. Автор темы
    _Rufu5_

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    А так все рабочие?
     

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