Solved Adding item quantity to a command

Discussion in 'Plugin Development' started by random_username, Oct 27, 2013.

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

    random_username

    Hello, I have been trying to make a /head <player> <quantity> command, and I got it to work. My problem is that I want to see how can I avoid getting errors if players write a word where quantity is supposed to go. i.e. /head Kait18 hi
    here is part of my onCommand:
    Code:java
    1. else if(cmd.getName().equalsIgnoreCase("head")){
    2. if(Sender instanceof Player){
    3. if(Sender.hasPermission("ecore.heads")){
    4. if(args.length == 0){
    5. Sender.sendMessage(getConfig().getString("Prefix").replace("&", "§") + "§3usage: /head <player> <amount>");
    6. }if(args.length == 1){
    7. Sender.sendMessage(getConfig().getString("Prefix").replace("&", "§") + "§3usage: /head <player> <amount>");
    8. }if(args.length == 2){
    9. Player player = (Player) Sender;
    10. int id = Integer.parseInt( args[1] );
    11. ItemStack head = new ItemStack(Material.SKULL_ITEM, id, (short) 3);
    12. ItemMeta navMeta = head.getItemMeta();
    13. navMeta.setDisplayName("§3" + args[0] + "'s head");
    14. head.setItemMeta(navMeta);
    15. SkullMeta skull = (SkullMeta) head.getItemMeta();
    16. skull.setOwner(args[0]);
    17. head.setItemMeta(skull);
    18. player.getInventory().addItem(new ItemStack(head));
    19. player.sendMessage(getConfig().getString("Prefix").replace("&", "§") + "§3You have been given " + args[0] + "§3's head.");
    20. }
    21. }else{
    22. Sender.sendMessage(getConfig().getString("Prefix").replace("&", "§") + getConfig().getString("noperm").replace("&", "§"));
    23. }
    24. }else{
    25. Sender.sendMessage("§bconsole usage: /head <player> <amount> <target>");
    26. }if(args.length == 3){
    27. if(Sender.hasPermission("ecore.heads.others")){
    28. Player target = Bukkit.getPlayer(args[2]);
    29. if(target == null){
    30. Sender.sendMessage(getConfig().getString("Prefix").replace("&", "§") + ChatColor.RED + "Player not found.");
    31. }else{
    32. int id = Integer.parseInt( args[1] );
    33. ItemStack head = new ItemStack(Material.SKULL_ITEM, id, (short) 3);
    34. ItemMeta navMeta = head.getItemMeta();
    35. navMeta.setDisplayName("§3" + args[0] + "'s head");
    36. head.setItemMeta(navMeta);
    37. SkullMeta skull = (SkullMeta) head.getItemMeta();
    38. skull.setOwner(args[0]);
    39. head.setItemMeta(skull);
    40. target.getInventory().addItem(new ItemStack(head));
    41. target.sendMessage(getConfig().getString("Prefix").replace("&", "§") + "§3You have been given " + args[0] + "§3's head.");
    42. Sender.sendMessage(getConfig().getString("Prefix").replace("&", "§") + "§3You gave " + args[1] + " " + args[0] + "§3's head.");
    43. }
    44. }else{
    45. Sender.sendMessage(getConfig().getString("Prefix").replace("&", "§") + getConfig().getString("noperm").replace("&", "§"));
    46. }
    47. }
    48. }

    Is there any way to prevent this error? Thanks for the help ;)
     
  2. random_username
    I'm assuming the quantity is the 'id' variable. Anyways, this is how you should do it
    Code:java
    1. int id = 0;
    2.  
    3. try {
    4. id = Integer.parseInt(args[1]);
    5. } catch(NumberFormatException ex) {
    6. player.sendMessage("args[1] must be a number!");
    7. return true; // return something so the code doesn't continue
    8. }
     
  3. Offline

    random_username

    Thanks so much! :D
     
Thread Status:
Not open for further replies.

Share This Page