    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}