diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 2879a9d33..7005c8cc1 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -7,4 +7,5 @@ v 1.1: - GroupManager will now attempt to select the default world when using commands instead of failing and telling you to use '/manselect '. - Invalid groups assigned to players in users.yml will no longer cause a crash. GM will now set them to the default group instead. - Fix for Users.yml containing only 'users:' causing a crash. - - GroupManager will now generate a fresh Users and Groups yml if either file is empty. \ No newline at end of file + - GroupManager will now generate a fresh Users and Groups yml if either file is empty. + - Fix for an infinite loop bug with the new Bukkit Perms during a new user creation. \ 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 f3ea1d0f5..e9bf79aa9 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java @@ -104,7 +104,7 @@ public class User extends DataUnit implements Cloneable { public void setGroup(String group) { this.group = group; flagAsChanged(); - if (GroupManager.isLoaded) + if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false)) GroupManager.BukkitPermissions.updateAllPlayers(); } @@ -118,7 +118,7 @@ public class User extends DataUnit implements Cloneable { group = getDataSource().getGroup(group.getName()); this.group = group.getName(); flagAsChanged(); - if (GroupManager.isLoaded) + if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false)) GroupManager.BukkitPermissions.updateAllPlayers(); } @@ -133,7 +133,7 @@ public class User extends DataUnit implements Cloneable { removeSubGroup(subGroup); subGroups.add(subGroup.getName()); flagAsChanged(); - if (GroupManager.isLoaded) + if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false)) GroupManager.BukkitPermissions.updateAllPlayers(); } @@ -153,7 +153,7 @@ public class User extends DataUnit implements Cloneable { try { if (subGroups.remove(subGroup.getName())) { flagAsChanged(); - if (GroupManager.isLoaded) + if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false)) GroupManager.BukkitPermissions.updateAllPlayers(); return true; } @@ -197,7 +197,7 @@ public class User extends DataUnit implements Cloneable { variables.addVar(key, temp.getVarObject(key)); } flagAsChanged(); - if (GroupManager.isLoaded) + if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false)) GroupManager.BukkitPermissions.updateAllPlayers(); } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index e396118b4..5df263eb4 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -56,6 +56,7 @@ public class BukkitPermissions { protected Plugin plugin; protected boolean dumpAllPermissions = true; protected boolean dumpMatchedPermissions = true; + public boolean player_join = false; public BukkitPermissions(Plugin plugin) { this.plugin = plugin; @@ -142,7 +143,14 @@ public class BukkitPermissions { @Override public void onPlayerJoin(PlayerJoinEvent event) { - updatePermissions(event.getPlayer()); + player_join = true; + Player player = event.getPlayer(); + //force GM to create the player if they are not already listed. + if (GroupManager.getWorldsHolder().getWorldData(player.getWorld().getName()).getUser(player.getName()) != null) { + player_join = false; + updatePermissions(event.getPlayer()); + } else + player_join = false; } @Override