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

Помогите Ошибка в плагине

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

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

    Elereman Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    MisterHitlar
    Ошибка:
    java.lang.ArrayIndexOutOfBoundsException: 1
    Вот код:
    Код:
    import java.util.Collection;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.OfflinePlayer;
    import org.bukkit.entity.Player;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class BukkitPluginTeleport extends JavaPlugin implements Listener {
       @Override
       public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
           if(command.getName().equalsIgnoreCase("tp"))
           {
               Player pl = (Player) sender;
               Location plLoc = pl.getLocation();
               if(args.length == 0){
               sender.sendMessage(ChatColor.RED + "Используй /tp spawn, /tp <Имя игрока>, /tp home! или /tp X Y Z !");
               return true;}
               else if(args.length  > 4){
               sender.sendMessage(ChatColor.RED + "Используй /tp spawn, /tp <Имя игрока>, /tp home! или /tp X Y Z !");
               return true;}
               else if(args[0] == null || args[1] == null || args[2] == null || args[3] == null){
               sender.sendMessage(ChatColor.RED + "Используй /tp spawn, /tp <Имя игрока>, /tp home! или /tp X Y Z !");
               return true;}
               else if(args[0].equalsIgnoreCase("spawn"))
               {
                pl.teleport(Bukkit.getWorld("world").getSpawnLocation());
               }
               else if(args[0].equalsIgnoreCase("home"))
               {
                if(pl.getBedSpawnLocation() == null)
                {
                    pl.sendMessage(ChatColor.RED + "Вам нужна кровать!");
                    return true;
                }
                else{
                pl.teleport(pl.getBedSpawnLocation()); return true;}
               }
               else if(args.length == 2)
               {
                   if(pl.isOp())
                   {
                       if(Bukkit.getPlayer(args[0]) == null)
                       {
                           pl.sendMessage(ChatColor.RED +"Игрок " + args[0] + " не найден!");
                           return true;
                       }
                       else if(Bukkit.getPlayer(args[1]) == null)
                       {
                           pl.sendMessage(ChatColor.RED +"Игрок " + args[1] + " не найден!");
                           return true;
                       }
                       else{
                       Player trg = Bukkit.getPlayer(args[0]);
                       Player trg2 = Bukkit.getPlayer(args[1]);
                       trg.teleport(trg2);
                       return true;
                       }
                   }
                   else
                   {
                      pl.sendMessage(ChatColor.RED +"У вас нет прав на выполнение данной команды!");
                      return true;
                   }
               }
               else if(args.length == 3)
               {
                   if(args[0].matches("[-+]?\\d+") && args[1].matches("[-+]?\\d+") &&args[2].matches("[-+]?\\d+"))
                    {
                       if(pl.isOp())
                       {
                        Location trg = plLoc;
                        trg.setX(Integer.parseInt(args[0]));
                        trg.setY(Integer.parseInt(args[1]));
                        trg.setZ(Integer.parseInt(args[2]));
                        pl.teleport(trg);
                        return true;
                       }
                       else
                       {
                           pl.sendMessage(ChatColor.RED +"У вас нет прав на выполнение данной команды!");
                       }
                    }
                   else
                   {
                       pl.sendMessage(ChatColor.RED +"Введите координаты: X Y Z");
                   }
                   return true;
               }
               else if(!args[0].matches("[-+]?\\d+") && args[1].matches("[-+]?\\d+") && args[2].matches("[-+]?\\d+") && args[3].matches("[-+]?\\d+"))
               {
                        if(pl.isOp())
                       {
                        Location trg = plLoc;
                        trg.setX(Integer.parseInt(args[1]));
                        trg.setY(Integer.parseInt(args[2]));
                        trg.setZ(Integer.parseInt(args[3]));
                        Player pll = Bukkit.getPlayer(args[0]);
                        pll.teleport(trg);
                        return true;
                       }
                       else
                       {
                           pl.sendMessage(ChatColor.RED +"У вас нет прав на выполнение данной команды!");
                       }
               }
                else if(!args[0].matches("[-+]?\\d+") || args[0].matches("[-+]?\\d+"))
               {
                   Player trg = Bukkit.getPlayer(args[0]);
                   if(trg == null)
                   {
                       pl.sendMessage(ChatColor.RED +"Игрок " + trg.getName() + " не найден!");
                       return true;
                   }
                   else if(args[0] == null)
                   {
                       return true;     
                   }
                   else
                   {
                       pl.teleport(trg.getLocation());
                       return true;
                   }
               }
               return true;
               }
            return false;
           }
       }
     

    Вложения:

    • latest.txt
      Размер файла:
      91,4 КБ
      Просмотров:
      7
  2. Хостинг MineCraft
    <
  3. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
  4. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Код:
    else if(args[0] == null || args[1] == null || args[2] == null || args[3] == null){
    
    Что это за ошибкосборник?
    Нельзя проверять массив, лазя в индексы, не зная его размер наверняка.
     
  5. Автор темы
    Elereman

    Elereman Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    MisterHitlar
    Ну уж извините, я jav- у начал учить неделю назад :creeper:[DOUBLEPOST=1440364978,1440364823][/DOUBLEPOST]Эх... Это не прокатит потому что есть аргументы с длинной 1.
     
  6. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Проверяй по порядку: если есть аргументы вообще, то получаешь первый аргумент. И потом уже проверяешь аргумент в следующем условии. И только внутри того условия проверяешь, хватает ли для этого аргумента ещё имеющихся аргументов.
     
  7. Автор темы
    Elereman

    Elereman Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    MisterHitlar
    Помогла сортировка по количеству аргументов!
     

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