From ac267345b0f474958df4b57699401d05a674a586 Mon Sep 17 00:00:00 2001 From: drtshock Date: Wed, 12 Mar 2014 21:02:21 -0500 Subject: [PATCH 1/6] 3.4.5 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5b3dbff..117613b 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.drtshock PlayerVaults - 3.4.5-SNAPSHOT + 3.4.5 PlayerVaults http://dev.bukkit.org/server-mods/playervaults/ From 15f4f81780791cafe33b1090ff759b136353f1ba Mon Sep 17 00:00:00 2001 From: drtshock Date: Wed, 23 Apr 2014 13:52:36 -0500 Subject: [PATCH 2/6] Reformat --- src/main/java/com/drtshock/playervaults/commands/Commands.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/drtshock/playervaults/commands/Commands.java b/src/main/java/com/drtshock/playervaults/commands/Commands.java index 13188c0..d79c070 100644 --- a/src/main/java/com/drtshock/playervaults/commands/Commands.java +++ b/src/main/java/com/drtshock/playervaults/commands/Commands.java @@ -34,7 +34,7 @@ public class Commands implements CommandExecutor { if (cmd.getName().equalsIgnoreCase("pv")) { if (sender instanceof Player) { Player p = (Player) sender; - if(PlayerVaults.IN_VAULT.containsKey(p.getName())) return true; // don't let them open another vault. + if (PlayerVaults.IN_VAULT.containsKey(p.getName())) return true; // don't let them open another vault. switch (args.length) { case 1: if (VaultOperations.openOwnVault(p, args[0])) { From c002913c2034dea2203e229502bbcae16379cf3e Mon Sep 17 00:00:00 2001 From: drtshock Date: Wed, 23 Apr 2014 13:55:05 -0500 Subject: [PATCH 3/6] Deprecate old methods to prepare for UUID migration. --- .../playervaults/vaultmanagement/VaultManager.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java index 84530c0..a622654 100644 --- a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java +++ b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java @@ -52,6 +52,7 @@ public class VaultManager { * * @throws IOException Uh oh! */ + @Deprecated public void saveVault(Inventory inventory, String player, int number) throws IOException { int size = inventory.getSize(); YamlConfiguration yaml = getPlayerVaultFile(player); @@ -78,6 +79,7 @@ public class VaultManager { * @param holder The holder of the vault. * @param number The vault number. */ + @Deprecated public Inventory loadOwnVault(String holder, int number, int size) { if (size % 9 != 0) { size = 54; @@ -119,6 +121,7 @@ public class VaultManager { * @param holder The holder of the vault. * @param number The vault number. */ + @Deprecated public Inventory loadOtherVault(String holder, int number, int size) { if (size % 9 != 0) { size = 54; @@ -152,6 +155,7 @@ public class VaultManager { * * @return inventory if exists, otherwise null. */ + @Deprecated private Inventory getInventory(YamlConfiguration playerFile, int size, int number) { List data = new ArrayList(); for (int x = 0; x < size; x++) { @@ -173,6 +177,7 @@ public class VaultManager { * * @return The inventory of the specified holder and vault number. */ + @Deprecated public Inventory getVault(String holder, int number) { YamlConfiguration playerFile = getPlayerVaultFile(holder); List data = playerFile.getStringList("vault" + number); @@ -187,6 +192,7 @@ public class VaultManager { } } + @Deprecated public boolean vaultExists(String holder, int number) { YamlConfiguration playerFile = getPlayerVaultFile(holder); return playerFile.contains("vault" + number); @@ -201,6 +207,7 @@ public class VaultManager { * * @throws IOException Uh oh! */ + @Deprecated public void deleteVault(CommandSender sender, String holder, int number) throws IOException { String name = holder.toLowerCase(); File file = new File(directory + File.separator + name.toLowerCase() + ".yml"); @@ -226,6 +233,7 @@ public class VaultManager { * * @return The holder's vault config file. */ + @Deprecated public YamlConfiguration getPlayerVaultFile(String holder) { File folder = new File(directory); if (!folder.exists()) { @@ -251,6 +259,7 @@ public class VaultManager { * * @throws IOException Uh oh! */ + @Deprecated public void saveFile(String holder, YamlConfiguration yaml) throws IOException { File file = new File(directory + File.separator + holder.toLowerCase() + ".yml"); if (file.exists()) { From 2ff60128f7fa2a2210d182e0555f96382006c739 Mon Sep 17 00:00:00 2001 From: drtshock Date: Wed, 23 Apr 2014 14:05:12 -0500 Subject: [PATCH 4/6] New vault manager class to use UUIDs --- pom.xml | 6 +- .../vaultmanagement/UUIDVaultManager.java | 255 ++++++++++++++++++ .../vaultmanagement/VaultOperations.java | 3 +- 3 files changed, 260 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java diff --git a/pom.xml b/pom.xml index 117613b..c8eae8c 100644 --- a/pom.xml +++ b/pom.xml @@ -29,8 +29,8 @@ maven-compiler-plugin 2.3.2 - 1.6 - 1.6 + 1.7 + 1.7 @@ -56,7 +56,7 @@ org.bukkit bukkit - 1.5.2-R0.1 + LATEST net.milkbowl.vault diff --git a/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java b/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java new file mode 100644 index 0000000..01877d7 --- /dev/null +++ b/src/main/java/com/drtshock/playervaults/vaultmanagement/UUIDVaultManager.java @@ -0,0 +1,255 @@ +package com.drtshock.playervaults.vaultmanagement; + +import com.drtshock.playervaults.PlayerVaults; +import com.drtshock.playervaults.util.Lang; +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Class to handle vault operations with new UUIDs. + */ +public class UUIDVaultManager { + + private static UUIDVaultManager instance; + + public UUIDVaultManager() { + instance = this; + } + + private final String directory = "plugins" + File.separator + "PlayerVaults" + File.separator + "vaults"; + + /** + * Saves the inventory to the specified player and vault number. + * + * @param inventory The inventory to be saved. + * @param player The player of whose file to save to. + * @param number The vault number. + * + * @throws java.io.IOException Uh oh! + */ + public void saveVault(Inventory inventory, UUID player, int number) throws IOException { + int size = inventory.getSize(); + YamlConfiguration yaml = getPlayerVaultFile(player); + if (size == 54) { + yaml.set("vault" + number, null); + } else { + for (int x = 0; x < size; x++) { + yaml.set("vault" + number + "." + x, null); + } + } + List list = Serialization.toString(inventory); + String[] ser = list.toArray(new String[list.size()]); + for (int x = 0; x < ser.length; x++) { + if (!ser[x].equalsIgnoreCase("null")) { + yaml.set("vault" + number + "." + x, ser[x]); + } + } + saveFile(player, yaml); + } + + /** + * Load the player's vault and return it. + * + * @param player The holder of the vault. + * @param number The vault number. + */ + public Inventory loadOwnVault(Player player, int number, int size) { + if (size % 9 != 0) { + size = 54; + } + VaultViewInfo info = new VaultViewInfo(player.getUniqueId().toString(), number); + Inventory inv = null; + if (PlayerVaults.OPENINVENTORIES.containsKey(info.toString())) { + inv = PlayerVaults.OPENINVENTORIES.get(info.toString()); + } else { + YamlConfiguration playerFile = getPlayerVaultFile(player.getUniqueId()); + if (playerFile.getConfigurationSection("vault" + number) == null) { + VaultHolder vaultHolder = new VaultHolder(number); + if (EconomyOperations.payToCreate(player)) { + inv = Bukkit.createInventory(vaultHolder, size, Lang.VAULT_TITLE.toString().replace("%number", String.valueOf(number)).replace("%p", player.getName())); + vaultHolder.setInventory(inv); + } else { + player.sendMessage(Lang.TITLE.toString() + Lang.INSUFFICIENT_FUNDS.toString()); + return null; + } + } else { + if (getInventory(playerFile, size, number) == null) { + return null; + } else { + inv = getInventory(playerFile, size, number); + } + } + PlayerVaults.OPENINVENTORIES.put(info.toString(), inv); + } + return inv; + } + + /** + * Load the player's vault and return it. + * + * @param holder The holder of the vault. + * @param number The vault number. + */ + public Inventory loadOtherVault(UUID holder, int number, int size) { + if (size % 9 != 0) { + size = 54; + } + VaultViewInfo info = new VaultViewInfo(holder.toString(), number); + Inventory inv = null; + if (PlayerVaults.OPENINVENTORIES.containsKey(info.toString())) { + inv = PlayerVaults.OPENINVENTORIES.get(info.toString()); + } else { + YamlConfiguration playerFile = getPlayerVaultFile(holder); + if (playerFile.getConfigurationSection("vault" + number) == null) { + return null; + } else { + if (getInventory(playerFile, size, number) == null) { + return null; + } else { + inv = getInventory(playerFile, size, number); + } + } + PlayerVaults.OPENINVENTORIES.put(info.toString(), inv); + } + return inv; + } + + /** + * Get an inventory from file. Returns null if the inventory doesn't exist. SHOULD ONLY BE USED INTERNALLY + * + * @param playerFile the YamlConfiguration file. + * @param size the size of the vault. + * @param number the vault number. + * + * @return inventory if exists, otherwise null. + */ + private Inventory getInventory(YamlConfiguration playerFile, int size, int number) { + List data = new ArrayList<>(); + for (int x = 0; x < size; x++) { + String line = playerFile.getString("vault" + number + "." + x); + if (line != null) { + data.add(line); + } else { + data.add("null"); + } + } + return Serialization.toInventory(data, number, size); + } + + /** + * Gets an inventory without storing references to it. Used for dropping a players inventories on death. + * + * @param holder The holder of the vault. + * @param number The vault number. + * + * @return The inventory of the specified holder and vault number. + */ + public Inventory getVault(UUID holder, int number) { + YamlConfiguration playerFile = getPlayerVaultFile(holder); + List data = playerFile.getStringList("vault" + number); + OfflinePlayer player = Bukkit.getPlayer(holder); + if (player == null) return null; + if (data == null) { + VaultHolder vaultHolder = new VaultHolder(number); + Inventory inv = Bukkit.createInventory(vaultHolder, VaultOperations.getMaxVaultSize(player), Lang.VAULT_TITLE.toString().replace("%number", String.valueOf(number)).replace("%p", player.getName())); + vaultHolder.setInventory(inv); + return inv; + } else { + Inventory inv = Serialization.toInventory(data, number, VaultOperations.getMaxVaultSize(player)); + return inv; + } + } + + public boolean vaultExists(UUID holder, int number) { + YamlConfiguration playerFile = getPlayerVaultFile(holder); + return playerFile.contains("vault" + number); + } + + /** + * Deletes a players vault. + * + * @param sender The sender of whom to send messages to. + * @param holder The vault holder. + * @param number The vault number. + * + * @throws IOException Uh oh! + */ + public void deleteVault(CommandSender sender, UUID holder, int number) throws IOException { + String name = holder.toString(); + File file = new File(directory + File.separator + name.toLowerCase() + ".yml"); + if (!file.exists()) { + return; + } + FileConfiguration playerFile = YamlConfiguration.loadConfiguration(file); + if (file.exists()) { + playerFile.set("vault" + number, null); + playerFile.save(file); + } + OfflinePlayer player = Bukkit.getPlayer(holder); + if (player != null && sender.getName().equalsIgnoreCase(player.getName())) { + sender.sendMessage(Lang.TITLE.toString() + Lang.DELETE_VAULT.toString().replace("%v", String.valueOf(number))); + } else { + sender.sendMessage(Lang.TITLE.toString() + Lang.DELETE_OTHER_VAULT.toString().replace("%v", String.valueOf(number)).replaceAll("%p", player.getName())); + } + } + + /** + * Get the holder's vault file. Create if doesn't exist. + * + * @param holder The vault holder. + * + * @return The holder's vault config file. + */ + public YamlConfiguration getPlayerVaultFile(UUID holder) { + File folder = new File(directory); + if (!folder.exists()) { + folder.mkdir(); + } + File file = new File(directory + File.separator + holder.toString() + ".yml"); + if (!file.exists()) { + try { + file.createNewFile(); + } catch (IOException e) { + // Who cares? + } + } + YamlConfiguration playerFile = YamlConfiguration.loadConfiguration(file); + return playerFile; + } + + /** + * Save the players vault file. + * + * @param holder The vault holder of whose file to save. + * @param yaml The config to save. + * + * @throws IOException Uh oh! + */ + public void saveFile(UUID holder, YamlConfiguration yaml) throws IOException { + File file = new File(directory + File.separator + holder.toString() + ".yml"); + if (file.exists()) { + file.renameTo(new File(directory + File.separator + "backups" + File.separator + holder.toString() + ".yml")); + } + yaml.save(file); + } + + /** + * Get the instance of this class. + * + * @return - instance of this class. + */ + public static UUIDVaultManager getInstance() { + return instance; + } +} diff --git a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java index a4d8f80..959de0a 100644 --- a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java +++ b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultOperations.java @@ -20,6 +20,7 @@ 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; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; @@ -55,7 +56,7 @@ public class VaultOperations { * * @return max size as integer. If no max size is set then it will default to 54. */ - public static int getMaxVaultSize(Player player) { + public static int getMaxVaultSize(OfflinePlayer player) { if (player == null) { return 54; } From 56390ebdb1a9d32da427dda977107eb3cc5ee822 Mon Sep 17 00:00:00 2001 From: drtshock Date: Wed, 23 Apr 2014 14:37:04 -0500 Subject: [PATCH 5/6] 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); } From 0ced47c52b6326a38dcbdd04e411c302fcc50e19 Mon Sep 17 00:00:00 2001 From: drtshock Date: Wed, 23 Apr 2014 14:56:05 -0500 Subject: [PATCH 6/6] UUID conversion --- .../java/com/drtshock/playervaults/PlayerVaults.java | 3 +++ .../drtshock/playervaults/tasks/UUIDConversion.java | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/drtshock/playervaults/PlayerVaults.java b/src/main/java/com/drtshock/playervaults/PlayerVaults.java index 853b435..06fa821 100644 --- a/src/main/java/com/drtshock/playervaults/PlayerVaults.java +++ b/src/main/java/com/drtshock/playervaults/PlayerVaults.java @@ -24,6 +24,7 @@ import com.drtshock.playervaults.tasks.UUIDConversion; import com.drtshock.playervaults.util.Lang; import com.drtshock.playervaults.util.Metrics; import com.drtshock.playervaults.util.Updater; +import com.drtshock.playervaults.vaultmanagement.UUIDVaultManager; import com.drtshock.playervaults.vaultmanagement.VaultManager; import com.drtshock.playervaults.vaultmanagement.VaultViewInfo; import net.milkbowl.vault.economy.Economy; @@ -68,8 +69,10 @@ public class PlayerVaults extends JavaPlugin { @Override public void onEnable() { + PLUGIN = this; getServer().getScheduler().runTask(this, new UUIDConversion()); // Convert to UUID first. Class checks if necessary. loadLang(); + new UUIDVaultManager(); LOG = getServer().getLogger(); getServer().getPluginManager().registerEvents(listener = new Listeners(this), this); loadConfig(); diff --git a/src/main/java/com/drtshock/playervaults/tasks/UUIDConversion.java b/src/main/java/com/drtshock/playervaults/tasks/UUIDConversion.java index 18d5b6d..b2e66c9 100644 --- a/src/main/java/com/drtshock/playervaults/tasks/UUIDConversion.java +++ b/src/main/java/com/drtshock/playervaults/tasks/UUIDConversion.java @@ -2,7 +2,6 @@ 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; @@ -19,23 +18,26 @@ public final class UUIDConversion extends BukkitRunnable { @Override public void run() { - if (new File(PlayerVaults.PLUGIN.getDataFolder(), "uuidvaults").exists()) { + File newDir = new File(PlayerVaults.PLUGIN.getDataFolder(), "uuidvaults"); + if (newDir.exists()) { PlayerVaults.LOG.log(Level.INFO, "Files already converted to UUID."); return; } + newDir.mkdirs(); 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 (file.isDirectory()) break; // backups folder. + OfflinePlayer player = Bukkit.getOfflinePlayer(file.getName().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 newFile = new File(PlayerVaults.PLUGIN.getDataFolder(), "uuidvaults" + File.separator + uuid.toString() + ".yml"); file.mkdirs(); try { FileUtils.copyFile(file, newFile);