Solved Checking of Argument 1 is Set

Discussion in 'Plugin Help/Development/Requests' started by BrickBoy55, Mar 29, 2015.

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

    BrickBoy55

    I'm trying to check if argument 1 is set but I keep seeming to getting an error. I am rewriting one of my plugins to make it more effective (it was really glitchy) and I've hit a stump.

    My error:
    Show Spoiler

    [16:38:53] [Server thread/ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'launch' in plugin LaunchPads v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Bukkit-0cf233d]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[craftbukkit.jar:git-Bukkit-0cf233d]
    at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServer.java:625) ~[craftbukkit.jar:git-Bukkit-0cf233d]
    at net.minecraft.server.v1_8_R1.PlayerConnection.handleCommand(PlayerConnection.java:1058) [craftbukkit.jar:git-Bukkit-0cf233d]
    at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:919) [craftbukkit.jar:git-Bukkit-0cf233d]
    at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(SourceFile:37) [craftbukkit.jar:git-Bukkit-0cf233d]
    at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(SourceFile:9) [craftbukkit.jar:git-Bukkit-0cf233d]
    at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [craftbukkit.jar:git-Bukkit-0cf233d]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_55]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_55]
    at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:645) [craftbukkit.jar:git-Bukkit-0cf233d]
    at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:284) [craftbukkit.jar:git-Bukkit-0cf233d]
    at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:598) [craftbukkit.jar:git-Bukkit-0cf233d]
    at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:506) [craftbukkit.jar:git-Bukkit-0cf233d]
    at java.lang.Thread.run(Thread.java:745) [?:1.7.0_55]
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.brick.launchpads.LaunchPads.onCommand(LaunchPads.java:75) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit.jar:git-Bukkit-0cf233d]
    ... 14 more


    The line the error is on:
    Code:
    if (args[1] != null) {
    
    Any help is appreciated! :)
     
  2. Moved to Bukkit Alternates.

    @BrickBoy55 Did you check if they have done 2 arguments?
     
  3. Offline

    BrickBoy55

    @bwfcwalshy

    I've alreayd checked if they used argument 0. Here is the whole else if statement. If you want the whole class, I can do that.

    Code:
                        else if (args[0].equalsIgnoreCase("setblock")) {
                            if (args[1] != null) {
                                try {
                                    getConfig().set("block", Integer.parseInt(args[1]));
                                    player.sendMessage(prefix + "Block set to " + args[1] + "!");
                                    saveConfig();
                                } catch (NumberFormatException exception) {
                                    player.sendMessage(prefix + "ERROR: Argument is not an integer!");
                                } catch (NullPointerException exception) {
                                    player.sendMessage(prefix + "ERROR: Argument is not an integer!");
                                }
                                return true;
                            } else {
                                player.sendMessage(prefix + "ERROR: Please define a 3rd argument.");
                                return true;
                            }
                           
                        }
    
     
  4. Offline

    BrickBoy55

    Show Spoiler

    Code:
    package org.brick.launchpads;
    
    import org.bukkit.Sound;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class LaunchPads extends JavaPlugin implements Listener {
        public String prefix = "§8[§4LaunchPads§8] §7";
       
        @Override
        public void onEnable() {
            saveDefaultConfig();
            getServer().getPluginManager().registerEvents(this, this);
            getLogger().info("Successfully enabled!");
        }
       
        @Override
        public void onDisable() {
            saveConfig();
            getLogger().info("Successfully disabled!");
        }
       
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if (command.getName().equalsIgnoreCase("launchpads")) {
                if (!(sender instanceof Player)) {
                    sender.sendMessage("[LaunchPads] Only players can use this command!");
                } else {
                    Player player = (Player) sender;
                   
                    if (player.hasPermission("launchpads.admin")) {
                        if (args.length == 0) {
                            player.sendMessage(prefix + "Please specify a valid argument, or use /launchpads help for the help page.");
                            return true;
                        }
                       
                        if (args[0].equalsIgnoreCase("help")) {
                            player.sendMessage("§8§l[]-<()>-[] §4§lLaunchPads §8§l[]-<()>-[]");
                            player.sendMessage("§7§lRemember to use block ids for the plate and block.");
                            player.sendMessage("§7§l/launchpads setpower <power>  - Set launchpad power.");
                            player.sendMessage("§7§l/launchpads setsound <sound>  - Set launchpad sound.");
                            player.sendMessage("§7§l/launchpads setblock <block id>  - Set launchpad block.");
                            player.sendMessage("§7§l/launchpads setplate <plate id>  - Set launchpad plate.");
                            player.sendMessage("§7§l/launchpads reload  - Reload launchpads config.");
                            return true;
                        }
                       
                        else if (args[0].equalsIgnoreCase("reload")) {
                            reloadConfig();
                            player.sendMessage(prefix + "Configuration reloaded!");
                            return true;
                        }
                       
                        else if (args[0].equalsIgnoreCase("setplate")) {
                            if (args[1] != null) {
                                try {
                                    getConfig().set("plate", Integer.parseInt(args[1]));
                                    player.sendMessage(prefix + "Plate set to " + args[1] + "!");
                                    saveConfig();
                                } catch (NumberFormatException exception) {
                                    player.sendMessage(prefix + "ERROR: Argument is not an integer!");
                                } catch (NullPointerException exception) {
                                    player.sendMessage(prefix + "ERROR: Argument is not an integer!");
                                }
                                return true;
                            } else {
                                player.sendMessage(prefix + "ERROR: Please define a 3rd argument.");
                                return true;
                            }
                        }
                       
                        else if (args[0].equalsIgnoreCase("setblock")) {
                            if (args[1] != null) {
                                try {
                                    getConfig().set("block", Integer.parseInt(args[1]));
                                    player.sendMessage(prefix + "Block set to " + args[1] + "!");
                                    saveConfig();
                                } catch (NumberFormatException exception) {
                                    player.sendMessage(prefix + "ERROR: Argument is not an integer!");
                                } catch (NullPointerException exception) {
                                    player.sendMessage(prefix + "ERROR: Argument is not an integer!");
                                }
                                return true;
                            } else {
                                player.sendMessage(prefix + "ERROR: Please define a 3rd argument.");
                                return true;
                            }
                           
                        }
                       
                        else if (args[0].equalsIgnoreCase("setpower")) {
                            if (args[1] != null) {
                                try {
                                    getConfig().set("power", Integer.parseInt(args[1]));
                                    player.sendMessage(prefix + "Power set to " + args[1]);
                                    saveConfig();
                                } catch (NumberFormatException exception) {
                                    player.sendMessage(prefix + "ERROR: Argument is not an integer!");
                                } catch (NullPointerException exception) {
                                    player.sendMessage(prefix + "ERROR: Argument is not an integer!");
                                }
                                return true;
                            } else {
                                player.sendMessage(prefix + "ERROR: Please define a 3rd argument.");
                                return true;
                            }
                        }
                       
                        else if (args[0].equalsIgnoreCase("setsound")) {
                            if (args[1] != null) {
                                String argument = args[1].toUpperCase();
                               
                                try {
                                    Sound sound = Sound.valueOf(argument);
                                    getConfig().set("sound", sound.toString());
                                    player.sendMessage("Sound set to " + argument.toLowerCase());
                                    saveConfig();
                                } catch (Exception exception) {
                                    player.sendMessage(prefix + "ERROR: That is not a valid sound!\nUse sounds from: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Sound.html");
                                }
                                return true;
                            } else {
                                player.sendMessage(prefix + "ERROR: Please define a 3rd argument.");
                                return true;
                            }
                        }
                       
                        else {
                            player.sendMessage(prefix + "Invalid argument! Do /launchpads help for help.");
                            return true;
                        }
                       
                    } else {
                        player.sendMessage(prefix + "No permission!");
                        return true;
                    }
                }
            }
           
            return false;
        }
    }
    
    
     
  5. Offline

    nverdier

    @BrickBoy55 When you do
    Code:
    if (args[1] != null) {
    , you should replace it with a check to make sure the length is at least 2.
     
  6. Offline

    BrickBoy55

    @bwfcwalshy

    Sorry if I'm confusing you, but I mean I already checked if args[0] is set, now I'm trying to check if args[1] is set in one of the args[0] statements.
     
  7. Offline

    nverdier

    @BrickBoy55 No.
     
    bwfcwalshy likes this.
  8. Offline

    BrickBoy55

    So use:
    Code:
    if (args[1].length() > 2) { 
    
     
  9. Offline

    nverdier

  10. @BrickBoy55 args.length Like you did at the start.
     
  11. Offline

    BrickBoy55

Thread Status:
Not open for further replies.

Share This Page