Search code examples
javabukkit

I get an internal error whenever I run the command "msg"


I get an internal error every time I run the command without any other arguments. Internal error: https://gyazo.com/f4c16facadf878fad6b00e645b3539c6 // My code:

    Player target = Bukkit.getServer().getPlayer(args[0]);

    if (cmd.getName().equalsIgnoreCase("msg")) {

        if (args.length < 1) {

            sender.sendMessage("§cUsage: /msg <player> <msg>");
            return true;
        }

        if (target != null) {

            if (args.length > 1) {

                String msg = "";

                for (int i = 1; i < args.length; i++){
                    String arg = (args[i] + " ");
                    msg = (msg + arg);
                }

                target.sendMessage("§b(From§f " + sender.getName() + "§b)§f " + msg);
                sender.sendMessage("§b(To§f " + target.getName() + "§b)§f " + msg);
                return true;
            }
        }

        if (target == null) {

            sender.sendMessage("§cThat player is offline.");
            return true;

Solution

  • I see that you are using args[0] in

     Player target = Bukkit.getServer().getPlayer(args[0]);
    

    before checking it's lenght, here

    if (args.length < 1) {
    
       sender.sendMessage("§cUsage: /msg <player> <msg>");
       return true;
    }
    

    This might cause the ArrayIndexOutOfBoundsException: 0

    check if this solves the problem

            if (args.length < 1) {
    
                sender.sendMessage("§cUsage: /msg <player> <msg>");
                return true;
            }
    Player target = Bukkit.getServer().getPlayer(args[0]);
    
        if (cmd.getName().equalsIgnoreCase("msg")) {
    
            if (target != null) {
    
                if (args.length > 1) {
    
                    String msg = "";
    
                    for (int i = 1; i < args.length; i++){
                        String arg = (args[i] + " ");
                        msg = (msg + arg);
                    }
    
                    target.sendMessage("§b(From§f " + sender.getName() + "§b)§f " + msg);
                    sender.sendMessage("§b(To§f " + target.getName() + "§b)§f " + msg);
                    return true;
                }
            }
    
            if (target == null) {
    
                sender.sendMessage("§cThat player is offline.");
                return true;