Solved How to fix ArrayIndexOutOfBounds

Discussion in 'Plugin Development' started by 87pen, May 21, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    87pen

    My Code:
    Code:
    package me.kowagatte.sevenkings;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class SevenKings extends JavaPlugin{
       
        public void loadConfiguration(){
            String main = "Kings";
            getConfig().addDefault(main, null);
           
            String white = "Kings.white";
            getConfig().addDefault(white, null);
            String whiteleader = "Kings.white.leader";
            getConfig().addDefault(whiteleader, "");
           
            String gold = "Kings.gold";
            getConfig().addDefault(gold, "");
           
            String blue = "Kings.blue";
            getConfig().addDefault(blue, "");
           
            String red = "Kings.red";
            getConfig().addDefault(red, "");
           
            String black = "Kings.black";
            getConfig().addDefault(black, "");
           
            String green = "Kings.green";
            getConfig().addDefault(green, "");
           
            String colorless = "Kings.colorless";
            getConfig().addDefault(colorless, "");
           
            getConfig().options().copyDefaults(true);
            saveConfig();
        }
       
        public void onEnable(){
            loadConfiguration();
        }
       
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
           
              if(!(sender instanceof Player)){
                  sender.sendMessage("Console cannot use SevenKings");
                  return true;
              }
             
              Player p = (Player)sender;
              if(cmd.getName().equalsIgnoreCase("sevenkings")){
                 
                  if(args.length == 0){
                      p.sendMessage(ChatColor.YELLOW + "=====[ SevenKings " +  ChatColor.YELLOW + "]=====");
                      p.sendMessage(ChatColor.RED + "For help use /sevenkings help");
                      p.sendMessage(ChatColor.YELLOW + "=====[ End ]=====");
                      return true;
                  }
                 
                  if(args[0].equalsIgnoreCase("help")){
                      p.sendMessage(ChatColor.YELLOW + "=====[ SevenKings " + ChatColor.GREEN + "Help " + ChatColor.YELLOW + "1/1 ]=====");
                      p.sendMessage(ChatColor.RED + "/sevenkings help");
                      p.sendMessage(ChatColor.RED + "/sevenkings check");
                      p.sendMessage(ChatColor.RED + "/sevenkings invite [Player]");
                      p.sendMessage(ChatColor.RED + "/sevenkings join [King]");
                      p.sendMessage(ChatColor.RED + "/sevenkings king [Player]");
                      p.sendMessage(ChatColor.YELLOW + "=====[ End ]=====");
                      return true;
                  }
                 
                  if(args[0].equalsIgnoreCase("invite")){
                      if(args.length == 0){
                          p.sendMessage(ChatColor.YELLOW + "=====[ SevenKings " +  ChatColor.YELLOW + "]=====");
                          p.sendMessage(ChatColor.RED + "USAGE: /sevenkings invite [Player]");
                          p.sendMessage(ChatColor.YELLOW + "=====[ End ]=====");
                          return true;
                      }
                      if(args.length == 1){
                                  for(Player target : Bukkit.getServer().getOnlinePlayers()){
                                      if(args[1].equalsIgnoreCase(target.getName())){
                                              p.sendMessage(ChatColor.YELLOW + "=====[ SevenKings " +  ChatColor.YELLOW + "]=====");
                                              p.sendMessage(ChatColor.RED + "You have invited " + target.getName() + "!");
                                              return true;
                                      }
                                      if(args[1] != target.getName()){
                                              p.sendMessage(ChatColor.YELLOW + "=====[ SevenKings " +  ChatColor.YELLOW + "]=====");
                                              p.sendMessage(ChatColor.RED + "The Player " + target.getName() + " cannot be found!");
                                              return true;
                                      }
                          }
                      }
                      //To do
                      return true;
                  }
                 
                  if(args[0].equalsIgnoreCase("join")){
                      //To do
                      return true;
                  }
                 
                  if(args[0].equalsIgnoreCase("leader")){
                      //To do
                      return true;
                  }
                 
              } 
            return true;
          }
       
       
    }
    
    The error is "Caused by: java.long.ArrayIndexOutofBoundsException: 1"
    At line :84

    Would anyone be willing to teach me how to fix this and avoid it later?
     
  2. Offline

    Nateb1121

    Arrays start with 0, so if the length is 1, you can get spot 0, if the length is 2 you can get 0,1. You just need to change args[1] to args[0]
     
    87pen likes this.
  3. Offline

    87pen

    Thanks this information helped and fixed my problem!
     
Thread Status:
Not open for further replies.

Share This Page