123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- package com.gmail.nossr50.commands.mc;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.FileWriter;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import com.gmail.nossr50.mcMMO;
- import com.gmail.nossr50.config.LoadProperties;
- import com.gmail.nossr50.locale.mcLocale;
- import com.gmail.nossr50.util.Users;
- import com.gmail.nossr50.util.mcPermissions;
- public class McremoveCommand implements CommandExecutor {
- String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users";
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- Player player = null;
-
- if (sender instanceof Player) {
- player = (Player) sender;
- }
- if (player != null && !mcPermissions.getInstance().mcremove(player)) {
- player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission"));
- return true;
- }
-
- if(args.length == 0)
- {
- sender.sendMessage("Correct usage is /mcremove [Player Name]"); //TODO: Needs more locale.
- return true;
- }
-
- String playerName = args[0]; //Player that we are going to remove
-
- //If the server is using MySQL
- if(LoadProperties.useMySQL)
- {
- int userId = mcMMO.database.getInt("SELECT id FROM "+LoadProperties.MySQLtablePrefix+"users WHERE user = '" + playerName + "'");
-
- //Remove user from tables
- mcMMO.database.write("DELETE FROM "
- +LoadProperties.MySQLdbName+"."
- +LoadProperties.MySQLtablePrefix+"users WHERE "
- +LoadProperties.MySQLtablePrefix+"users.id="+userId);
-
- mcMMO.database.write("DELETE FROM "
- +LoadProperties.MySQLdbName+"."
- +LoadProperties.MySQLtablePrefix+"cooldowns WHERE "
- +LoadProperties.MySQLtablePrefix+"cooldowns.user_id="+userId);
-
- mcMMO.database.write("DELETE FROM "
- +LoadProperties.MySQLdbName+"."
- +LoadProperties.MySQLtablePrefix+"huds WHERE "
- +LoadProperties.MySQLtablePrefix+"huds.user_id="+userId);
-
- mcMMO.database.write("DELETE FROM "
- +LoadProperties.MySQLdbName+"."
- +LoadProperties.MySQLtablePrefix+"skills WHERE "
- +LoadProperties.MySQLtablePrefix+"skills.user_id="+userId);
-
- mcMMO.database.write("DELETE FROM "
- +LoadProperties.MySQLdbName+"."
- +LoadProperties.MySQLtablePrefix+"experience WHERE "
- +LoadProperties.MySQLtablePrefix+"experience.user_id="+userId);
- sender.sendMessage("User "+playerName+" removed from MySQL DB!"); //TODO: Needs more locale.
- } else {
- if(removeFlatFileUser(playerName)) {
- sender.sendMessage(ChatColor.GREEN+"[mcMMO] It worked! User was removed.");
- } else {
- sender.sendMessage(ChatColor.RED+"[mcMMO] Couldn't find the user, remember its case sensitive!");
- }
- }
-
- //Force PlayerProfile stuff to update
- if(Bukkit.getServer().getPlayer(playerName) != null && Users.players.containsKey(playerName.toLowerCase()))
- {
- Users.players.remove(playerName.toLowerCase());
- Users.addUser(Bukkit.getServer().getPlayer(playerName));
- }
-
- sender.sendMessage("[mcMMO] mcremove operation completed."); //TODO: Needs more locale.
-
- return true;
- }
-
- private boolean removeFlatFileUser(String playerName) {
- boolean worked = false;
- try {
- FileReader file = new FileReader(location);
- BufferedReader in = new BufferedReader(file);
- StringBuilder writer = new StringBuilder();
- String line = "";
- while ((line = in.readLine()) != null) {
- /* Write out the same file but when we get to the player we want to remove we skip his line */
- if(!line.split(":")[0].equalsIgnoreCase(playerName))
- {
- writer.append(line).append("\r\n");
- } else {
- System.out.println("User found, removing...");
- worked = true;
- continue; //Skip the player
- }
- }
-
- in.close();
- FileWriter out = new FileWriter(location); //Write out the new file
- out.write(writer.toString());
- out.close();
- return worked;
- } catch (Exception e) {
- Bukkit.getLogger().severe("Exception while reading " + location + " (Are you sure you formatted it correctly?)" + e.toString());
- return worked;
- }
- }
- }
|