From 746eb353a2f9ef0b75406d8afc0dc7cef2b7766b Mon Sep 17 00:00:00 2001 From: ElgarL Date: Wed, 25 Jan 2012 23:44:14 +0000 Subject: Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../src/org/anjocaido/groupmanager/data/User.java | 11 ++++++++++- .../anjocaido/groupmanager/dataholder/WorldDataHolder.java | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 980fa0bd0..5155d6181 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -121,4 +121,5 @@ v 1.9: - Fix trying to modify an unmodifiable collection breaking superperms. - Fixed subgroups (I broke earlier). - Check for a null player object in the PlayerTeleportEvent. - - Trap errors in fetching the mirrors map. \ No newline at end of file + - Trap errors in fetching the mirrors map. + - Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java index 7a590c412..980b0846c 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java @@ -122,6 +122,15 @@ public class User extends DataUnit implements Cloneable { * the group to set */ public void setGroup(Group group) { + setGroup(group, true); + } + + /** + * @param group the group to set + * @param updatePerms if we are to trigger a superperms update. + * + */ + public void setGroup(Group group, Boolean updatePerms) { if (!this.getDataSource().groupExists(group.getName())) { getDataSource().addGroup(group); } @@ -129,7 +138,7 @@ public class User extends DataUnit implements Cloneable { String oldGroup = this.group; this.group = group.getName(); flagAsChanged(); - if (GroupManager.isLoaded()) { + if (GroupManager.isLoaded() && (updatePerms)) { if (!GroupManager.BukkitPermissions.isPlayer_join()) GroupManager.BukkitPermissions.updatePlayer(getBukkitPlayer()); diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java index c9c1d2b64..3cbfbd50b 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/dataholder/WorldDataHolder.java @@ -245,7 +245,7 @@ public class WorldDataHolder { return null; } User newUser = new User(this, userName); - newUser.setGroup(groups.getDefaultGroup()); + newUser.setGroup(groups.getDefaultGroup(), false); addUser(newUser); setUsersChanged(true); return newUser; -- cgit v1.2.3