Fix & improve UUID retrieval #29
@@ -34,35 +34,36 @@ public class UUIDUtil {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @SuppressWarnings("deprecation")
 | 
					    @SuppressWarnings("deprecation")
 | 
				
			||||||
 | 
					    private static UUID getUUIDLocally(String name) {
 | 
				
			||||||
 | 
					        OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
 | 
				
			||||||
 | 
					        return offlinePlayer.hasPlayedBefore() ? offlinePlayer.getUniqueId() : null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static UUID getUUIDOf(String name) {
 | 
					    public static UUID getUUIDOf(String name) {
 | 
				
			||||||
        UUID uuid = null;
 | 
					        UUID uuid;
 | 
				
			||||||
        Player player = getPlayer(name);
 | 
					        Player player = getPlayer(name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (player != null) {
 | 
					        if (player != null) {
 | 
				
			||||||
            // Player was found online
 | 
					 | 
				
			||||||
            uuid = player.getUniqueId();
 | 
					            uuid = player.getUniqueId();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
            // Player was not found online. Fetch their UUID instead
 | 
					            if (Bukkit.getServer().getOnlineMode()) {
 | 
				
			||||||
            UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList(name));
 | 
					                if (!Bukkit.getServer().isPrimaryThread()) {
 | 
				
			||||||
            Map<String, UUID> response;
 | 
					                    UUIDFetcher fetcher = new UUIDFetcher(Arrays.asList(name));
 | 
				
			||||||
 | 
					                    Map<String, UUID> response;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            try {
 | 
					                    try {
 | 
				
			||||||
                response = fetcher.call();
 | 
					                        response = fetcher.call();
 | 
				
			||||||
                uuid = response.get(name.toLowerCase());
 | 
					                        uuid = response.get(name.toLowerCase());
 | 
				
			||||||
            }
 | 
					                    }
 | 
				
			||||||
            catch (Exception e) {
 | 
					                    catch (Exception e) {
 | 
				
			||||||
                /*
 | 
					                        uuid = getUUIDLocally(name);
 | 
				
			||||||
                Bukkit.getServer().getLogger().warning("Exception while running UUIDFetcher");
 | 
					                    }
 | 
				
			||||||
                e.printStackTrace();
 | 
					                } else {
 | 
				
			||||||
                */
 | 
					                    uuid = getUUIDLocally(name);
 | 
				
			||||||
 | 
					 | 
				
			||||||
                // Failed to retrieve with UUIDFetcher, server might be offline?
 | 
					 | 
				
			||||||
                // Fallback on searching for the player via their name
 | 
					 | 
				
			||||||
                OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
 | 
					 | 
				
			||||||
                if (offlinePlayer != null) {
 | 
					 | 
				
			||||||
                    uuid = offlinePlayer.getUniqueId();
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                uuid = getUUIDLocally(name);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user