001    package net.minecraftforge.common;
002    
003    import java.io.File;
004    
005    import net.minecraft.world.chunk.storage.IChunkLoader;
006    import net.minecraft.world.storage.IPlayerFileData;
007    import net.minecraft.world.storage.ISaveHandler;
008    import net.minecraft.world.MinecraftException;
009    import net.minecraft.nbt.NBTTagCompound;
010    import net.minecraft.world.storage.WorldInfo;
011    import net.minecraft.world.WorldProvider;
012    import net.minecraft.world.WorldServer;
013    
014    //Class used internally to provide the world specific data directories. 
015    
016    public class WorldSpecificSaveHandler implements ISaveHandler
017    {
018        private WorldServer world;
019        private ISaveHandler parent;
020        private File dataDir;
021    
022        public WorldSpecificSaveHandler(WorldServer world, ISaveHandler parent)
023        {
024            this.world = world;
025            this.parent = parent;
026            dataDir = new File(world.getChunkSaveLocation(), "data");
027            dataDir.mkdirs();
028        }
029    
030        @Override public WorldInfo loadWorldInfo() { return parent.loadWorldInfo(); }
031        @Override public void checkSessionLock() throws MinecraftException { parent.checkSessionLock(); }
032        @Override public IChunkLoader getChunkLoader(WorldProvider var1) { return parent.getChunkLoader(var1); }
033        @Override public void saveWorldInfoWithPlayer(WorldInfo var1, NBTTagCompound var2) { parent.saveWorldInfoWithPlayer(var1, var2); }
034        @Override public void saveWorldInfo(WorldInfo var1){ parent.saveWorldInfo(var1); }
035        @Override public IPlayerFileData getSaveHandler() { return parent.getSaveHandler(); }
036        @Override public void flush() { parent.flush(); }
037        @Override public String getSaveDirectoryName() { return parent.getSaveDirectoryName(); }
038    
039        @Override
040        public File getMapFileFromName(String name)
041        {
042            return new File(dataDir, name + ".dat");
043        }
044    }