Help With Arrays? (Not 100% Sure)

Discussion in 'Plugin Development' started by CarlosArias604, Jun 3, 2012.

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

    CarlosArias604

    Basically I want my plugin to show a list of rules or staff when I use either "/tmi rules" or "/tmi staff". I thought that my current code would work as my Editor (Eclipse) doesn't have any problems with it... But when I use either "/tmi rules" or "/tmi staff" it gives me a error.


    Error:
    Show Spoiler

    Code:
    java.lang.ArrayIndexOutOfbBoundsException: 1
    at me.CarlosArias604.TooMuchInfo.TooMuchInfo.onCommand(TooMuchInfo.j
    ava: 48)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:40)
    


    My Code:
    Or Here: http://www.pastie.org/4018383
    Show Spoiler

    Code:
    package me.CarlosArias604.TooMuchInfo;
     
    import java.util.logging.Logger;
     
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.java.JavaPlugin;
    //Reminder  yourString.replace("&","§"); (Color Code for Config)
    public class TooMuchInfo extends JavaPlugin {
        Logger log;
        public void onEnable(){
            log = this.getLogger();
            this.log.info("TooMuchInfo, Please Check For Updates Weekly!");
            TooMuchInfo.replace("&","§");
            getConfig().options().copyDefaults(true);
            saveConfig();
        }
        public void onDiable(){
            log = this.getLogger();
            this.log.info("TooMuchInfo, Please Check For Updates Weekly!");
        }
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
            if (cmd.getName().equalsIgnoreCase("tmi") || commandLabel.equalsIgnoreCase("toomuchinfo")){
                if (sender instanceof Player == false){
                    this.log.info("TooMuchInfo Doesn't Like The Console");
                    return true;
                }
                PluginDescriptionFile pdfFile = this.getDescription();
                Player player = (Player) sender;
                if (args.length == 0){
                    player.sendMessage(ChatColor.DARK_PURPLE + "    '/tmi' "+ ChatColor.WHITE + "or"+ ChatColor.DARK_PURPLE +" /toomuchinfo'" + ChatColor.WHITE + " - Help Menu For TooMuchInfo.");
                    player.sendMessage(ChatColor.DARK_PURPLE + "    '/tmi info'" +  ChatColor.WHITE + " - General Info About The Plugin.");
                    player.sendMessage(ChatColor.DARK_PURPLE + "    '/tmi rules'" + ChatColor.WHITE +" - Rules.");
                    player.sendMessage(ChatColor.DARK_PURPLE + "    '/tmi website'" + ChatColor.WHITE +" - Website Domain.");
                    player.sendMessage(ChatColor.DARK_PURPLE + "    '/tmi voice'" + ChatColor.WHITE +" - Voice Chat Domain.");
                    player.sendMessage(ChatColor.DARK_PURPLE + "    '/tmi donate'" + ChatColor.WHITE +" - Donation Info.");
                }
                if (args.length == 1){
                    if (args[0].equalsIgnoreCase("info")){
                        player.sendMessage(ChatColor.GOLD + "" + ChatColor.UNDERLINE + "Plugin Info:");
                        player.sendMessage(ChatColor.DARK_PURPLE + "  Name:" + ChatColor.WHITE + "TooMuchInfo (TMI)");
                        player.sendMessage(ChatColor.DARK_PURPLE + "  Creator:" + ChatColor.WHITE +" CarlosArias604");
                        player.sendMessage(ChatColor.DARK_PURPLE + "  Versions: " + ChatColor .WHITE + pdfFile.getVersion());
                        player.sendMessage(ChatColor.DARK_PURPLE + "  Support/Suggestions:" + ChatColor.WHITE +" CarlosArias604 @ Bukkit.org");
                        return true;
                    }
                }
                if (args.length == 1){
                    if (args[1].equalsIgnoreCase("website")){
                        player.sendMessage(getConfig().getString("Website"));
                }
                }
                if (args.length == 1){
                    if (args[2].equalsIgnoreCase("voice")){
                        player.sendMessage(getConfig().getString("Voice"));
                    }
                }
                if (args.length == 1){
                    if (args[3].equalsIgnoreCase("donate")){
                        player.sendMessage(getConfig().getString("Donate"));
                    }
                }
                if (args.length == 1){
                    if (args[0].equalsIgnoreCase("rules")){
                        for (String rulesList : getConfig().getStringList("Rules")){
                            player.sendMessage(rulesList);
                        }
                   
                    }   
                }
                if (args.length == 1){
                    if (args[1].equalsIgnoreCase("staff")){
                        for (String staffList : getConfig().getStringList("Staff")){
                            player.sendMessage(staffList);
                        }
                    }
                }
                return true;
            }
            return false;
        }
        private static void replace(String string, String string2) {
            TooMuchInfo.replace("&","§");
       
        }
    }
    



    Hopefully you help me fix this! ;)

    Sincerely
    Carlos
     
  2. The first index in an array is 0 not 1, so change this:
    Code:
    if (args.length == 1){
                    if (args[1].equalsIgnoreCase("staff")){
                        for (String staffList : getConfig().getStringList("Staff")){
                            player.sendMessage(staffList);
                        }
                    }
                }
    to:
    Code:
    if (args.length == 1){
                    if (args[0].equalsIgnoreCase("staff")){
                        for (String staffList : getConfig().getStringList("Staff")){
                            player.sendMessage(staffList);
                        }
                    }
                }
    You also have some other things like this...
    look at this part of your code:
    Code:
     if (args.length == 1){
                    if (args[1].equalsIgnoreCase("website")){
                        player.sendMessage(getConfig().getString("Website"));
                }
                }
                if (args.length == 1){
                    if (args[2].equalsIgnoreCase("voice")){
                        player.sendMessage(getConfig().getString("Voice"));
                    }
                }
                if (args.length == 1){
                    if (args[3].equalsIgnoreCase("donate")){
                        player.sendMessage(getConfig().getString("Donate"));
                    }
                }
    Will that work if you look at what i said above?
    greetz blackwolf12333
     
    ferrybig and CarlosArias604 like this.
  3. Offline

    CarlosArias604

    blackwolf12333
    I will try this out, And yes... I am kind sloppy with my code at the moment. When I fix this issue I plan to clean it up and add permissions! ;)

    -C

    (Fingers crossed for your suggestion!)

    blackwolf12333
    You were 100% correct! ;)
    It fixed my problem, Caused another problem that was very easy to fix. Thanks!

    -C

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 26, 2016
  4. No problem:)
     
    CarlosArias604 likes this.
  5. Offline

    CarlosArias604

    blackwolf12333
    Just another question seeing as you are a helpful person, Do you know how to add Colour Codes from config? With the "&#Then Text Here Is Coloured". If you know this help me me quite a bit.

    -C
     
  6. No unfortunately i don't:( that is something i would like to know:p but i don't sorry
    greetz blackwolf12333
     
Thread Status:
Not open for further replies.

Share This Page