Functions not being called?

Discussion in 'Plugin Development' started by Astrophylite, Nov 13, 2015.

Thread Status:
Not open for further replies.
  1. Hello everyone!

    I am trying to make a plugin to tempban players that have functions in a separate classes. I know the commands are being registered because I have error messages returning when I don't have enough arguments. I put debugging stuff into the functions that I was mainly trying to use and the messages were not being sent. Here is the code for both classes:
    TempBan (open)

    Code:java
    1. package me.zircon.zirconessentials.commands.moderation.tempban;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandExecutor;
    7. import org.bukkit.command.CommandSender;
    8.  
    9. import me.zircon.zirconessentials.miscellaneous.MessageManager;
    10. import me.zircon.zirconessentials.miscellaneous.Prefix;
    11. import me.zircon.zirconessentials.other.SettingsManager;
    12.  
    13. public class TempBan implements CommandExecutor {
    14.  
    15. SettingsManager settings = SettingsManager.getInstance();
    16. String goodPrefix = Prefix.banGood;
    17. String badPrefix = Prefix.banBad;
    18.  
    19. @SuppressWarnings("deprecation")
    20. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    21. if(cmd.getName().equalsIgnoreCase("tempban")) {
    22. if(!sender.hasPermission("zirconessentials.ban.temporary")) {
    23. MessageManager.sendMessageSender(sender, badPrefix.replaceAll("%message%", "You do not have permission to tempban players!"));
    24. return false;
    25. } else {
    26. if(args.length < 2) {
    27. sender.sendMessage(ChatColor.RED + "Usage: /" + label + " <player> <Mm|Hh|Dd> [reason}");
    28. return false;
    29. } else if(args.length == 2) {
    30. if((args[1].endsWith("m")) || (args[1].endsWith("h")) || (args[1].endsWith("d"))) {
    31. try {
    32. String unit = args[1].substring(0, args[1].length() - 1);
    33. int time = Integer.parseInt(args[1].substring(0, args[1].length() - 1));
    34. if(Bukkit.getPlayer(args[0]) != null) {
    35. if(unit.equalsIgnoreCase("m")) {
    36. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getPlayer(args[0]).getUniqueId().toString(), null, time, 60000);
    37. } else if(unit.equalsIgnoreCase("h")) {
    38. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getPlayer(args[0]).getUniqueId().toString(), null, time, 3600000);
    39. } else if(unit.equalsIgnoreCase("d")) {
    40. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getPlayer(args[0]).getUniqueId().toString(), null, time, 86400000);
    41. }
    42. } else {
    43. if(unit.equalsIgnoreCase("m")) {
    44. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getOfflinePlayer(args[0]).getUniqueId().toString(), null, time, 60000);
    45. } else if(unit.equalsIgnoreCase("h")) {
    46. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getOfflinePlayer(args[0]).getUniqueId().toString(), null, time, 3600000);
    47. } else if(unit.equalsIgnoreCase("d")) {
    48. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getOfflinePlayer(args[0]).getUniqueId().toString(), null, time, 86400000);
    49. }
    50. }
    51. } catch(NumberFormatException e1) {
    52. MessageManager.sendMessageSender(sender, badPrefix.replaceAll("%message%", "/" + label + "<Player> <Time> [Reason]"));
    53. }
    54. } else {
    55. MessageManager.sendMessageSender(sender, badPrefix.replaceAll("%message%", "/" + label + " <Player> <Time> [Reason]"));
    56. }
    57. } else {
    58. if((args[1].endsWith("m")) || (args[1].endsWith("h")) || (args[1].endsWith("d"))) {
    59. try {
    60. String unit = args[1].substring(0, args[1].length() - 1);
    61. int time = Integer.parseInt(args[1].substring(0, args[1].length() - 1));
    62. if(Bukkit.getPlayer(args[0]) != null) {
    63. if(unit.equalsIgnoreCase("m")) {
    64. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getPlayer(args[0]).getUniqueId().toString(), TempBanFunctions.setReason(args, 2), time, 60000);
    65. } else if(unit.equalsIgnoreCase("h")) {
    66. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getPlayer(args[0]).getUniqueId().toString(), TempBanFunctions.setReason(args, 2), time, 3600000);
    67. } else if(unit.equalsIgnoreCase("d")) {
    68. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getPlayer(args[0]).getUniqueId().toString(), TempBanFunctions.setReason(args, 2), time, 86400000);
    69. }
    70. } else {
    71. if(unit.equalsIgnoreCase("m")) {
    72. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getOfflinePlayer(args[0]).getUniqueId().toString(), TempBanFunctions.setReason(args, 2), time, 60000);
    73. } else if(unit.equalsIgnoreCase("h")) {
    74. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getOfflinePlayer(args[0]).getUniqueId().toString(), TempBanFunctions.setReason(args, 2), time, 3600000);
    75. } else if(unit.equalsIgnoreCase("d")) {
    76. TempBanFunctions.banPlayer(sender, args[0], Bukkit.getOfflinePlayer(args[0]).getUniqueId().toString(), TempBanFunctions.setReason(args, 2), time, 86400000);
    77. }
    78. }
    79. } catch(NumberFormatException e1) {
    80. MessageManager.sendMessageSender(sender, badPrefix.replaceAll("%message%", "/" + label + "<Player> <Time> [Reason]"));
    81. }
    82. }
    83. }
    84. }
    85. }
    86. if(cmd.getName().equalsIgnoreCase("untempban")) {
    87. if(!sender.hasPermission("zirconessentials.unban.temporary")) {
    88. MessageManager.sendMessageSender(sender, badPrefix.replaceAll("%message%", "You do not have permission to use this command!"));
    89. return false;
    90. } else {
    91. if(args.length == 1) {
    92. TempBanFunctions.unbanPlayer(sender, args[0], Bukkit.getOfflinePlayer(args[0]).getUniqueId().toString());
    93. return true;
    94. } else {
    95. MessageManager.sendMessageSender(sender, badPrefix.replaceAll("%message%", "Usage: /" + label + " <Player>"));
    96. return false;
    97. }
    98. }
    99. }
    100. return false;
    101. }
    102. }


    TempBanFunctions (open)

    Code:java
    1. package me.zircon.zirconessentials.commands.moderation.tempban;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.command.CommandSender;
    6. import org.bukkit.configuration.file.FileConfiguration;
    7. import org.bukkit.entity.Player;
    8.  
    9. import me.zircon.zirconessentials.miscellaneous.MessageManager;
    10. import me.zircon.zirconessentials.miscellaneous.Prefix;
    11. import me.zircon.zirconessentials.other.SettingsManager;
    12.  
    13. public class TempBanFunctions {
    14.  
    15. static SettingsManager settings = SettingsManager.getInstance();
    16. static String goodPrefix = Prefix.banGood;
    17. static String badPrefix = Prefix.banBad;
    18. static FileConfiguration config = settings.getTempBan();
    19.  
    20. public static void banPlayer(CommandSender sender, String name, String uuid, String reason, int time, int multi) {
    21. MessageManager.sendMessageSender(sender, ChatColor.GREEN + "Player banning is in process!");
    22. MessageManager.sendMessage(Bukkit.getPlayer(name), ChatColor.GREEN + "You are the target!");
    23. long current = System.currentTimeMillis();
    24. long millis = time * multi;
    25. long endOfBan = current + millis;
    26. if(!(isBanned(uuid))) {
    27. config.set(uuid + ".EndOfBan", Long.valueOf(endOfBan));
    28. if(reason != null) {
    29. config.set(uuid + ".Reason", reason);
    30. }
    31. settings.saveTempBan();
    32. MessageManager.sendMessageSender(sender, goodPrefix.replaceAll("%message%", "The player was successfully banned for: " + multi * 1000 + " seconds!"));
    33. if(reason != null) {
    34. MessageManager.sendMessageSender(sender, goodPrefix.replaceAll("%message%", "You banned the player for " + reason + "!"));
    35. }
    36. MessageManager.sendMessageSender(sender, goodPrefix.replaceAll("%message%", "The player has " + getRemainingTime(uuid) + " before their ban expires!"));
    37. kickPlayer(Bukkit.getPlayer(name));
    38. }
    39. }
    40.  
    41. public static String getRemainingTime(String uuid) {
    42. long current = System.currentTimeMillis();
    43. long endOfBan = getEndOfBan(uuid).longValue();
    44. long millis = endOfBan - current;
    45.  
    46. int seconds = 0;
    47. int minutes = 0;
    48. int hours = 0;
    49. int days = 0;
    50. while(millis > 1000L) {
    51. millis -= 1000L;
    52. seconds++;
    53. }
    54. while(seconds > 60) {
    55. seconds -= 60;
    56. minutes++;
    57. }
    58. while(minutes > 60) {
    59. minutes -= 60;
    60. hours++;
    61. }
    62. while(hours > 24) {
    63. hours -= 24;
    64. days++;
    65. }
    66. return String.valueOf(days) + String.valueOf(hours) + String.valueOf(minutes) + String.valueOf(seconds);
    67. }
    68.  
    69. public static Long getEndOfBan(String uuid) {
    70. return Long.valueOf(config.getLong(uuid + ".EndOfBan"));
    71. }
    72.  
    73. public static void kickPlayer(Player target) {
    74. if(target != null) {
    75. if(config.getString(target.getUniqueId().toString() + ".Reason") == null) {
    76. target.kickPlayer("You were tempbanned for " + getRemainingTime(target.getUniqueId().toString()));
    77. } else {
    78. target.kickPlayer("You were tempbanned for " + getRemainingTime(target.getUniqueId().toString() + ".\nThe reason specified was: " + config.getString(target.getUniqueId().toString() + ".Reason")));
    79. }
    80. }
    81. }
    82.  
    83. public static void unbanPlayer(CommandSender sender, String name, String uuid) {
    84. if(isBanned(uuid)) {
    85. config.set(uuid, null);
    86. settings.saveTempBan();
    87. MessageManager.sendMessageSender(sender, goodPrefix.replaceAll("%message%", "You unbanned " + name + "!"));
    88. } else {
    89. MessageManager.sendMessageSender(sender, badPrefix.replaceAll("%message%", "That player isn't banned!"));
    90. }
    91. }
    92.  
    93. public static boolean isBanned(String uuid) {
    94. return config.isLong(uuid + ".EndOfBan");
    95. }
    96.  
    97. public static String setReason(String[] args, int start) {
    98. String reason = "";
    99. for(int i = start; i < args.length; i++) {
    100. reason = reason + args[i] + " ";
    101. }
    102. return reason;
    103. }
    104. }[/i]



    Any help will be appreciated,
    _Zircon_.
     
  2. Offline

    Zombie_Striker

    Gee, would be nice to see those errors.
     
  3. They're inbuilt to the plugin that just sends you a message showing you the usage.

    _Zircon_.
     
  4. Offline

    Scimiguy

    Well it's kinda hard to tell where the issue is if we don't have any information on where it's going wrong.

    At this point you've basically said:
    "I have these two classes, they don't work"'

    Where did you put your debugging outputs?
    What line does your code seemingly get to?
    Is it for both commands, or only one?
     
  5. I did put debugging information after the command was run, after the function banPlayer() was called. Then in the tempban functions class, I put debugging information when the function was called and when the player had been kicked.

    _Zircon_.
     
  6. Offline

    Scimiguy

    and...?
     
  7. It only sent the messages that told me the command had been sent. So I think there is something wrong with calling the function because it doesn't send me the message to say the function has been called nor the player has been banned.

    EDIT: I can't test the /untempban command because I'm not able to tempban anyone..

    _Zircon_.
     
    Last edited: Nov 14, 2015
  8. Is this a fixable issue?

    _Zircon_.
     
  9. Offline

    mcdorli

    No error messages?
     
Thread Status:
Not open for further replies.

Share This Page