- Fix for an infinite loop bug with the new Bukkit Perms during a new

user creation.
This commit is contained in:
ElgarL 2011-09-03 17:53:34 +01:00
parent e3756623a1
commit 2e1c880502
3 changed files with 16 additions and 7 deletions

View File

@ -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 <world>'. - GroupManager will now attempt to select the default world when using commands instead of failing and telling you to use '/manselect <world>'.
- Invalid groups assigned to players in users.yml will no longer cause a crash. GM will now set them to the default group instead. - 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. - 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. - 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.

View File

@ -104,7 +104,7 @@ public class User extends DataUnit implements Cloneable {
public void setGroup(String group) { public void setGroup(String group) {
this.group = group; this.group = group;
flagAsChanged(); flagAsChanged();
if (GroupManager.isLoaded) if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false))
GroupManager.BukkitPermissions.updateAllPlayers(); GroupManager.BukkitPermissions.updateAllPlayers();
} }
@ -118,7 +118,7 @@ public class User extends DataUnit implements Cloneable {
group = getDataSource().getGroup(group.getName()); group = getDataSource().getGroup(group.getName());
this.group = group.getName(); this.group = group.getName();
flagAsChanged(); flagAsChanged();
if (GroupManager.isLoaded) if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false))
GroupManager.BukkitPermissions.updateAllPlayers(); GroupManager.BukkitPermissions.updateAllPlayers();
} }
@ -133,7 +133,7 @@ public class User extends DataUnit implements Cloneable {
removeSubGroup(subGroup); removeSubGroup(subGroup);
subGroups.add(subGroup.getName()); subGroups.add(subGroup.getName());
flagAsChanged(); flagAsChanged();
if (GroupManager.isLoaded) if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false))
GroupManager.BukkitPermissions.updateAllPlayers(); GroupManager.BukkitPermissions.updateAllPlayers();
} }
@ -153,7 +153,7 @@ public class User extends DataUnit implements Cloneable {
try { try {
if (subGroups.remove(subGroup.getName())) { if (subGroups.remove(subGroup.getName())) {
flagAsChanged(); flagAsChanged();
if (GroupManager.isLoaded) if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false))
GroupManager.BukkitPermissions.updateAllPlayers(); GroupManager.BukkitPermissions.updateAllPlayers();
return true; return true;
} }
@ -197,7 +197,7 @@ public class User extends DataUnit implements Cloneable {
variables.addVar(key, temp.getVarObject(key)); variables.addVar(key, temp.getVarObject(key));
} }
flagAsChanged(); flagAsChanged();
if (GroupManager.isLoaded) if ((GroupManager.isLoaded) && (GroupManager.BukkitPermissions.player_join = false))
GroupManager.BukkitPermissions.updateAllPlayers(); GroupManager.BukkitPermissions.updateAllPlayers();
} }
} }

View File

@ -56,6 +56,7 @@ public class BukkitPermissions {
protected Plugin plugin; protected Plugin plugin;
protected boolean dumpAllPermissions = true; protected boolean dumpAllPermissions = true;
protected boolean dumpMatchedPermissions = true; protected boolean dumpMatchedPermissions = true;
public boolean player_join = false;
public BukkitPermissions(Plugin plugin) { public BukkitPermissions(Plugin plugin) {
this.plugin = plugin; this.plugin = plugin;
@ -142,7 +143,14 @@ public class BukkitPermissions {
@Override @Override
public void onPlayerJoin(PlayerJoinEvent event) { 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 @Override