private void loadConfig() throws InvalidConfigurationException
	{
		mAllGroups.clear();
		mAutoGroups.clear();
		
		FileConfiguration config = getConfig();
		
		mNoisy = config.getBoolean("output_to_console", false);
		mInterval = config.getInt("ticks_between_run", 1200);
		if(mInterval <= 0)
			throw new InvalidConfigurationException("ticks_between_run must be greater than 0");
		
		for(String key : config.getKeys(false))
		{
			if(!config.isConfigurationSection(key))
				continue;
			
			GroupSettings group = new GroupSettings();
			group.load(config.getConfigurationSection(key));
			
			if (group.isChunkOnly())
				mChunkGroups.add(group);
			else
			{
				mAllGroups.add(group);
				if(group.shouldAutorun())
					mAutoGroups.add(group);
			}
			
			getLogger().info(String.format("Loaded group %s: AutoRun: %s", group.getName(), group.shouldAutorun()));
		}
		
		if(config.isList("worlds"))
		{
			List<String> worlds = config.getStringList("worlds");
			mWorlds = new HashSet<String>(worlds.size());
			for(String world : worlds)
				mWorlds.add(world.toLowerCase());
		}
		else
			mWorlds = new HashSet<String>();
		
		mWorldsBlacklist = config.getBoolean("worlds_is_blacklist", true);
		
		mResetTicksLived = config.getBoolean("vehicle_reset_ticks_lived", false);
	}