diff --git a/src/me/ryanhamshire/GriefPrevention/FlatFileDataStore.java b/src/me/ryanhamshire/GriefPrevention/FlatFileDataStore.java index c51687f..6271ed2 100644 --- a/src/me/ryanhamshire/GriefPrevention/FlatFileDataStore.java +++ b/src/me/ryanhamshire/GriefPrevention/FlatFileDataStore.java @@ -160,7 +160,7 @@ public class FlatFileDataStore extends DataStore //if corrected casing and a record already exists using the correct casing, skip this one String correctedCasing = UUIDFetcher.correctedNames.get(currentFilename); - if(correctedCasing != null) + if(correctedCasing != null && !currentFilename.equals(correctedCasing)) { File correctedCasingFile = new File(playerDataFolder.getPath() + File.separator + correctedCasing); if(correctedCasingFile.exists()) diff --git a/src/me/ryanhamshire/GriefPrevention/UUIDFetcher.java b/src/me/ryanhamshire/GriefPrevention/UUIDFetcher.java index 19b343f..6e064e6 100644 --- a/src/me/ryanhamshire/GriefPrevention/UUIDFetcher.java +++ b/src/me/ryanhamshire/GriefPrevention/UUIDFetcher.java @@ -51,46 +51,41 @@ class UUIDFetcher { GriefPrevention.AddLogEntry("UUID conversion process started. Please be patient - this may take a while."); - //try to get correct casing from local data + GriefPrevention.AddLogEntry("Mining your local world data to save calls to Mojang..."); OfflinePlayer [] players = GriefPrevention.instance.getServer().getOfflinePlayers(); + for(OfflinePlayer player : players) + { + if(player.getName() != null && player.getUniqueId() != null) + { + lookupCache.put(player.getName(), player.getUniqueId()); + lookupCache.put(player.getName().toLowerCase(), player.getUniqueId()); + correctedNames.put(player.getName().toLowerCase(), player.getName()); + } + } + + //try to get correct casing from local data GriefPrevention.AddLogEntry("Checking local server data to get correct casing for player names..."); for(int i = 0; i < names.size(); i++) { String name = names.get(i); - for(OfflinePlayer player : players) + String correctCasingName = correctedNames.get(name); + if(correctCasingName != null && !name.equals(correctCasingName)) { - if(player.getName() != null && player.getName().equalsIgnoreCase(name)) - { - if(!player.getName().equals(name)) - { - GriefPrevention.AddLogEntry(name + " --> " + player.getName()); - correctedNames.put(name, player.getName()); - names.set(i, player.getName()); - } - break; - } + GriefPrevention.AddLogEntry(name + " --> " + correctCasingName); + names.set(i, correctCasingName); } } - //look for local data first + //look for local uuid's first GriefPrevention.AddLogEntry("Checking local server data for UUIDs already seen..."); for(int i = 0; i < names.size(); i++) { String name = names.get(i); - for(OfflinePlayer player : players) + UUID uuid = lookupCache.get(name); + if(uuid != null) { - if(player.getName() != null && player.getName().equalsIgnoreCase(name)) - { - UUID uuid = player.getUniqueId(); - if(uuid != null) - { - GriefPrevention.AddLogEntry(name + " --> " + uuid.toString()); - lookupCache.put(name, uuid); - lookupCache.put(name.toLowerCase(), uuid); - names.remove(i--); - } - break; - } + GriefPrevention.AddLogEntry(name + " --> " + uuid.toString()); + names.remove(i--); } }