How can I clean up error messages when certain things happen?

Discussion in 'Plugin Development' started by football70500, Jun 24, 2014.

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

    football70500

    Okay, so in this plugin, if the target of the command is not online, an error message gets thrown. How can I fix this?

    Code:java
    1. if(cmd.getName().equalsIgnoreCase("freeze")){
    2. if(sender.hasPermission("ezfreeze.freeze")){
    3. if(target.isOnline()){
    4. if(!freeze.contains(target.getDisplayName())){
    5. if(!target.hasPermission("ezfreeze.exempt")){
    6. freeze.add(target.getDisplayName());
    7. target.sendMessage(ChatColor.RED + "You are now frozen!");
    8. sender.sendMessage(ChatColor.GREEN + target.getDisplayName() + " has been frozen!");
    9. }else if (target.hasPermission("ezfreeze.immune")){
    10. sender.sendMessage(ChatColor.RED + "You may not freeze " + target.getDisplayName() + ChatColor.RED + "!");
    11. }
    12. }else if(freeze.contains(target.getDisplayName())){
    13. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is already frozen!");
    14. }
    15. }else if(!target.isOnline()){
    16. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is not online!");
    17. }
    18. }else if(!sender.hasPermission("ezfreeze.freeze")){
    19. sender.sendMessage(ChatColor.RED + "You do not have permission to use this command!");
    20. }
    21. }


    I would have to insert a catch(IOException e){ somewhere but where would I put it?
     
  2. Offline

    drtshock

    You should be checking for cases, not catching exceptions.

    Paste the entire method/class. I don't see where 'target' is declared. If it's the case of getting a player from the command you should be doing something like (after checking for args length):
    Code:java
    1. Player player = Bukkit.getPlayer(args[1]);
    2. if(player != null){// do stuff}
     
  3. Offline

    football70500


    Code:java
    1. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    2. Player target = getServer().getPlayer(args[0]);
    3. if(cmd.getName().equalsIgnoreCase("freeze")){
    4. if(sender.hasPermission("ezfreeze.freeze")){
    5. if(target.isOnline()){
    6. if(!freeze.contains(target.getDisplayName())){
    7. if(!target.hasPermission("ezfreeze.exempt")){
    8. freeze.add(target.getDisplayName());
    9. target.sendMessage(ChatColor.RED + "You are now frozen!");
    10. sender.sendMessage(ChatColor.GREEN + target.getDisplayName() + " has been frozen!");
    11. }else if (target.hasPermission("ezfreeze.immune")){
    12. sender.sendMessage(ChatColor.RED + "You may not freeze " + target.getDisplayName() + ChatColor.RED + "!");
    13. }
    14. }else if(freeze.contains(target.getDisplayName())){
    15. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is already frozen!");
    16. }
    17. }else if(!target.isOnline()){
    18. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is not online!");
    19. }
    20. }else if(!sender.hasPermission("ezfreeze.freeze")){
    21. sender.sendMessage(ChatColor.RED + "You do not have permission to use this command!");
    22. }
    23. }
     
  4. Offline

    drtshock

    You should be checking for args length to make sure that there is an args[0]. And you should check for null instead of trying to make a call against a possibly null object which will throw an NPE.
     
  5. Offline

    Zupsub

    Code:java
    1.  
    2. You better use getName() (or best getUniqueId()) instead of getDisplayName().
    3.  
    4. Since you used #getPlayer() the player must be online (so the if target.isOnline() is senseless), or the function will return null. That's why #isOnline would throw a NPE.
    5.  
    6. You also might looking at the java and operator (&&).
     
  6. Offline

    football70500

    Neither of those work
     
  7. Offline

    drtshock

    Did you not listen to my advice? :c
     
  8. Offline

    football70500

    Yes. I am working on it right now. Iwas just explaining to him that his stoof didnt work

    EDIT: Also, In doing so I am still getting an exception. the target is defined as args[0] when I create the player Target
     
  9. Offline

    drtshock

    Make sure that args.length == 1 then.
     
  10. Offline

    football70500

    Still an error. When i do this, my /unfreeze command doesnt even work.
     
  11. Offline

    Zupsub

    Well, then you didn't use them as expected. Tell me the error and your code and we can help you.
    Of course you still have to check args.length == 1
     
  12. Offline

    football70500

    drtshock
    Code:java
    1. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    2. Player target = getServer().getPlayer(args[0]);
    3. if(cmd.getName().equalsIgnoreCase("freeze")){
    4. if(args.length == 1){
    5. if(sender.hasPermission("ezfreeze.freeze")){
    6. if(target != null){
    7. if(!freeze.contains(target.getDisplayName())){
    8. if(!target.hasPermission("ezfreeze.exempt")){
    9. freeze.add(target.getDisplayName());
    10. target.sendMessage(ChatColor.RED + "You are now frozen!");
    11. sender.sendMessage(ChatColor.GREEN + target.getDisplayName() + " has been frozen!");
    12. }else if (target.hasPermission("ezfreeze.immune")){
    13. sender.sendMessage(ChatColor.RED + "You may not freeze " + target.getDisplayName() + ChatColor.RED + "!");
    14. }
    15. }else if(freeze.contains(target.getDisplayName())){
    16. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is already frozen!");
    17. }
    18. }else if(target == null){
    19. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is not online!");
    20. }
    21. }else if(!sender.hasPermission("ezfreeze.freeze")){
    22. sender.sendMessage(ChatColor.RED + "You do not have permission to use this command!");
    23. }
    24. }
    25. if(cmd.getName().equalsIgnoreCase("unfreeze")){
    26. if(args.length == 1){
    27. if(sender.hasPermission("ezfreeze.freeze")){
    28. if(target.isOnline()){
    29. if(freeze.contains(target.getDisplayName())){
    30. freeze.remove(target.getDisplayName());
    31. target.sendMessage(ChatColor.GREEN + "You are no longer frozen!");
    32. sender.sendMessage(ChatColor.GREEN + target.getDisplayName() + " is no longer frozen!");
    33. }else if(!freeze.contains(target.getDisplayName())){
    34. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is not frozen!");
    35. }
    36. }else if(!target.isOnline()){
    37. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is not online!");
    38. }
    39. }else if(!sender.hasPermission("ezfreeze.freeze")){
    40. sender.sendMessage(ChatColor.RED + "You do not have permission to use this command!");
    41. }
    42. }
    43. }
    44.  
    45. }
    46. return false;
    47. }


    http://i.imgur.com/kSmLshR.png?1
     
  13. Offline

    drtshock

  14. Offline

    football70500

    Now when I do this, my /unfreeze command doesn't work.

    Code:java
    1. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    2. if(cmd.getName().equalsIgnoreCase("freeze")){
    3. if(args.length == 1){
    4. Player target = getServer().getPlayer(args[0]);
    5. if(sender.hasPermission("ezfreeze.freeze")){
    6. if(target != null){
    7. if(!freeze.contains(target.getDisplayName())){
    8. if(!target.hasPermission("ezfreeze.exempt")){
    9. freeze.add(target.getDisplayName());
    10. target.sendMessage(ChatColor.RED + "You are now frozen!");
    11. sender.sendMessage(ChatColor.GREEN + target.getDisplayName() + " has been frozen!");
    12. }else if (target.hasPermission("ezfreeze.immune")){
    13. sender.sendMessage(ChatColor.RED + "You may not freeze " + target.getDisplayName() + ChatColor.RED + "!");
    14. }
    15. }else if(freeze.contains(target.getDisplayName())){
    16. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is already frozen!");
    17. }
    18. }else if(target == null){
    19. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is not online!");
    20. }
    21. }else if(!sender.hasPermission("ezfreeze.freeze")){
    22. sender.sendMessage(ChatColor.RED + "You do not have permission to use this command!");
    23. }
    24. }
    25. if(cmd.getName().equalsIgnoreCase("unfreeze")){
    26. if(args.length == 1){
    27. Player target = getServer().getPlayer(args[0]);
    28. if(sender.hasPermission("ezfreeze.freeze")){
    29. if(target != null){
    30. if(freeze.contains(target.getDisplayName())){
    31. freeze.remove(target.getDisplayName());
    32. target.sendMessage(ChatColor.GREEN + "You are no longer frozen!");
    33. sender.sendMessage(ChatColor.GREEN + target.getDisplayName() + " is no longer frozen!");
    34. }else if(!freeze.contains(target.getDisplayName())){
    35. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is not frozen!");
    36. }
    37. }else if(target == null){
    38. sender.sendMessage(ChatColor.RED + target.getDisplayName() + " is not online!");
    39. }
    40. }else if(!sender.hasPermission("ezfreeze.freeze")){
    41. sender.sendMessage(ChatColor.RED + "You do not have permission to use this command!");
    42. }
    43. }
    44. }
    45.  
    46. }
    47. return false;
    48. }
    49. }
    50.  



    And there's the error again if the target isnt online

    drtshock

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 9, 2016
Thread Status:
Not open for further replies.

Share This Page