    001package net.minecraft.world.storage;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.util.List;
    006import net.minecraft.client.AnvilConverterException;
    007import net.minecraft.util.IProgressUpdate;
    008
    009public interface ISaveFormat
    010{
    011    /**
    012     * Returns back a loader for the specified save directory
    013     */
    014    ISaveHandler getSaveLoader(String s, boolean flag);
    015
    016    @SideOnly(Side.CLIENT)
    017    List getSaveList() throws AnvilConverterException;
    018
    019    void flushCache();
    020
    021    @SideOnly(Side.CLIENT)
    022
    023    /**
    024     * gets the world info
    025     */
    026    WorldInfo getWorldInfo(String s);
    027
    028    /**
    029     * @args: Takes one argument - the name of the directory of the world to delete. @desc: Delete the world by deleting
    030     * the associated directory recursively.
    031     */
    032    boolean deleteWorldDirectory(String s);
    033
    034    @SideOnly(Side.CLIENT)
    035
    036    /**
    037     * @args: Takes two arguments - first the name of the directory containing the world and second the new name for
    038     * that world. @desc: Renames the world by storing the new name in level.dat. It does *not* rename the directory
    039     * containing the world data.
    040     */
    041    void renameWorld(String s, String s1);
    042
    043    /**
    044     * Checks if the save directory uses the old map format
    045     */
    046    boolean isOldMapFormat(String s);
    047
    048    /**
    049     * Converts the specified map to the new map format. Args: worldName, loadingScreen
    050     */
    051    boolean convertMapFormat(String s, IProgressUpdate iprogressupdate);
    052
    053    @SideOnly(Side.CLIENT)
    054
    055    /**
    056     * Return whether the given world can be loaded.
    057     */
    058    boolean canLoadWorld(String s);
    059}