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

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;
        }

    }
 
Проверь, вызывается ли событие. В самом начале пропиши
System.out.println("BlockPlaceEvent");
Если вызывается, то выведи в консоль название материала:
System.out.println("Material." + event.getBlockPlaced().getType().name());
 
Проверь, вызывается ли событие. В самом начале пропиши
System.out.println("BlockPlaceEvent");
Если вызывается, то выведи в консоль название материала:
System.out.println("Material." + event.getBlockPlaced().getType().name());
В консоли ничего нет, когда ставлю торт. Хотя класс с handler`ом подключен правильно...
 
убери условие блока и проверь работает вообще или нет
 
А зачем тебе return; в конце? В данном случае это не обязательно.else убрать попробуй, толку с нее и так нету.
 
А не смущает, то что он вначале отменяет евент, а потом пытается выдать ресурсы? напиши p.getInventory().addItem(...);
p.sendMessage("...");
e.setCancelled(true);
 
Но это не точно.Лучше попробовать.Действительно, может из-за этого и не работает.
может не тот EventHandler импортнул?
А не смущает, то что он вначале отменяет евент, а потом пытается выдать ресурсы? напиши p.getInventory().addItem(...);
p.sendMessage("...");
e.setCancelled(true);
нету никакой разницы
 
в onEnable(){} в мэине:
Код:
Bukkit.getPluginManager().registerEvents(new Class_With_Event(),this);
 
Назад
Верх