Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Elereman

Ньюби
Пользователь
Баллы
1
Имя в Minecraft
MisterHitlar
Ошибка:
java.lang.ArrayIndexOutOfBoundsException: 1
Вот код:
JavaScript:
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
    latest.txt
    Размер файла
    91,4 КБ
    Просмотров
    8
Код:
else if(args[0] == null || args[1] == null || args[2] == null || args[3] == null){
Что это за ошибкосборник?
Нельзя проверять массив, лазя в индексы, не зная его размер наверняка.
 
Код:
else if(args[0] == null || args[1] == null || args[2] == null || args[3] == null){
Что это за ошибкосборник?
Нельзя проверять массив, лазя в индексы, не зная его размер наверняка.
Ну уж извините, я jav- у начал учить неделю назад :creeper:
Эх... Это не прокатит потому что есть аргументы с длинной 1.
 
Ну уж извините, я jav- у начал учить неделю назад :creeper:
Эх... Это не прокатит потому что есть аргументы с длинной 1.
Проверяй по порядку: если есть аргументы вообще, то получаешь первый аргумент. И потом уже проверяешь аргумент в следующем условии. И только внутри того условия проверяешь, хватает ли для этого аргумента ещё имеющихся аргументов.
 
Помогла сортировка по количеству аргументов!
 

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

Назад
Верх