From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 22 Mar 2018 01:40:24 -0400 Subject: [PATCH] getPlayerUniqueId API Gets the unique ID of the player currently known as the specified player name In Offline Mode, will return an Offline UUID This is a more performant way to obtain a UUID for a name than loading an OfflinePlayer diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 7d66377a431a3aedfd1338664cba2b83d100cae2..882a2afed87c1b0d23733831c33391b414c4efcb 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1705,6 +1705,25 @@ public final class CraftServer implements Server { return recipients.size(); } + // Paper start + @Nullable + public UUID getPlayerUniqueId(String name) { + Player player = Bukkit.getPlayerExact(name); + if (player != null) { + return player.getUniqueId(); + } + GameProfile profile; + // Only fetch an online UUID in online mode + if (com.destroystokyo.paper.PaperConfig.isProxyOnlineMode()) { + profile = console.getProfileCache().get(name).orElse(null); + } else { + // Make an OfflinePlayer using an offline mode UUID since the name has no profile + profile = new GameProfile(UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(Charsets.UTF_8)), name); + } + return profile != null ? profile.getId() : null; + } + // Paper end + @Override @Deprecated public OfflinePlayer getOfflinePlayer(String name) {