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 var2 = this.getSaveDirectory();
025        File var3;
026
027        if (par1WorldProvider.getSaveFolder() != null)
028        {
029            var3 = new File(var2, par1WorldProvider.getSaveFolder());
030            var3.mkdirs();
031            return new AnvilChunkLoader(var3);
032        }
033        else
034        {
035            return new AnvilChunkLoader(var2);
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 var2)
058        {
059            var2.printStackTrace();
060        }
061
062        RegionFileCache.clearRegionFileReferences();
063    }
064}