Skip to content

Commit

Permalink
Added a per-world MapStorage feature that provides a method to store …
Browse files Browse the repository at this point in the history
…data files associated with a specific world, as well as fixes the issue with villagers loosing there village. {Where villagers wouldn't go inside at night}
  • Loading branch information
LexManos committed Oct 27, 2012
1 parent efcda1a commit c689a98
Show file tree
Hide file tree
Showing 4 changed files with 128 additions and 54 deletions.
3 changes: 2 additions & 1 deletion common/forge_at.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,5 @@ default id.e # ChunkProviderServer/field_73247_e
# PlayerManager
default ib.a(IIZ)Lic; # PlayerManager/func_72690_a getOrCreateChunkWatcher
# World
public-f xe.C # net/minecraft/src/World/field_72982_D villageCollectionObj
public-f xe.C # World/field_72982_D villageCollectionObj
public xe.H # World/field_72993_I activeChunkSet
45 changes: 45 additions & 0 deletions common/net/minecraftforge/common/WorldSpecificSaveHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package net.minecraftforge.common;

import java.io.File;

import net.minecraft.src.IChunkLoader;
import net.minecraft.src.IPlayerFileData;
import net.minecraft.src.ISaveHandler;
import net.minecraft.src.MinecraftException;
import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.WorldInfo;
import net.minecraft.src.WorldProvider;
import net.minecraft.src.WorldServer;

//Class used internally to provide the world specific data directories.

public class WorldSpecificSaveHandler implements ISaveHandler
{
private WorldServer world;
private ISaveHandler parent;
private File dataDir;

public WorldSpecificSaveHandler(WorldServer world, ISaveHandler parent)
{
this.world = world;
this.parent = parent;
dataDir = new File(world.getChunkSaveLocation(), "data");
dataDir.mkdirs();
}

@Override public WorldInfo loadWorldInfo() { return parent.loadWorldInfo(); }
@Override public void checkSessionLock() throws MinecraftException { parent.checkSessionLock(); }
@Override public IChunkLoader getChunkLoader(WorldProvider var1) { return parent.getChunkLoader(var1); }
@Override public void saveWorldInfoWithPlayer(WorldInfo var1, NBTTagCompound var2) { parent.saveWorldInfoWithPlayer(var1, var2); }
@Override public void saveWorldInfo(WorldInfo var1){ parent.saveWorldInfo(var1); }
@Override public IPlayerFileData getSaveHandler() { return parent.getSaveHandler(); }
@Override public void flush() { parent.flush(); }
@Override public String getSaveDirectoryName() { return parent.getSaveDirectoryName(); }

@Override
public File getMapFileFromName(String name)
{
System.out.println(new File(dataDir, name + ".dat"));
return new File(dataDir, name + ".dat");
}
}

0 comments on commit c689a98

Please sign in to comment.