Files
CodeChickenCore/codechicken/lib/world/WorldExtension.java
T

99 lines
2.2 KiB
Java
Raw Normal View History

2013-07-16 17:58:02 +10:00
package codechicken.lib.world;
import java.util.HashMap;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public abstract class WorldExtension
{
public final World world;
public HashMap<Chunk, ChunkExtension> chunkMap = new HashMap<Chunk, ChunkExtension>();
public WorldExtension(World world)
{
this.world = world;
}
public void load()
{
}
public void unload()
{
}
public void save()
{
}
public void preTick()
{
}
public void postTick()
{
}
protected final void addChunk(ChunkExtension extension)
{
chunkMap.put(extension.chunk, extension);
}
protected final void loadChunk(Chunk chunk)
{
chunkMap.get(chunk).load();
}
protected final void unloadChunk(Chunk chunk)
{
chunkMap.get(chunk).unload();
}
protected final void loadChunkData(Chunk chunk, NBTTagCompound tag)
{
chunkMap.get(chunk).loadData(tag);
}
protected final void saveChunkData(Chunk chunk, NBTTagCompound tag)
{
chunkMap.get(chunk).saveData(tag);
}
protected final void remChunk(Chunk chunk)
{
chunkMap.remove(chunk);
}
protected final void watchChunk(Chunk chunk, EntityPlayerMP player)
{
chunkMap.get(chunk).watchPlayer(player);
}
protected final void unwatchChunk(Chunk chunk, EntityPlayerMP player)
{
ChunkExtension extension = chunkMap.get(chunk);
if(extension != null)
extension.unwatchPlayer(player);
}
protected final void sendChunkUpdates(Chunk chunk)
{
chunkMap.get(chunk).sendUpdatePackets();
}
public boolean containsChunk(Chunk chunk)
{
return chunkMap.containsKey(chunk);
}
public ChunkExtension getChunkExtension(int chunkXPos, int chunkZPos)
{
if(!world.blockExists(chunkXPos<<4, 128, chunkZPos<<4))
return null;
return chunkMap.get(world.getChunkFromChunkCoords(chunkXPos, chunkZPos));
}
}