McremoveCommand.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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.Bukkit;
  6. import org.bukkit.ChatColor;
  7. import org.bukkit.command.Command;
  8. import org.bukkit.command.CommandExecutor;
  9. import org.bukkit.command.CommandSender;
  10. import org.bukkit.entity.Player;
  11. import com.gmail.nossr50.mcMMO;
  12. import com.gmail.nossr50.config.LoadProperties;
  13. import com.gmail.nossr50.locale.mcLocale;
  14. import com.gmail.nossr50.util.Users;
  15. import com.gmail.nossr50.util.mcPermissions;
  16. public class McremoveCommand implements CommandExecutor {
  17. String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users";
  18. @Override
  19. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  20. Player player = null;
  21. if (sender instanceof Player) {
  22. player = (Player) sender;
  23. }
  24. if (player != null && !mcPermissions.getInstance().mcremove(player)) {
  25. player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
  26. return true;
  27. }
  28. if(args.length == 0)
  29. {
  30. sender.sendMessage("Correct usage is /mcremove [Player Name]"); //TODO: Needs more locale.
  31. return true;
  32. }
  33. String playerName = args[0]; //Player that we are going to remove
  34. //If the server is using MySQL
  35. if(LoadProperties.useMySQL)
  36. {
  37. int userId = mcMMO.database.getInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + playerName + "'");
  38. //Remove user from tables
  39. mcMMO.database.write("DELETE FROM "
  40. +LoadProperties.MySQLdbName+"."
  41. +LoadProperties.MySQLtablePrefix+"users WHERE "
  42. +LoadProperties.MySQLtablePrefix+"users.id="+userId);
  43. mcMMO.database.write("DELETE FROM "
  44. +LoadProperties.MySQLdbName+"."
  45. +LoadProperties.MySQLtablePrefix+"cooldowns WHERE "
  46. +LoadProperties.MySQLtablePrefix+"cooldowns.user_id="+userId);
  47. mcMMO.database.write("DELETE FROM "
  48. +LoadProperties.MySQLdbName+"."
  49. +LoadProperties.MySQLtablePrefix+"huds WHERE "
  50. +LoadProperties.MySQLtablePrefix+"huds.user_id="+userId);
  51. mcMMO.database.write("DELETE FROM "
  52. +LoadProperties.MySQLdbName+"."
  53. +LoadProperties.MySQLtablePrefix+"skills WHERE "
  54. +LoadProperties.MySQLtablePrefix+"skills.user_id="+userId);
  55. mcMMO.database.write("DELETE FROM "
  56. +LoadProperties.MySQLdbName+"."
  57. +LoadProperties.MySQLtablePrefix+"experience WHERE "
  58. +LoadProperties.MySQLtablePrefix+"experience.user_id="+userId);
  59. sender.sendMessage("User "+playerName+" removed from MySQL DB!"); //TODO: Needs more locale.
  60. } else {
  61. if(removeFlatFileUser(playerName)) {
  62. sender.sendMessage(ChatColor.GREEN+"[mcMMO] It worked! User was removed.");
  63. } else {
  64. sender.sendMessage(ChatColor.RED+"[mcMMO] Couldn't find the user, remember its case sensitive!");
  65. }
  66. }
  67. //Force PlayerProfile stuff to update
  68. if(Bukkit.getServer().getPlayer(playerName) != null && Users.players.containsKey(playerName.toLowerCase()))
  69. {
  70. Users.players.remove(playerName.toLowerCase());
  71. Users.addUser(Bukkit.getServer().getPlayer(playerName));
  72. }
  73. sender.sendMessage("[mcMMO] mcremove operation completed."); //TODO: Needs more locale.
  74. return true;
  75. }
  76. private boolean removeFlatFileUser(String playerName) {
  77. boolean worked = false;
  78. try {
  79. FileReader file = new FileReader(location);
  80. BufferedReader in = new BufferedReader(file);
  81. StringBuilder writer = new StringBuilder();
  82. String line = "";
  83. while ((line = in.readLine()) != null) {
  84. /* Write out the same file but when we get to the player we want to remove we skip his line */
  85. if(!line.split(":")[0].equalsIgnoreCase(playerName))
  86. {
  87. writer.append(line).append("\r\n");
  88. } else {
  89. System.out.println("User found, removing...");
  90. worked = true;
  91. continue; //Skip the player
  92. }
  93. }
  94. in.close();
  95. FileWriter out = new FileWriter(location); //Write out the new file
  96. out.write(writer.toString());
  97. out.close();
  98. return worked;
  99. } catch (Exception e) {
  100. Bukkit.getLogger().severe("Exception while reading " + location + " (Are you sure you formatted it correctly?)" + e.toString());
  101. return worked;
  102. }
  103. }
  104. }