From b7cb5dba51bef12dd206de4ccdffca3f6d0f453a Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Tue, 2 Dec 2014 19:22:23 -0800 Subject: [PATCH] Perf: Faster player name lookup by UUID. --- .../GriefPrevention/GriefPrevention.java | 40 +++---------------- .../GriefPrevention/PlayerEventHandler.java | 3 +- 2 files changed, 7 insertions(+), 36 deletions(-) diff --git a/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java b/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java index c197b58..0e2a57a 100644 --- a/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java +++ b/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java @@ -2283,49 +2283,21 @@ public class GriefPrevention extends JavaPlugin if(playerID == null) return "someone"; //check the cache - String playerName = GriefPrevention.uuidToNameMap.get(playerID); - if(playerName != null) return playerName; - - //try online players next - Player player = GriefPrevention.instance.getServer().getPlayer(playerID); - if(player != null) playerName = player.getName(); - - //then search offline players - if(playerName == null) + OfflinePlayer player = GriefPrevention.instance.getServer().getOfflinePlayer(playerID); + if(player.hasPlayedBefore()) { - OfflinePlayer [] players = GriefPrevention.instance.getServer().getOfflinePlayers(); - for(int i = 0; i < players.length; i++) - { - if(players[i].getUniqueId().equals(playerID)) - { - playerName = players[i].getName(); - break; - } - } + return player.getName(); } - - if(playerName == null) + else { - playerName = "someone"; + return "someone"; } - - //cache the result - GriefPrevention.cacheUUIDNamePair(playerID, playerName); - - //return result - return playerName; } //cache for player name lookups, to save searches of all offline players - static ConcurrentHashMap uuidToNameMap = new ConcurrentHashMap(); static void cacheUUIDNamePair(UUID playerID, String playerName) { - //limit memory footprint - if(GriefPrevention.uuidToNameMap.size() >= 500) GriefPrevention.uuidToNameMap.clear(); - - GriefPrevention.uuidToNameMap.put(playerID, playerName); - - //always store the reverse mapping + //store the reverse mapping GriefPrevention.instance.playerNameToIDMap.put(playerName, playerID); GriefPrevention.instance.playerNameToIDMap.put(playerName.toLowerCase(), playerID); } diff --git a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java index 887feb6..bb7059f 100644 --- a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java +++ b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java @@ -1180,8 +1180,7 @@ class PlayerEventHandler implements Listener (GriefPrevention.instance.config_claims_preventButtonsSwitches && clickedBlockType == Material.BED_BLOCK) || (GriefPrevention.instance.config_claims_lockTrapDoors && ( - clickedBlockType == Material.TRAP_DOOR || - clickedBlockType == Material.IRON_TRAPDOOR)) || + clickedBlockType == Material.TRAP_DOOR)) || (GriefPrevention.instance.config_claims_lockFenceGates && ( clickedBlockType == Material.FENCE_GATE ||