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

Помогите Как вызвать определенный EventHandler

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    alex314
    Всем доброго времени суток! Вся суть вопроса в названии темы.
    Нужно сделать так, чтобы при вводе команды /gift из игрока вылетал салют. Заранее спасибо за помощь! P.s в EventHandler сделан взрыв салюта при установке блоков (эксперементировал) Суть не в этом)
    Вот сам код:
    Код:
          public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
                if(cmd.getName().equalsIgnoreCase("gift")){
                    sender.sendMessage(ChatColor.RED + "Test");
                    //Код
                    return true;
                    }
                return false;
            }
      
      
    
        @EventHandler
        public void onBlockPlace(final BlockPlaceEvent e)
          {
        Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable()
            { 
        public void run()
        {
          Firework f = (Firework)e.getPlayer().getWorld().spawn(e.getPlayer().getLocation(), Firework.class);
        
          FireworkMeta meta = utils.getRandomFire(f.getFireworkMeta());
        
          f.setFireworkMeta(meta);
              }  
      });
    }
        }
     
  2. Хостинг MineCraft
    <
  3. Shockwave

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

    Баллы:
    103
    Сделай каст из sender в player и сунь код из ивента, он не нужен вообще.
    Код:
    if(sender instanceof Player) {
    Player player = (Player) sender;
    Firework f = (Firework) player.getWorld().spawn(player.getLocation(), Firework.class);
    FireworkMeta meta = utils.getRandomFire(f.getFireworkMeta());
    }
    Кстати если тебе надо шедулер, то у тебя задержки и не прописаны
     
  4. Автор темы
    alex315

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

    Баллы:
    76
    Имя в Minecraft:
    alex314
    Ошибки у меня:с Можешь изменить мой кусок кода на правильный? Буду очень благодарен!
     
  5. Shockwave

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

    Баллы:
    103
    Код:
     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
                if(cmd.getName().equalsIgnoreCase("gift")){
                    sender.sendMessage(ChatColor.RED + "Test");
                    if(sender instanceof Player) {
                    Player player = (Player) sender;
                    Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
                      public void run()
                      {
                       Firework f = (Firework) player.getWorld().spawn(player.getLocation(), Firework.class);
                       FireworkMeta meta = utils.getRandomFire(f.getFireworkMeta());
                       f.setFireworkMeta(meta);
                      } 
                    }, 60L);
                    return true;
                    }
                    }
                return false;
            }
    60L это задержка, 1 секунда = 20L
     
  6. Автор темы
    alex315

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

    Баллы:
    76
    Имя в Minecraft:
    alex314
    Код:
          public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
              if(cmd.getName().equalsIgnoreCase("gift")){
                  sender.sendMessage(ChatColor.RED + "Test");
                  if(sender instanceof Player) {
                  final Player player = (Player) sender;
                  Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
                    public void run()
                    {
                     Firework f = ((Firework) player).getWorld().spawn(((Entity) player).getLocation(), Firework.class);
                     FireworkMeta meta = utils.getRandomFire(f.getFireworkMeta());
                     f.setFireworkMeta(meta);
                    }
                  }, 60L);
                  return true;
                  }
                  }
              return false;
          }
    Ваш код вставил, выделило пару ошибок, исправил с учетом подсказок, но салюта при вводе команды нет:с Только сообщение Test выводит и все, консоль чиста
     

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