McremoveCommand.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package com.gmail.nossr50.commands.mc;
  2. import java.io.BufferedReader;
  3. import java.io.FileReader;
  4. import java.io.FileWriter;
  5. import org.bukkit.ChatColor;
  6. import org.bukkit.command.Command;
  7. import org.bukkit.command.CommandExecutor;
  8. import org.bukkit.command.CommandSender;
  9. import org.bukkit.entity.Player;
  10. import com.gmail.nossr50.mcMMO;
  11. import com.gmail.nossr50.commands.CommandHelper;
  12. import com.gmail.nossr50.config.Config;
  13. import com.gmail.nossr50.locale.LocaleLoader;
  14. import com.gmail.nossr50.util.Users;
  15. public class McremoveCommand implements CommandExecutor {
  16. private final String location = mcMMO.p.usersFile;
  17. private final mcMMO plugin;
  18. public McremoveCommand (mcMMO plugin) {
  19. this.plugin = plugin;
  20. }
  21. @Override
  22. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  23. String playerName;
  24. String tablePrefix = Config.getInstance().getMySQLTablePrefix();
  25. String databaseName = Config.getInstance().getMySQLDatabaseName();
  26. String usage = ChatColor.RED + "Proper usage is /mcremove <player>"; //TODO: Needs more locale.
  27. String success;
  28. if (CommandHelper.noCommandPermissions(sender, "mcmmo.tools.mcremove")) {
  29. return true;
  30. }
  31. switch (args.length) {
  32. case 1:
  33. playerName = args[0];
  34. success = ChatColor.GREEN + playerName + "was successfully removed from the database!"; //TODO: Locale
  35. break;
  36. default:
  37. sender.sendMessage(usage);
  38. return true;
  39. }
  40. /* MySQL */
  41. if (Config.getInstance().getUseMySQL()) {
  42. int userId = 0;
  43. userId = mcMMO.database.getInt("SELECT id FROM " + tablePrefix + "users WHERE user = '" + playerName + "'");
  44. if (userId > 0) {
  45. mcMMO.database.write("DELETE FROM "
  46. + databaseName + "."
  47. + tablePrefix + "users WHERE "
  48. + tablePrefix + "users.id=" + userId);
  49. mcMMO.database.write("DELETE FROM "
  50. + databaseName + "."
  51. + tablePrefix + "cooldowns WHERE "
  52. + tablePrefix + "cooldowns.user_id=" + userId);
  53. mcMMO.database.write("DELETE FROM "
  54. + databaseName + "."
  55. + tablePrefix + "huds WHERE "
  56. + tablePrefix + "huds.user_id=" + userId);
  57. mcMMO.database.write("DELETE FROM "
  58. + databaseName + "."
  59. + tablePrefix + "skills WHERE "
  60. + tablePrefix + "skills.user_id=" + userId);
  61. mcMMO.database.write("DELETE FROM "
  62. + databaseName + "."
  63. + tablePrefix + "experience WHERE "
  64. + tablePrefix + "experience.user_id=" + userId);
  65. sender.sendMessage(success);
  66. }
  67. else {
  68. sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
  69. }
  70. }
  71. else {
  72. if (removeFlatFileUser(playerName)) {
  73. sender.sendMessage(success);
  74. }
  75. else {
  76. sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
  77. }
  78. }
  79. //Force PlayerProfile stuff to update
  80. Player player = plugin.getServer().getPlayer(playerName);
  81. if (player != null && Users.players.containsKey(playerName.toLowerCase())) {
  82. Users.removeUser(player);
  83. Users.addUser(player);
  84. }
  85. return true;
  86. }
  87. private boolean removeFlatFileUser(String playerName) {
  88. boolean worked = false;
  89. try {
  90. FileReader file = new FileReader(location);
  91. BufferedReader in = new BufferedReader(file);
  92. StringBuilder writer = new StringBuilder();
  93. String line = "";
  94. while ((line = in.readLine()) != null) {
  95. /* Write out the same file but when we get to the player we want to remove, we skip his line. */
  96. if (!line.split(":")[0].equalsIgnoreCase(playerName)) {
  97. writer.append(line).append("\r\n");
  98. }
  99. else {
  100. System.out.println("User found, removing...");
  101. worked = true;
  102. continue; //Skip the player
  103. }
  104. }
  105. in.close();
  106. FileWriter out = new FileWriter(location); //Write out the new file
  107. out.write(writer.toString());
  108. out.close();
  109. return worked;
  110. }
  111. catch (Exception e) {
  112. plugin.getLogger().severe("Exception while reading " + location + " (Are you sure you formatted it correctly?)" + e.toString());
  113. return worked;
  114. }
  115. }
  116. }