summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager
diff options
context:
space:
mode:
authorElgarL <ElgarL@palmergames.com>2012-03-17 15:56:40 +0000
committerElgarL <ElgarL@palmergames.com>2012-03-17 15:56:40 +0000
commit6476158462650c9dea305c2e3892e976a258a529 (patch)
tree1d74751993e91cfc119c867894865bee6dff0ff3 /EssentialsGroupManager
parentb72083fb186504b88aad84c9b4df4b5349602c77 (diff)
downloadEssentials-6476158462650c9dea305c2e3892e976a258a529.tar
Essentials-6476158462650c9dea305c2e3892e976a258a529.tar.gz
Essentials-6476158462650c9dea305c2e3892e976a258a529.tar.lz
Essentials-6476158462650c9dea305c2e3892e976a258a529.tar.xz
Essentials-6476158462650c9dea305c2e3892e976a258a529.zip
Don't remove an attachment on a player leaving as Bukkit never forgets
it. This fixes non mirrored permissions being messed up if a player relogs.
Diffstat (limited to 'EssentialsGroupManager')
-rw-r--r--EssentialsGroupManager/src/Changelog.txt3
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java26
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java12
3 files changed, 5 insertions, 36 deletions
diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt
index 13cbf98c6..6bedf7e90 100644
--- a/EssentialsGroupManager/src/Changelog.txt
+++ b/EssentialsGroupManager/src/Changelog.txt
@@ -150,4 +150,5 @@ v 1.9:
- Minor optimization when checking bukkit permissions.
- Better reporting when a users.yml is failing to load.
- Expanded '/manuadd'to accept an optional variable for the world (eg '/manuadd <player> <group> <world>').
- - Removed some debug spam. \ No newline at end of file
+ - Removed some debug spam.
+ - Don't remove an attachment on a player leaving as Bukkit never forgets it. This fixes non mirrored permissions being messed up if a player relogs. \ 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 e72118468..290a58388 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/worlds/WorldsHolder.java
@@ -347,32 +347,8 @@ public class WorldsHolder {
String worldNameLowered = worldName.toLowerCase();
// Find this worlds data
- if (worldsData.containsKey(worldNameLowered)) {
-
- String usersMirror = mirrorsUser.get(worldNameLowered);
- String groupsMirror = mirrorsGroup.get(worldNameLowered);
-
- if (usersMirror != null) {
-
- // If both are mirrored
- if (groupsMirror != null) {
-
- // if the data sources are the same, return the parent
- if (usersMirror == groupsMirror)
- return getUpdatedWorldData(usersMirror.toLowerCase());
-
- // Both data sources are mirrors, but they are from different parents
- // so we return the actual data object.
- return getUpdatedWorldData(worldNameLowered);
- }
-
- // Groups isn't a mirror so return this this worlds data source
- return getUpdatedWorldData(worldNameLowered);
- }
-
- // users isn't mirrored so we need to return this worlds data source
+ if (worldsData.containsKey(worldNameLowered))
return getUpdatedWorldData(worldNameLowered);
- }
// Oddly no data source was found for this world so return the default.
GroupManager.logger.finest("Requested world " + worldName + " not found or badly mirrored. Returning default world...");
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java
index 0b6148900..dc08168dc 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Set;
+import java.util.WeakHashMap;
import org.anjocaido.groupmanager.GroupManager;
@@ -37,7 +38,6 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
-import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.permissions.Permission;
@@ -54,7 +54,7 @@ import org.bukkit.plugin.PluginManager;
*/
public class BukkitPermissions {
- protected Map<Player, PermissionAttachment> attachments = new HashMap<Player, PermissionAttachment>();
+ protected WeakHashMap<Player, PermissionAttachment> attachments = new WeakHashMap<Player, PermissionAttachment>();
protected LinkedHashMap<String, Permission> registeredPermissions = new LinkedHashMap<String, Permission>();
protected GroupManager plugin;
protected boolean dumpAllPermissions = true;
@@ -369,14 +369,6 @@ public class BukkitPermissions {
}
@EventHandler(priority = EventPriority.LOWEST)
- public void onPlayerQuit(PlayerQuitEvent event) {
- if (!GroupManager.isLoaded())
- return;
-
- attachments.remove(event.getPlayer());
- }
-
- @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerKick(PlayerKickEvent event) {
attachments.remove(event.getPlayer());
}