From 2a478fe03d97c97eeb189f90721724ec6d7fcad5 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Tue, 10 Jan 2012 18:40:34 +0000 Subject: Optimize fetching of Mirrored world data. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- EssentialsGroupManager/src/config.yml | 10 +++++----- .../groupmanager/dataholder/worlds/WorldsHolder.java | 12 +++++++----- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 6ac58e8ff..d9ac389cd 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -97,4 +97,5 @@ v 1.8: - Reload GlobalGroups when you perform a world load. - Changed GlobalGroups to save/load before local groups in the scheduled data saving/loading - Fix 'manucheckp' to correctly report if a permission is available from GroupManager or Bukkit. - - Changed over to a reflection method for populating superperms as Bukkit lags when you handle permissions one at a time. \ No newline at end of file + - Changed over to a reflection method for populating superperms as Bukkit lags when you handle permissions one at a time. + - Optimize fetching of Mirrored world data. \ No newline at end of file diff --git a/EssentialsGroupManager/src/config.yml b/EssentialsGroupManager/src/config.yml index 17ffc5b6e..2847dfe0e 100644 --- a/EssentialsGroupManager/src/config.yml +++ b/EssentialsGroupManager/src/config.yml @@ -25,14 +25,14 @@ settings: level: INFO mirrors: - # Worlds listed here have their permissions mirrored in their children. + # Worlds listed here have their settings mirrored in their children. # the first element 'world' is the main worlds name - # subsequent elements '- world_nether' are worlds which will use the same - # user/groups permissions as the parent. + # subsequent elements 'world_nether' and 'world_the_end' are worlds which will use the same + # user/groups files as the parent. world: - world_nether - world_the_end - - world2 - - world3 + # - world2 + # - world3 # world4: # - world5 \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java index dbdd17f34..49205e4fb 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java @@ -270,11 +270,12 @@ public class WorldsHolder { */ public OverloadedWorldHolder getWorldData(String worldName) { String worldNameLowered = worldName.toLowerCase(); - OverloadedWorldHolder data = worldsData.get(worldNameLowered); + // If a mirror change to the real world to load. if (mirrors.containsKey(worldNameLowered)) { - String realOne = mirrors.get(worldNameLowered); - data = worldsData.get(realOne.toLowerCase()); - } + worldNameLowered = mirrors.get(worldNameLowered); + } + OverloadedWorldHolder data = worldsData.get(worldNameLowered); + if (data == null) { GroupManager.logger.finest("Requested world " + worldName + " not found or badly mirrored. Returning default world..."); data = getDefaultWorld(); @@ -283,8 +284,9 @@ public class WorldsHolder { } /** - * Do a matching of playerName, if it s found only one player, do + * Do a matching of playerName, if its found only one player, do * getWorldData(player) + * * @param playerName * @return null if matching returned no player, or more than one. */ -- cgit v1.2.3