	public void onEnable() {
		try {
			System.out.println(GlobalConf.logPrefix+"Initalizing...");
			server = getServer();
			PluginManager pm = server.getPluginManager();
			System.out.println(GlobalConf.logPrefix+"Loading config and ban handler...");
			long oldtime = System.currentTimeMillis();
			GlobalConf.conf = getConfig();
			GlobalConf.loadConfig();
			HashMap<String, String> data = new HashMap<String, String>(15);
			data.put("username", GlobalConf.Sql.user);
			data.put("password", GlobalConf.Sql.pass);
			data.put("host", GlobalConf.Sql.host);
			data.put("port", GlobalConf.Sql.port);
			data.put("prefix", GlobalConf.Sql.prefix);
			data.put("db", GlobalConf.Sql.db);
			try {
				Class<?> rawClass = Class.forName(GlobalConf.Advanced.pkg+"."+GlobalConf.banHandlerConf+GlobalConf.Advanced.suffix);
				if (rawClass.isAssignableFrom(BanHandler.class)) {
					Class<?>[] arguments = {Map.class};
					banHandler = (BanHandler) rawClass.getDeclaredMethod("onEnable", arguments).invoke(null, data);
				} else {
					LOG.severe(GlobalConf.logPrefix+"Wierd ban handler given in config file! Aborting operation.");
					onFatal();
				}
			} catch (ClassNotFoundException e) {
				LOG.severe(GlobalConf.logPrefix+"Non-existant ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (SecurityException e) {
				LOG.severe(GlobalConf.logPrefix+"Somehow, a SecurityException occurred. Plugin conflict? Aborting operation.");
				onFatal();
			} catch (NoSuchMethodException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (IllegalArgumentException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (IllegalAccessException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (InvocationTargetException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (NullPointerException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (ClassCastException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			}
			long newtime = System.currentTimeMillis();
			System.out.println(GlobalConf.logPrefix+"Done. Took "+(newtime-oldtime)+" ms.");
			System.out.println(GlobalConf.logPrefix+"Registering events...");
			oldtime = System.currentTimeMillis();
			pm.registerEvents(new EventListener(), this);
			newtime = System.currentTimeMillis();
			System.out.println(GlobalConf.logPrefix+"Done. Took "+(newtime-oldtime)+" ms.");
		}
		catch (RuntimeException e) {
			setEnabled(false);
		}
	}

	public void onEnable() {
		try {
			System.out.println(GlobalConf.logPrefix+"Initalizing...");
			server = getServer();
			PluginManager pm = server.getPluginManager();
			System.out.println(GlobalConf.logPrefix+"Loading config and ban handler...");
			long oldtime = System.currentTimeMillis();
			GlobalConf.conf = getConfig();
			GlobalConf.loadConfig();
			HashMap<String, String> data = new HashMap<String, String>(15);
			data.put("username", GlobalConf.Sql.user);
			data.put("password", GlobalConf.Sql.pass);
			data.put("host", GlobalConf.Sql.host);
			data.put("port", GlobalConf.Sql.port);
			data.put("prefix", GlobalConf.Sql.prefix);
			data.put("db", GlobalConf.Sql.db);
			data.put("yaml", GlobalConf.Yaml.file);
			data.put("json", GlobalConf.Json.file);
			data.put("apiKey", GlobalConf.MCBans.apiKey);
			try {
				Class<?> rawClass = Class.forName(GlobalConf.Advanced.pkg+"."+GlobalConf.banHandlerConf+GlobalConf.Advanced.suffix);
				if (rawClass.isAssignableFrom(BanHandler.class)) {
					Class<?>[] arguments = {Map.class};
					banHandler = (BanHandler) rawClass.getDeclaredMethod("onEnable", arguments).invoke(null, data);
				} else {
					LOG.severe(GlobalConf.logPrefix+"Wierd ban handler given in config file! Aborting operation.");
					onFatal();
				}
			} catch (ClassNotFoundException e) {
				LOG.severe(GlobalConf.logPrefix+"Non-existant ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (SecurityException e) {
				LOG.severe(GlobalConf.logPrefix+"Somehow, a SecurityException occurred. Plugin conflict? Aborting operation.");
				onFatal();
			} catch (NoSuchMethodException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (IllegalArgumentException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (IllegalAccessException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (InvocationTargetException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (NullPointerException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			} catch (ClassCastException e) {
				LOG.severe(GlobalConf.logPrefix+"Bad ban handler given in config file! Aborting operation.");
				onFatal();
			}
			long newtime = System.currentTimeMillis();
			System.out.println(GlobalConf.logPrefix+"Done. Took "+(newtime-oldtime)+" ms.");
			System.out.println(GlobalConf.logPrefix+"Registering events...");
			oldtime = System.currentTimeMillis();
			pm.registerEvents(new EventListener(), this);
			newtime = System.currentTimeMillis();
			System.out.println(GlobalConf.logPrefix+"Done. Took "+(newtime-oldtime)+" ms.");
		}
		catch (RuntimeException e) {
			setEnabled(false);
		}
	}
