mirror of
https://github.com/TotalFreedomMC/OpenInv.git
synced 2025-08-06 04:23:32 +00:00
81 lines
2.3 KiB
Java
81 lines
2.3 KiB
Java
package com.lishid.openinv.utils;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.Collection;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
import org.apache.commons.lang.Validate;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.OfflinePlayer;
|
|
import org.bukkit.entity.Player;
|
|
|
|
public final class UUIDUtil {
|
|
|
|
private UUIDUtil() {}
|
|
|
|
private static Player getPlayer(String name) {
|
|
Validate.notNull(name, "Name cannot be null");
|
|
|
|
Player found = null;
|
|
String lowerName = name.toLowerCase();
|
|
int delta = Integer.MAX_VALUE;
|
|
|
|
Collection<? extends Player> players = Bukkit.getOnlinePlayers();
|
|
for (Player player : players) {
|
|
if (player.getName().toLowerCase().startsWith(lowerName)) {
|
|
int curDelta = player.getName().length() - lowerName.length();
|
|
|
|
if (curDelta < delta) {
|
|
found = player;
|
|
delta = curDelta;
|
|
}
|
|
|
|
if (curDelta == 0) break;
|
|
}
|
|
}
|
|
|
|
return found;
|
|
}
|
|
|
|
@SuppressWarnings("deprecation")
|
|
private static UUID getUUIDLocally(String name) {
|
|
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
|
|
return offlinePlayer.hasPlayedBefore() ? offlinePlayer.getUniqueId() : null;
|
|
}
|
|
|
|
/**
|
|
* Returns the UUID of a player by their name.
|
|
*
|
|
* @param name the name of the player to get the UUID of
|
|
* @return the player's UUID or null
|
|
*/
|
|
public static UUID getUUIDOf(String name) {
|
|
UUID uuid;
|
|
Player player = getPlayer(name);
|
|
|
|
if (player != null) {
|
|
uuid = player.getUniqueId();
|
|
} else {
|
|
if (Bukkit.getServer().getOnlineMode()) {
|
|
if (!Bukkit.getServer().isPrimaryThread()) {
|
|
UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList(name));
|
|
Map<String, UUID> response;
|
|
|
|
try {
|
|
response = fetcher.call();
|
|
uuid = response.get(name.toLowerCase());
|
|
} catch (Exception e) {
|
|
uuid = getUUIDLocally(name);
|
|
}
|
|
} else {
|
|
uuid = getUUIDLocally(name);
|
|
}
|
|
} else {
|
|
uuid = getUUIDLocally(name);
|
|
}
|
|
}
|
|
|
|
return uuid;
|
|
}
|
|
}
|