Merge remote branch 'remotes/origin/groupmanager'

This commit is contained in:
KHobbits 2012-04-18 00:39:14 +01:00
commit 00c87c0e60
4 changed files with 75 additions and 40 deletions

View File

@ -179,4 +179,5 @@ v 2.0:
- Unregister the worldsHolder as a service on a reload/shutdown instead of the whole plugin.
- Update all code formatting to use tabs for indentation.
- Stop using our own deprecated methods as we tell others to do.
- Finally remove all deprecated methods.
- 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.

View File

@ -235,13 +235,14 @@ groups:
g:towny_default:
permissions:
- towny.chat.general
- towny.chat.local
g:towny_builder:
permissions:
- towny.town.*
- towny.nation.*
- towny.chat.tc
- towny.chat.nc
- towny.chat.town
- towny.chat.nation
- towny.wild.build.6
- towny.wild.destroy.6
- towny.wild.destroy.14

View File

@ -56,25 +56,7 @@ public class GroupManager extends JavaPlugin {
private Map<CommandSender, String> selectedWorlds = new HashMap<CommandSender, String>();
private WorldsHolder worldsHolder;
private boolean validateOnlinePlayer = true;
private String lastError = "";
/**
* @return the validateOnlinePlayer
*/
public boolean isValidateOnlinePlayer() {
return validateOnlinePlayer;
}
/**
* @param validateOnlinePlayer the validateOnlinePlayer to set
*/
public void setValidateOnlinePlayer(boolean validateOnlinePlayer) {
this.validateOnlinePlayer = validateOnlinePlayer;
}
private static boolean isLoaded = false;
protected GMConfiguration config;
@ -89,13 +71,28 @@ public class GroupManager extends JavaPlugin {
private OverloadedWorldHolder dataHolder = null;
private AnjoPermissionsHandler permissionHandler = null;
private String lastError = "";
@Override
public void onDisable() {
onDisable(false);
}
@Override
public void onEnable() {
onEnable(false);
}
public void onDisable(boolean restarting) {
setLoaded(false);
// Unregister this service.
this.getServer().getServicesManager().unregister(this.worldsHolder);
if (!restarting) {
// Unregister this service if we are shutting down.
this.getServer().getServicesManager().unregister(this.worldsHolder);
}
disableScheduler(); // Shutdown before we save, so it doesn't interfere.
if (worldsHolder != null) {
@ -118,18 +115,26 @@ public class GroupManager extends JavaPlugin {
// EXAMPLE: Custom code, here we just output some info so we can check that all is well
PluginDescriptionFile pdfFile = this.getDescription();
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is disabled!");
GroupManager.logger.removeHandler(ch);
if (!restarting)
GroupManager.logger.removeHandler(ch);
}
@Override
public void onEnable() {
public void onEnable(boolean restarting) {
try {
/*
* reset local variables.
*/
overloadedUsers = new HashMap<String, ArrayList<User>>();
selectedWorlds = new HashMap<CommandSender, String>();
lastError = "";
GroupManager.logger.setUseParentHandlers(false);
ch = new GMLoggerHandler();
GroupManager.logger.addHandler(ch);
if (!restarting) {
GroupManager.logger.setUseParentHandlers(false);
ch = new GMLoggerHandler();
GroupManager.logger.addHandler(ch);
}
logger.setLevel(Level.ALL);
// Create the backup folder, if it doesn't exist.
@ -138,7 +143,11 @@ public class GroupManager extends JavaPlugin {
prepareConfig();
// Load the global groups
globalGroups = new GlobalGroups(this);
worldsHolder = new WorldsHolder(this);
if (!restarting)
worldsHolder = new WorldsHolder(this);
else
worldsHolder.resetWorldsHolder();
PluginDescriptionFile pdfFile = this.getDescription();
if (worldsHolder == null) {
@ -169,7 +178,9 @@ public class GroupManager extends JavaPlugin {
System.out.println(pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!");
// Register as a service
this.getServer().getServicesManager().register(WorldsHolder.class, this.worldsHolder, this, ServicePriority.Lowest);
if (!restarting)
this.getServer().getServicesManager().register(WorldsHolder.class, this.worldsHolder, this, ServicePriority.Lowest);
} catch (Exception ex) {
/*
@ -222,6 +233,22 @@ public class GroupManager extends JavaPlugin {
}
}
/**
* @return the validateOnlinePlayer
*/
public boolean isValidateOnlinePlayer() {
return validateOnlinePlayer;
}
/**
* @param validateOnlinePlayer the validateOnlinePlayer to set
*/
public void setValidateOnlinePlayer(boolean validateOnlinePlayer) {
this.validateOnlinePlayer = validateOnlinePlayer;
}
public static boolean isLoaded() {
@ -1633,11 +1660,10 @@ public class GroupManager extends JavaPlugin {
*/
/*
* Reset the last error as we are attempting a fresh load.
* Attempting a fresh load.
*/
lastError = "";
onDisable();
onEnable();
onDisable(true);
onEnable(true);
sender.sendMessage("All settings and worlds were reloaded!");
}

View File

@ -57,12 +57,19 @@ public class WorldsHolder {
public WorldsHolder(GroupManager plugin) {
this.plugin = plugin;
resetWorldsHolder();
}
public void resetWorldsHolder() {
mirrorsGroup = new HashMap<String, String>();
mirrorsUser = new HashMap<String, String>();
// Setup folders and check files exist for the primary world
verifyFirstRun();
initialLoad();
if (serverDefaultWorldName == null) {
if (serverDefaultWorldName == null)
throw new IllegalStateException("There is no default group! OMG!");
}
}
private void initialLoad() {