Skip to content

Commit

Permalink
Allow freeing usernames
Browse files Browse the repository at this point in the history
  • Loading branch information
Brokkonaut committed Jul 29, 2021
1 parent b13682d commit b8d01a9
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
14 changes: 14 additions & 0 deletions src/main/java/com/Acrobot/ChestShop/Commands/Version.java
Expand Up @@ -15,6 +15,7 @@
* @author Acrobot
*/
public class Version implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (!Permission.has(sender, Permission.ADMIN)) {
sender.sendMessage(Messages.prefix(Messages.ACCESS_DENIED));
Expand All @@ -29,6 +30,19 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
sender.sendMessage(ChatColor.DARK_GREEN + "The config was reloaded.");
return true;
}
if (args.length > 0 && args[0].equals("free")) {
if (args.length != 2) {
sender.sendMessage(ChatColor.DARK_RED + "/chestshop free <username>");
return true;
}
boolean success = NameManager.freeUsername(args[1]);
if (success) {
sender.sendMessage(ChatColor.DARK_GREEN + "The name '" + args[1] + "' is now no longer in use.");
} else {
sender.sendMessage(ChatColor.DARK_GREEN + "The name '" + args[1] + "' was not in use.");
}
return true;
}

sender.sendMessage(ChatColor.GRAY + ChestShop.getPluginName() + "'s version is: " + ChatColor.GREEN + ChestShop.getVersion());
return true;
Expand Down
26 changes: 25 additions & 1 deletion src/main/java/com/Acrobot/ChestShop/UUIDs/NameManager.java
Expand Up @@ -4,7 +4,7 @@
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import com.Acrobot.ChestShop.ChestShop;
Expand Down Expand Up @@ -74,6 +74,30 @@ public static void storeUsername(final Player player) {
currentShortName.put(uuid, foundShortName);
}

public static boolean freeUsername(String name) {
name = name.trim().toLowerCase();
UUID assignedFor = usedShortNames.get(name);
if (assignedFor == null) {
return false;
}
try {
accounts2.delete(new Account2(name, assignedFor));
} catch (SQLException e) {
e.printStackTrace();
}
usedShortNames.remove(name);
String assignedName = currentShortName.get(assignedFor);
if (name.equals(assignedName)) {
currentShortName.remove(assignedFor);
// assign a new name for the player if online
Player onlinePlayer = Bukkit.getServer().getPlayer(assignedFor);
if (onlinePlayer != null) {
storeUsername(onlinePlayer);
}
}
return true;
}

private static String storeUsername(final UUID uuid, String name) {
int id = 0;
String foundShortName = null;
Expand Down

0 comments on commit b8d01a9

Please sign in to comment.