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

Помогите Эвент на использование зелий. [Решено]

Discussion in 'Разработка плагинов для новичков' started by Exception_Prototype, Jan 14, 2017.

Thread Status:
Not open for further replies.
  1. Автор темы
    Exception_Prototype

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

    Trophy Points:
    46
    Какой эвент отвечает за использования игроком зелья?
    Мне нужно перехватить использования зелья (просто когда выпивает его) и получить тип этого зелья.
     
  2. Хостинг MineCraft
    <
  3. FlamestoN

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

    Trophy Points:
    66
    Skype:
    flameston
    Имя в Minecraft:
    FlamestoN
  4. alexandrage

    alexandrage Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    Ивента после юза зелья вроде как нет, только до.
     
  5. FlamestoN

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

    Trophy Points:
    66
    Skype:
    flameston
    Имя в Minecraft:
    FlamestoN
  6. iD3LSY

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

    Trophy Points:
    46
    Имя в Minecraft:
    opy
    Немного посмотрел, подумал, но как узнать эффект зелья не нашёл.

    Чтобы получить зелье, можешь использовать
    Code:
    public void PlayerItemConsume(PlayerItemConsumeEvent e) {
        if(e.getItem().getType() == Material.POTION) {
            Potion pi = Potion.fromItemStack(e.getItem());
        }
    }
    Если покопаешь, может и эффект найдёшь :)[DOUBLEPOST=1484420365,1484420087][/DOUBLEPOST]Так. Усё. Вот, держи

    Code:
    public void PlayerItemConsume(PlayerItemConsumeEvent e) {
        if(e.getItem().getType() == Material.POTION) {
            PotionMeta pm = (PotionMeta) e.getItem().getItemMeta();
            e.getPlayer().sendMessage("" + pm.getBasePotionData().getType());
        }
    }
     
    Last edited: Jan 14, 2017
  7. Автор темы
    Exception_Prototype

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

    Trophy Points:
    46
    Code:
    @EventHandler
        public void onPotionDrink(PlayerItemConsumeEvent event) {
    
            Potion p = Potion.fromItemStack(event.getItem());
    
            for (PotionEffect pe : p.getEffects()) {
    event.getPlayer().sendMessage(pe.getType().toString());
    
                if (pe.getType().toString().equals("INVISIBILITY")) {
                    event.setCancelled(true);
                    event.getPlayer().sendMessage(ChatColor.RED + "Нельзя использовать данное зелье!");
                }
            }
        }
    
     
  8. Fenix78563

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    с этим что то не так?

    или ты делишься конечным кодом?
     
  9. Автор темы
    Exception_Prototype

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

    Trophy Points:
    46
    Просто кинул, мож у кого поправки будут.
     
  10. Fenix78563

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

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    ну сей ивент вызывается не только при выпивании зелья, но и при поедании других поедаемых вещей, поэтому надо делать проверку, либо ставить try catch
     
  11. Автор темы
    Exception_Prototype

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

    Trophy Points:
    46
    Окончательный вариант. Рабочий.
    Code:
     @EventHandler
     public void onPotionDrink(PlayerItemConsumeEvent event) {
      if (event.getItem().getType() == Material.POTION) {
       Potion p = Potion.fromItemStack(event.getItem());
    
       for (PotionEffect pe : p.getEffects()) {
        if (pe.getType().toString().contains("INVISIBILITY")) {
         event.setCancelled(true);
         event.getPlayer().sendMessage(ChatColor.RED + "Нельзя использовать данное зелье!");
         return;
        }
       }
      }
     }
    
     
Thread Status:
Not open for further replies.

Share This Page