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

Помогите BlockPlaceEvent - не работает.

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

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

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

    Баллы:
    61
    Возможно, я совершил ошибку, однако ивент не работает.
    Если игрок ставит тортик, то тортик не ставиться, а взамен игроку дается алмаз, только вот тортики как на зло - ставятся, и алмаз не выдается. Помогите разобраться.
    Код:
        @EventHandler
        public void OnClick(BlockPlaceEvent e){
            ItemStack item = new ItemStack(Material.DIAMOND);
            ItemMeta im = item.getItemMeta();
            im.setDisplayName ("Подарок");
            item.setItemMeta (im);
            //Event
            Player p = e.getPlayer();
            Block b = e.getBlockPlaced();
    
            if(b.getType() == Material.CAKE_BLOCK){
                e.setCancelled(true);
                p.getInventory().addItem(item);
                p.sendMessage(ChatColor.GOLD + "Поздравляем! Вы получили подарок!");       
            } else {
                return;
            }
    
        } 
     
  2. Zнамя Юности

    Zнамя Юности Активный участник Пользователь

    Баллы:
    76
    Код:
    if (b.getType() == Material.CAKE)
    CAKE_BLOCK это чутка другое
     
  3. Автор темы
    Shay_master

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

    Баллы:
    61
    Тоже не работает.
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Проверь, вызывается ли событие. В самом начале пропиши
    System.out.println("BlockPlaceEvent");
    Если вызывается, то выведи в консоль название материала:
    System.out.println("Material." + event.getBlockPlaced().getType().name());
     
  5. Автор темы
    Shay_master

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

    Баллы:
    61
    В консоли ничего нет, когда ставлю торт. Хотя класс с handler`ом подключен правильно...
     
  6. Zнамя Юности

    Zнамя Юности Активный участник Пользователь

    Баллы:
    76
    ты его зарегистрировал хоть?
     
  7. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    А когда НЕ торт есть что ли?
     
  8. Автор темы
    Shay_master

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

    Баллы:
    61
    Bukkit.getPluginManager().registerEvents(new Handler(), this);
     
  9. Zнамя Юности

    Zнамя Юности Активный участник Пользователь

    Баллы:
    76
    убери условие блока и проверь работает вообще или нет
     
  10. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    А зачем тебе return; в конце? В данном случае это не обязательно.else убрать попробуй, толку с нее и так нету.
     
  11. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    А не смущает, то что он вначале отменяет евент, а потом пытается выдать ресурсы? напиши p.getInventory().addItem(...);
    p.sendMessage("...");
    e.setCancelled(true);
     
  12. Zнамя Юности

    Zнамя Юности Активный участник Пользователь

    Баллы:
    76
    и ничего не поменяется.
     
  13. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Но это не точно.Лучше попробовать.Действительно, может из-за этого и не работает.
     
  14. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    может не тот EventHandler импортнул?
    нету никакой разницы
     
  15. Dan_Ender

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

    Баллы:
    76
    в onEnable(){} в мэине:
    Код:
    Bukkit.getPluginManager().registerEvents(new Class_With_Event(),this);
     
  16. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_

    Я лично так регистрирую в onEnable() ивент:
    Код:
    getServer().getPluginManager().registerEvents(new Handler(), this)
     
  17. Dan_Ender

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

    Баллы:
    76
    Одно и тоже :D
     

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