diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_resetplayer.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_resetplayer.java new file mode 100644 index 0000000..eeb6ad7 --- /dev/null +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_resetplayer.java @@ -0,0 +1,52 @@ +package me.StevenLawson.TotalFreedomMod.commands; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.nio.file.Files; +import java.nio.file.Paths; + +@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH) +public class Command_resetplayer extends FreedomCommand { + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + OfflinePlayer target = null; + String searchString = args[0]; + + for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) { + if(offlinePlayer.getName().equalsIgnoreCase(searchString)) { + target = offlinePlayer; + break; + } else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) { + target = offlinePlayer; + break; + } + } + + if(target == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } + + if(target.isOnline()) { + target.getPlayer().kickPlayer(ChatColor.RED + "YOU ARE BEING RESET."); + } + + playerMsg(sender, String.format("Resetting %s's user data (excluding TFM)...", target.getName())); + try { + String uuid = target.getUniqueId().toString(); + Files.deleteIfExists(Paths.get(".", "world", "playerdata", uuid + ".dat")); + Files.deleteIfExists(Paths.get(".", "plugins", "Essentials", "userdata", uuid + ".yml")); + playerMsg(sender, "Done."); + } catch (Exception e) { + e.printStackTrace(); + playerMsg(sender, "Oops"); + } + + return true; + } +} diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java index fe15373..3a1626f 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java @@ -108,5 +108,6 @@ public class Commands { plugin.getCommand("wipeuserdata").setExecutor(new Command_wipeuserdata()); plugin.getCommand("whoami").setExecutor(new Command_whoami()); plugin.getCommand("offlinetp").setExecutor(new Command_offlinetp()); + plugin.getCommand("resetplayer").setExecutor(new Command_resetplayer()); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 7d7f70d..b4c68bd 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -337,4 +337,8 @@ commands: offlinetp: aliases: ["otp"] description: 'Teleport to an offline player''s last known location.' - usage: '/ ' \ No newline at end of file + usage: '/ ' + resetplayer: + aliases: ["resetplayerdata"] + description: 'Reset a player''s data.' + usage: '/command ' \ No newline at end of file