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    }