From 56390ebdb1a9d32da427dda977107eb3cc5ee822 Mon Sep 17 00:00:00 2001 From: drtshock Date: Wed, 23 Apr 2014 14:37:04 -0500 Subject: [PATCH] UUIDConversion class. --- pom.xml | 7 ++- .../drtshock/playervaults/PlayerVaults.java | 3 ++ .../playervaults/commands/Commands.java | 9 +++- .../playervaults/tasks/UUIDConversion.java | 49 +++++++++++++++++++ .../vaultmanagement/UUIDVaultManager.java | 2 +- .../vaultmanagement/VaultOperations.java | 16 +++--- 6 files changed, 73 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/drtshock/playervaults/tasks/UUIDConversion.java diff --git a/pom.xml b/pom.xml index c8eae8c..6e86939 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.drtshock PlayerVaults - 3.4.5 + 3.5.0-SNAPSHOT PlayerVaults http://dev.bukkit.org/server-mods/playervaults/ @@ -58,6 +58,11 @@ bukkit LATEST + + org.bukkit + craftbukkit + LATEST + net.milkbowl.vault Vault diff --git a/src/main/java/com/drtshock/playervaults/PlayerVaults.java b/src/main/java/com/drtshock/playervaults/PlayerVaults.java index df11681..853b435 100644 --- a/src/main/java/com/drtshock/playervaults/PlayerVaults.java +++ b/src/main/java/com/drtshock/playervaults/PlayerVaults.java @@ -20,6 +20,7 @@ import com.drtshock.playervaults.commands.Commands; import com.drtshock.playervaults.commands.SignSetInfo; import com.drtshock.playervaults.listeners.Listeners; import com.drtshock.playervaults.tasks.Cleanup; +import com.drtshock.playervaults.tasks.UUIDConversion; import com.drtshock.playervaults.util.Lang; import com.drtshock.playervaults.util.Metrics; import com.drtshock.playervaults.util.Updater; @@ -41,6 +42,7 @@ import java.util.logging.Logger; public class PlayerVaults extends JavaPlugin { + // TODO: *reads down* really..? :c public static PlayerVaults PLUGIN; public static Logger LOG; public static boolean UPDATE = false; @@ -66,6 +68,7 @@ public class PlayerVaults extends JavaPlugin { @Override public void onEnable() { + getServer().getScheduler().runTask(this, new UUIDConversion()); // Convert to UUID first. Class checks if necessary. loadLang(); LOG = getServer().getLogger(); getServer().getPluginManager().registerEvents(listener = new Listeners(this), this); diff --git a/src/main/java/com/drtshock/playervaults/commands/Commands.java b/src/main/java/com/drtshock/playervaults/commands/Commands.java index d79c070..a4609b3 100644 --- a/src/main/java/com/drtshock/playervaults/commands/Commands.java +++ b/src/main/java/com/drtshock/playervaults/commands/Commands.java @@ -20,6 +20,7 @@ import com.drtshock.playervaults.PlayerVaults; import com.drtshock.playervaults.util.Lang; import com.drtshock.playervaults.vaultmanagement.VaultOperations; import com.drtshock.playervaults.vaultmanagement.VaultViewInfo; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -56,7 +57,9 @@ public class Commands implements CommandExecutor { } break; case 2: - if (VaultOperations.openOtherVault(p, args[0], args[1])) { + Player player = Bukkit.getPlayer(args[0]); + if (player == null) break; + if (VaultOperations.openOtherVault(p, player, args[1])) { PlayerVaults.IN_VAULT.put(sender.getName(), new VaultViewInfo(args[0], Integer.parseInt(args[1]))); } else { // ???? @@ -80,7 +83,9 @@ public class Commands implements CommandExecutor { } break; case 2: - VaultOperations.deleteOtherVault(sender, args[0], args[1]); + Player player = Bukkit.getPlayer(args[0]); + if (player == null) break; + VaultOperations.deleteOtherVault(sender, player, args[1]); break; default: sender.sendMessage(Lang.TITLE + "/pvdel "); diff --git a/src/main/java/com/drtshock/playervaults/tasks/UUIDConversion.java b/src/main/java/com/drtshock/playervaults/tasks/UUIDConversion.java new file mode 100644 index 0000000..18d5b6d --- /dev/null +++ b/src/main/java/com/drtshock/playervaults/tasks/UUIDConversion.java @@ -0,0 +1,49 @@ +package com.drtshock.playervaults.tasks; + +import com.drtshock.playervaults.PlayerVaults; +import net.minecraft.util.org.apache.commons.io.FileUtils; +import net.minecraft.util.org.apache.commons.io.FilenameUtils; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.scheduler.BukkitRunnable; + +import java.io.File; +import java.io.IOException; +import java.util.UUID; +import java.util.logging.Level; + +/** + * Class to convert vaults by name to vaults by UUID. + */ +public final class UUIDConversion extends BukkitRunnable { + + @Override + public void run() { + if (new File(PlayerVaults.PLUGIN.getDataFolder(), "uuidvaults").exists()) { + PlayerVaults.LOG.log(Level.INFO, "Files already converted to UUID."); + return; + } + + PlayerVaults.LOG.log(Level.INFO, "********** Starting PlayerVault conversion to UUIDs **********"); + PlayerVaults.LOG.log(Level.INFO, "This might take awhile."); + PlayerVaults.LOG.log(Level.INFO, "plugins/PlayerVaults/vaults will still be there as a backup but unused."); + + for (File file : new File(PlayerVaults.PLUGIN.getDataFolder() + File.separator + "vaults").listFiles()) { + OfflinePlayer player = Bukkit.getOfflinePlayer(FilenameUtils.removeExtension(file.toString()).replace(".yml", "")); + if (player == null) { + PlayerVaults.LOG.log(Level.WARNING, "Unable to convert file because player never joined the server: " + file.getName()); + break; + } + UUID uuid = player.getUniqueId(); + File newFile = new File(PlayerVaults.PLUGIN.getDataFolder(), "uuidvaults" + uuid.toString() + ".yml"); + file.mkdirs(); + try { + FileUtils.copyFile(file, newFile); + PlayerVaults.LOG.log(Level.INFO, "Successfully converted vault file for " + player.getName()); + } catch (IOException e) { + PlayerVaults.LOG.log(Level.SEVERE, "Couldn't convert vault file for " + player.getName()); + } + } + PlayerVaults.LOG.log(Level.INFO, "********** Conversion done ;D **********"); + } +} diff --git a/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java b/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java index 01877d7..2d3a6db 100644 --- a/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java +++ b/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java @@ -27,7 +27,7 @@ public class UUIDVaultManager { instance = this; } - private final String directory = "plugins" + File.separator + "PlayerVaults" + File.separator + "vaults"; + private final String directory = "plugins" + File.separator + "PlayerVaults" + File.separator + "uuidvaults"; /** * Saves the inventory to the specified player and vault number. diff --git a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java index 959de0a..82ea767 100644 --- a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java +++ b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java @@ -16,9 +16,7 @@ */ package com.drtshock.playervaults.vaultmanagement; -import com.drtshock.playervaults.PlayerVaults; import com.drtshock.playervaults.util.Lang; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; @@ -88,7 +86,7 @@ public class VaultOperations { } if (checkPerms(player, number)) { if (EconomyOperations.payToOpen(player, number)) { - Inventory inv = PlayerVaults.VM.loadOwnVault(player.getName(), number, getMaxVaultSize(player)); + Inventory inv = UUIDVaultManager.getInstance().loadOwnVault(player, number, getMaxVaultSize(player)); player.openInventory(inv); player.sendMessage(Lang.TITLE.toString() + Lang.OPEN_VAULT.toString().replace("%v", arg)); return true; @@ -111,7 +109,7 @@ public class VaultOperations { * * @return Whether or not the player was allowed to open it. */ - public static boolean openOtherVault(Player player, String holder, String arg) { + public static boolean openOtherVault(Player player, Player holder, String arg) { if (player.hasPermission("playervaults.admin")) { int number = 0; try { @@ -122,12 +120,12 @@ public class VaultOperations { } catch (NumberFormatException nfe) { player.sendMessage(Lang.TITLE.toString() + ChatColor.RED + Lang.MUST_BE_NUMBER); } - Inventory inv = PlayerVaults.VM.loadOtherVault(holder, number, getMaxVaultSize(Bukkit.getPlayerExact(holder))); + Inventory inv = UUIDVaultManager.getInstance().loadOtherVault(holder.getUniqueId(), number, getMaxVaultSize(holder)); if (inv == null) { player.sendMessage(Lang.TITLE.toString() + Lang.VAULT_DOES_NOT_EXIST.toString()); } else { player.openInventory(inv); - player.sendMessage(Lang.TITLE.toString() + Lang.OPEN_OTHER_VAULT.toString().replace("%v", arg).replace("%p", holder)); + player.sendMessage(Lang.TITLE.toString() + Lang.OPEN_OTHER_VAULT.toString().replace("%v", arg).replace("%p", holder.getName())); return true; } } else { @@ -156,7 +154,7 @@ public class VaultOperations { } try { if (EconomyOperations.refundOnDelete(player, number)) { - PlayerVaults.VM.deleteVault(player, player.getName(), number); + UUIDVaultManager.getInstance().deleteVault(player, player.getUniqueId(), number); } } catch (IOException e) { player.sendMessage(Lang.TITLE.toString() + Lang.DELETE_VAULT_ERROR); @@ -173,7 +171,7 @@ public class VaultOperations { * @param holder The user to whom the deleted vault belongs. * @param arg The vault number to delete. */ - public static void deleteOtherVault(CommandSender sender, String holder, String arg) { + public static void deleteOtherVault(CommandSender sender, Player holder, String arg) { if (sender.hasPermission("playervaults.delete")) { if (arg.matches("^[0-9]{1,2}$")) { int number = 0; @@ -187,7 +185,7 @@ public class VaultOperations { sender.sendMessage(Lang.TITLE.toString() + ChatColor.RED + Lang.MUST_BE_NUMBER); } try { - PlayerVaults.VM.deleteVault(sender, holder, number); + UUIDVaultManager.getInstance().deleteVault(sender, holder.getUniqueId(), number); } catch (IOException e) { sender.sendMessage(Lang.TITLE.toString() + Lang.DELETE_VAULT_ERROR); }