Fix forgetting sub groups on a manload.

This commit is contained in:
ElgarL 2012-04-21 16:58:22 +01:00
parent a21b5fac76
commit fc7689354f
4 changed files with 52 additions and 9 deletions

View File

@ -181,4 +181,5 @@ v 2.0:
- Stop using our own deprecated methods as we tell others to do.
- Finally remove all deprecated methods.
- Re-initialize the WorldsHolder on a reload, as un-registering and re-registering a new holder means all plugins have to check for the new service on every quiery.
- Prevent null perms getting past the GlobalGroups loader.
- Prevent null perms getting past the GlobalGroups loader.
- Fix forgetting sub groups on a manload.

View File

@ -103,13 +103,20 @@ public class GroupManager extends JavaPlugin {
}
}
if (WorldEvents != null)
WorldEvents = null;
// Remove all attachments before clearing
if (BukkitPermissions != null) {
BukkitPermissions.removeAllAttachments();
}
if (!restarting) {
if (WorldEvents != null)
WorldEvents = null;
BukkitPermissions = null;
}
// EXAMPLE: Custom code, here we just output some info so we can check that all is well
@ -130,6 +137,9 @@ public class GroupManager extends JavaPlugin {
selectedWorlds = new HashMap<CommandSender, String>();
lastError = "";
/*
* Setup our logger if we are not restarting.
*/
if (!restarting) {
GroupManager.logger.setUseParentHandlers(false);
ch = new GMLoggerHandler();
@ -144,11 +154,17 @@ public class GroupManager extends JavaPlugin {
// Load the global groups
globalGroups = new GlobalGroups(this);
/*
* Configure the worlds holder.
*/
if (!restarting)
worldsHolder = new WorldsHolder(this);
else
worldsHolder.resetWorldsHolder();
/*
* This should NEVER happen. No idea why it's still here.
*/
PluginDescriptionFile pdfFile = this.getDescription();
if (worldsHolder == null) {
GroupManager.logger.severe("Can't enable " + pdfFile.getName() + " version " + pdfFile.getVersion() + ", bad loading!");
@ -156,13 +172,30 @@ public class GroupManager extends JavaPlugin {
throw new IllegalStateException("An error ocurred while loading GroupManager");
}
// Set a few defaults (reloads)
/*
* Prevent our registered events from triggering
* updates as we are not fully loaded.
*/
setLoaded(false);
// Initialize the world listener and bukkit permissions to handle events.
WorldEvents = new GMWorldListener(this);
BukkitPermissions = new BukkitPermissions(this);
/*
* Initialize the world listener and bukkit permissions
* to handle events if this is a fresh start
*
* else
*
* Reset bukkit perms.
*/
if (!restarting) {
WorldEvents = new GMWorldListener(this);
BukkitPermissions = new BukkitPermissions(this);
} else {
BukkitPermissions.reset();
}
/*
* Start the scheduler for data saving.
*/
enableScheduler();
/*
@ -172,6 +205,9 @@ public class GroupManager extends JavaPlugin {
if (getServer().getScheduler().scheduleSyncDelayedTask(this, new BukkitPermsUpdateTask(), 1) == -1) {
GroupManager.logger.severe("Could not schedule superperms Update.");
/*
* Flag that we are now loaded and should start processing events.
*/
setLoaded(true);
}

View File

@ -62,6 +62,7 @@ public class WorldsHolder {
public void resetWorldsHolder() {
worldsData = new HashMap<String, OverloadedWorldHolder>();
mirrorsGroup = new HashMap<String, String>();
mirrorsUser = new HashMap<String, String>();

View File

@ -96,12 +96,17 @@ public class BukkitPermissions {
public BukkitPermissions(GroupManager plugin) {
this.plugin = plugin;
this.collectPermissions();
this.reset();
this.registerEvents();
this.updateAllPlayers();
GroupManager.logger.info("Superperms support enabled.");
}
public void reset() {
this.collectPermissions();
this.updateAllPlayers();
}
private void registerEvents() {