"An internal error occurred..."

Discussion in 'Plugin Development' started by Regablith, Aug 4, 2013.

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

    Regablith

    Ok, I am making a command that you can do do /clearkit to your self, and someone else. It works fine, except for the fact when you clear your own kit it says this:
    An internal error occurred while attempting to perform this command

    Code:
    Code:java
    1. package com.regablith.klegacykits.commands;
    2.  
    3. import org.bukkit.ChatColor;
    4.  
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandExecutor;
    7. import org.bukkit.command.CommandSender;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.potion.PotionEffect;
    10.  
    11. import com.regablith.klegacykits.kLegacyKits;
    12.  
    13. public class CommandCK implements CommandExecutor {
    14.  
    15. kLegacyKits plugin;
    16.  
    17. public CommandCK(kLegacyKits klegacykits) {
    18. this.plugin = klegacykits;
    19. }
    20.  
    21. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
    22. Player player = (Player) sender;
    23. if(commandLabel.equalsIgnoreCase("clearkit") || commandLabel.equalsIgnoreCase("ck")){
    24. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "LegacyKits" + ChatColor.GOLD + "] " + ChatColor.GRAY + "You removed your kit, you may now use another one");
    25. kLegacyKits.HasKit.remove(player);
    26. kLegacyKits.JumperKit.remove(player);
    27. kLegacyKits.SpartanKit.remove(player);
    28. kLegacyKits.VampireKit.remove(player);
    29. kLegacyKits.WizardKit.remove(player);
    30. kLegacyKits.HyperKit.remove(player);
    31. kLegacyKits.CrusaderKit.remove(player);
    32. for (PotionEffect effect : player.getActivePotionEffects())
    33. player.removePotionEffect(effect.getType());
    34. player.getInventory().clear();
    35. player.getInventory().setHelmet(null);
    36. player.getInventory().setChestplate(null);
    37. player.getInventory().setLeggings(null);
    38. player.getInventory().setBoots(null);
    39. }
    40. if(player.hasPermission("lk.admin.clearkit.others")){
    41. for (Player target : plugin.server.getOnlinePlayers())
    42. {
    43. if (target.getName().equalsIgnoreCase(args[0]))
    44. {
    45. target.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "LegacyKits" + ChatColor.GOLD + "] " + ChatColor.GRAY + "You removed your kit, you may now use another one");
    46. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "LegacyKits" + ChatColor.GOLD + "] " + ChatColor.GREEN + "You removed " + target.getName() + "'s kit.");
    47. kLegacyKits.HasKit.remove(target);
    48. kLegacyKits.JumperKit.remove(target);
    49. kLegacyKits.SpartanKit.remove(target);
    50. kLegacyKits.VampireKit.remove(target);
    51. kLegacyKits.WizardKit.remove(target);
    52. kLegacyKits.HyperKit.remove(target);
    53. kLegacyKits.CrusaderKit.remove(target);
    54. for (PotionEffect effect : target.getActivePotionEffects())
    55. target.removePotionEffect(effect.getType());
    56. target.getInventory().clear();
    57. target.getInventory().setHelmet(null);
    58. target.getInventory().setChestplate(null);
    59. target.getInventory().setLeggings(null);
    60. target.getInventory().setBoots(null);
    61. }
    62. }
    63. }
    64. return false;
    65. }
    66. }
     
  2. Offline

    Ivan

    Let's start by taking a look at the console shall we...
     
  3. Offline

    Regablith

  4. Offline

    Ivan

    You're assuming there is an argument at line 43, but there isn't. You're asking for the first argument, but you didn't specify any when you did the command. That's why Java throws the error. Check if there is an argument by using args.length(). That will return the amount of arguments.
     
  5. Offline

    Regablith

    Ivan

    I added
    if(args.length == 0){

    }
    above the first part, still doesn't work though

    Code:
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
            Player player = (Player) sender;
            if(commandLabel.equalsIgnoreCase("clearkit") || commandLabel.equalsIgnoreCase("ck")){
                if(args.length == 0){             
                    player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "LegacyKits" + ChatColor.GOLD + "] " + ChatColor.GRAY + "You removed your kit, you may now use another one");
                    kLegacyKits.HasKit.remove(player);
                    kLegacyKits.JumperKit.remove(player);
                    kLegacyKits.SpartanKit.remove(player);
                    kLegacyKits.VampireKit.remove(player);
                    kLegacyKits.WizardKit.remove(player);
                    kLegacyKits.HyperKit.remove(player);
                    kLegacyKits.CrusaderKit.remove(player);
                    for (PotionEffect effect : player.getActivePotionEffects())
                        player.removePotionEffect(effect.getType());
                    player.getInventory().clear();
                    player.getInventory().setHelmet(null);
                    player.getInventory().setChestplate(null);
                    player.getInventory().setLeggings(null);
                    player.getInventory().setBoots(null);
                }
            }
            if(player.hasPermission("lk.admin.clearkit.others")){
                for (Player target : plugin.server.getOnlinePlayers())
                {
                    if (target.getName().equalsIgnoreCase(args[0]))
                    {
                        target.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "LegacyKits" + ChatColor.GOLD + "] " + ChatColor.GRAY + "You removed your kit, you may now use another one");
                        player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "LegacyKits" + ChatColor.GOLD + "] " + ChatColor.GREEN + "You removed " + target.getName() + "'s kit.");
                        kLegacyKits.HasKit.remove(target);
                        kLegacyKits.JumperKit.remove(target);
                        kLegacyKits.SpartanKit.remove(target);
                        kLegacyKits.VampireKit.remove(target);
                        kLegacyKits.WizardKit.remove(target);
                        kLegacyKits.HyperKit.remove(target);
                        kLegacyKits.CrusaderKit.remove(target);
                        for (PotionEffect effect : target.getActivePotionEffects())
                            target.removePotionEffect(effect.getType());
                        target.getInventory().clear();
                        target.getInventory().setHelmet(null);
                        target.getInventory().setChestplate(null);
                        target.getInventory().setLeggings(null);
                        target.getInventory().setBoots(null);
                    }
                }
            }
            return false;
        }
     
  6. Offline

    Technius

    Regablith
    Your plugin only has one command, right? If so, then you do not need to check the label.
    Move this block
    Code:
    if(player.hasPermission("lk.admin.clearkit.others")){
    
    into your args check.
     
Thread Status:
Not open for further replies.

Share This Page