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

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

Discussion in 'Разработка плагинов для новичков' started by alex315, Nov 29, 2015.

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

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

    Trophy Points:
    76
    Имя в Minecraft:
    alex314
    Всем доброго времени суток! Вся суть вопроса в названии темы.
    Нужно сделать так, чтобы при вводе команды /gift из игрока вылетал салют. Заранее спасибо за помощь! P.s в EventHandler сделан взрыв салюта при установке блоков (эксперементировал) Суть не в этом)
    Вот сам код:
    Code:
          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 Старожил Пользователь

    Trophy Points:
    103
    Сделай каст из sender в player и сунь код из ивента, он не нужен вообще.
    Code:
    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 Активный участник Пользователь

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

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

    Trophy Points:
    103
    Code:
     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 Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    alex314
    Code:
          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 выводит и все, консоль чиста
     

Share This Page