protected AbilityWorldConfig(FileConfiguration cfg, String folder)
	{		
		/* ################ UseWorldSettings ################ */
		if (folder.length() != 0)
		{
			useWorldSettings = cfg.getBoolean("UseWorldSettings", false);
			set(cfg, "UseWorldSettings", useWorldSettings);
		}
		
		/* ################ EnabledSpawnReasons ################ */
		enabledSpawnReasons = new EnumSettingContainer(SpawnReason.class, cfg.getList("EnabledSpawnReasons", null), "The Spawn Reason '%s' is invalid");
		enabledSpawnReasons.addDefaults((Object[]) SpawnReason.values());
		set(cfg, "EnabledSpawnReasons", enabledSpawnReasons.getList());
		
		/* ################ MobAbilities ################ */
		ConfigurationSection sect = cfg.getConfigurationSection("MobAbilities");
		if (sect == null)
			sect = cfg.createSection("MobAbilities");
		set(cfg, "MobAbilities", sect);
		
		if (!useWorldSettings || enabledSpawnReasons.getList().size() == 0)
			return;
		
		for (String key : sect.getKeys(false))
		{
			ExtendedEntityType mobType = ExtendedEntityType.valueOf(key);
			
			if (mobType == null)
			{
				MMComponent.getAbilities().warning(String.format("No such mob named '%s' in %s", key, AbilityConfig.ABILITY_CONFIG_NAME));
				continue;
			}
			
			ConfigurationSection mobSect = sect.getConfigurationSection(key);
			if (mobSect == null)
				mobSect = sect.createSection(key);
			
			mobs.put(mobType, new MobAbilityConfig(mobType, mobSect));
			set(sect, key, mobSect);
		}
	}