diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java b/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java index 17d5bf5..2575596 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/commands/RPGRegionsCommand.java @@ -220,4 +220,19 @@ public class RPGRegionsCommand extends BaseCommand { break; } } + + @Subcommand("delete") + @CommandPermission("rpgregions.delete") + public void onDelete(CommandSender sender, String[] args) { + if (args.length > 0) { + Player player = Bukkit.getPlayer(args[0]); + if (player != null) { + plugin.getManagers().getStorageManager().deleteAccount(player.getUniqueId()); + } else { + sender.sendMessage(ChatColor.RED + "That player cannot be found."); + } + } else { + sender.sendMessage(ChatColor.RED + "Usage: /rpgregions delete "); + } + } } diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/StorageManager.java b/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/StorageManager.java index 460ce49..d097f58 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/StorageManager.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/StorageManager.java @@ -36,6 +36,7 @@ public interface StorageManager { */ void clearDiscovery(UUID uuid, String regionId); + void deleteAccount(UUID uuid); /** * Removes an account from the storage cache and saves its data. * @param uuid player's UUID diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/sql/SqlStorage.java b/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/sql/SqlStorage.java index 9222166..483948b 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/sql/SqlStorage.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/sql/SqlStorage.java @@ -92,6 +92,12 @@ public class SqlStorage implements StorageManager { DB.executeUpdateAsync(DELETE_DISCOVERY, getDatabaseUuid(uuid), regionId); } + @Override + public void deleteAccount(UUID uuid) { + this.clearDiscoveries(uuid); + cachedAccounts.remove(uuid); + } + @Override public void removeCachedAccount(UUID uuid) { RPGRegionsAccount account = cachedAccounts.get(uuid); diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/yml/YamlStorage.java b/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/yml/YamlStorage.java index 58f4ed7..f64a70f 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/yml/YamlStorage.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/managers/data/yml/YamlStorage.java @@ -110,6 +110,14 @@ public class YamlStorage implements StorageManager { } } + @Override + public void deleteAccount(UUID uuid) { + this.clearDiscoveries(uuid); + File file = new File(plugin.getDataFolder() + "/accounts/" + uuid.toString() + ".yml"); + file.delete(); + cachedAccounts.remove(uuid); + } + @Override public void removeCachedAccount(UUID uuid) { RPGRegionsAccount account = cachedAccounts.get(uuid);