protected SpawnerWorldConfig(World world)
	{
		FileConfiguration cfg = getConfig(WORLDS_FOLDER + File.separatorChar + world.getName(), SpawnerComponent.SPAWNER_CONFIG_NAME);
		
		super.setCfg(cfg);
		
		boolean spawnMobs = getAndSet("SpawnMobs", true);
		
		if (spawnMobs && MMComponent.getLimiter().getWorld(world) == null)
		{
			spawnMobs = false;
			MMComponent.getSpawner().warning("The world %s has spawning enabled, but is not enabled in the limiter component.", world.getName());
		}
		
		this.spawnMobs = spawnMobs;
		
		if (spawnMobs)
		{
			if (world.getTicksPerMonsterSpawns() > 0)
				MMComponent.getSpawner().warning("The world %s should have vanilla monster spawning disabled via bukkit.yml, or 'SpawnMobs' should be disabled for this world.", world.getName());
			if (world.getTicksPerAnimalSpawns() > 0)
				MMComponent.getSpawner().warning("The world %s should have vanilla animal spawning disabled via bukkit.yml, or 'SpawnMobs' should be disabled for this world.", world.getName());
		}
		
		ConfigurationSection regionsCfg = getConfigurationSection("Regions");
		regions = new ArrayList<Region>();
		
		for (RegionType type : RegionType.values())
		{
			if (type == RegionType.GLOBAL)
				continue;
			
			ConfigurationSection regionCfg = getConfigurationSection(regionsCfg, type.toString());
			
			for (String regionName : regionCfg.getKeys(false))
			{
				try
				{
					Region region = type.createRegion(getConfigurationSection(regionCfg, regionName));
					regions.add(region);
				}
				catch (Exception e)
				{
					MMComponent.getSpawner().warning("Error occured when creating a region. RegionType=%s, RegionName=%s", type, regionName);
				}
			}
		}		
		
		super.clearCfg();
		
		copyHeader(cfg, "Spawner_WorldConfigHeader.txt", "Spawner World Config\n");
		saveConfig(WORLDS_FOLDER + File.separatorChar + world.getName(), SpawnerComponent.SPAWNER_CONFIG_NAME, cfg);
	}