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

Помогите Не работает block break event

Discussion in 'Разработка плагинов для новичков' started by Welester, Sep 24, 2016.

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

    Welester Участник Пользователь

    Trophy Points:
    36
    Имя в Minecraft:
    Welester
    Вот код:
    Code:
    if(getConfig().getInt("jobs." + p.getPlayer()) == 1){
                        if(e.getBlock().getType() !=Material.WHEAT){
                            e.setCancelled(true);
                        }
                    }
    
    Суть в том, что если блок не пшеница, то неразрушаемый, однако я ломаю пшеницу, и ничего, она такая же неуязвимая, как и другие .
    Я никак не пойму, в чём тут ошибка?
     
  2. Хостинг MineCraft
    <
  3. Sonicxd2

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

    Trophy Points:
    76
    Может быть потому что Material.WHEAT это не блок???
     
  4. Автор темы
    Welester

    Welester Участник Пользователь

    Trophy Points:
    36
    Имя в Minecraft:
    Welester
    А как тогда называется блок пшеницы?
     
  5. Derik

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

    Trophy Points:
    76
    Имя в Minecraft:
    Derik
    Хм вопрос конечно интересный, столкнулся с этой проблемой когда писал квест на сервере на разрушение блоков. В итоге сделал квест на доставку а не разрушение. (citezens + quest)

    Как узнать какой блок сломал?

    Code:
    Logger log = getLogger();
    
    @EventHandler
    private void breacBlock(BlockBreakEvent e){
    Block block = e.getBlock();
    log.info('BreakBlock '+block.getType());
    }
    
    Запустить сервер, останеться сломать пшеницу и посмотреть что напишет.
     
  6. LaoTheLizard

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

    Trophy Points:
    103
    Skype:
    sgp_the_controller
    Наверное:
    Code:
    Material.CROPS
    
     
  7. Reality_SC

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

    Trophy Points:
    123
    Имя в Minecraft:
    Reality_SC
    1. Я ещё раз (третий) постараюсь намекнуть ТСу на то, что получать инстанс игрока и неявно кастовать его к строке не очень хорошая идея, т.к. при входе/выходе игрока и уж тем более рестарте сервера объект будет иметь совершенно другой случайный адрес.
      upload_2016-9-26_12-30-19.png
      Либо я чего-то не знаю и в Player-е перегружен метод toString(), который выдаёт вместо "Player#<адрес>" реально его ник или uuid?

    2. Вероятно, ТС отменяет событие для всех блоков ( setCancelled(true) ), а для пшеницы он хочет отменить отмену ( setCancelled(false) )?
      upload_2016-9-26_12-31-56.png
     
  8. slavik123123123

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

    Trophy Points:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Ему нужен просто p.getName(). p.getPlayer () должен вроде сохраняться как CraftPlayer[NICK] или приближенный к этому виду в конфиге(во всяком случае так выводил System.out.print)
     
  9. Reality_SC

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

    Trophy Points:
    123
    Имя в Minecraft:
    Reality_SC
    Да, действительно, в каком-то старом коде toString переопределён:
    Code:
    return "CraftPlayer{" + "name=" + getName() + '}';
    Тогда это рабочий, хоть и гавнокод.
     

Share This Page