    001    package net.minecraft.world.chunk.storage;
    002
    003    import java.io.File;
    004    import net.minecraft.nbt.NBTTagCompound;
    005    import net.minecraft.world.WorldProvider;
    006    import net.minecraft.world.WorldProviderEnd;
    007    import net.minecraft.world.WorldProviderHell;
    008    import net.minecraft.world.storage.SaveHandler;
    009    import net.minecraft.world.storage.ThreadedFileIOBase;
    010    import net.minecraft.world.storage.WorldInfo;
    011
    012    public 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    }