001package net.minecraft.world.storage;
002
003import java.io.File;
004import net.minecraft.nbt.NBTTagCompound;
005import net.minecraft.world.MinecraftException;
006import net.minecraft.world.WorldProvider;
007import net.minecraft.world.chunk.storage.IChunkLoader;
008
009public interface ISaveHandler
010{
011    /**
012     * Loads and returns the world info
013     */
014    WorldInfo loadWorldInfo();
015
016    /**
017     * Checks the session lock to prevent save collisions
018     */
019    void checkSessionLock() throws MinecraftException;
020
021    /**
022     * Returns the chunk loader with the provided world provider
023     */
024    IChunkLoader getChunkLoader(WorldProvider worldprovider);
025
026    /**
027     * Saves the given World Info with the given NBTTagCompound as the Player.
028     */
029    void saveWorldInfoWithPlayer(WorldInfo worldinfo, NBTTagCompound nbttagcompound);
030
031    /**
032     * Saves the passed in world info.
033     */
034    void saveWorldInfo(WorldInfo worldinfo);
035
036    /**
037     * returns null if no saveHandler is relevent (eg. SMP)
038     */
039    IPlayerFileData getSaveHandler();
040
041    /**
042     * Called to flush all changes to disk, waiting for them to complete.
043     */
044    void flush();
045
046    /**
047     * Gets the file location of the given map
048     */
049    File getMapFileFromName(String s);
050
051    /**
052     * Returns the name of the directory where world information is saved.
053     */
054    String getSaveDirectoryName();
055}