001package net.minecraft.world.chunk.storage;
002
003import java.io.File;
004import net.minecraft.nbt.NBTTagCompound;
005import net.minecraft.world.WorldProvider;
006import net.minecraft.world.WorldProviderEnd;
007import net.minecraft.world.WorldProviderHell;
008import net.minecraft.world.storage.SaveHandler;
009import net.minecraft.world.storage.ThreadedFileIOBase;
010import net.minecraft.world.storage.WorldInfo;
011
012public class AnvilSaveHandler extends SaveHandler
013{
014    public AnvilSaveHandler(File par1File, String par2Str, boolean par3)
015    {
016        super(par1File, par2Str, par3);
017    }
018
019    /**
020     * Returns the chunk loader with the provided world provider
021     */
022    public IChunkLoader getChunkLoader(WorldProvider par1WorldProvider)
023    {
024        File file1 = this.getWorldDirectory();
025        File file2;
026
027        if (par1WorldProvider.getSaveFolder() != null)
028        {
029            file2 = new File(file1, par1WorldProvider.getSaveFolder());
030            file2.mkdirs();
031            return new AnvilChunkLoader(file2);
032        }
033        else
034        {
035            return new AnvilChunkLoader(file1);
036        }
037    }
038
039    /**
040     * Saves the given World Info with the given NBTTagCompound as the Player.
041     */
042    public void saveWorldInfoWithPlayer(WorldInfo par1WorldInfo, NBTTagCompound par2NBTTagCompound)
043    {
044        par1WorldInfo.setSaveVersion(19133);
045        super.saveWorldInfoWithPlayer(par1WorldInfo, par2NBTTagCompound);
046    }
047
048    /**
049     * Called to flush all changes to disk, waiting for them to complete.
050     */
051    public void flush()
052    {
053        try
054        {
055            ThreadedFileIOBase.threadedIOInstance.waitForFinish();
056        }
057        catch (InterruptedException interruptedexception)
058        {
059            interruptedexception.printStackTrace();
060        }
061
062        RegionFileCache.clearRegionFileReferences();
063    }
064}