package net.minecraft.world.chunk;
import java.util.List;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.util.IProgressUpdate;
import net.minecraft.world.ChunkPosition;
import net.minecraft.world.World;
public interface IChunkProvider
{
/**
* Checks to see if a chunk exists at x, y
*/
boolean chunkExists(int p_73149_1_, int p_73149_2_);
/**
* Will return back a chunk, if it doesn't exist and its not a MP client it will generates all the blocks for the
* specified chunk from the map seed and chunk seed
*/
Chunk provideChunk(int p_73154_1_, int p_73154_2_);
/**
* loads or generates the chunk at the chunk location specified
*/
Chunk loadChunk(int p_73158_1_, int p_73158_2_);
/**
* Populates chunk with ores etc etc
*/
void populate(IChunkProvider p_73153_1_, int p_73153_2_, int p_73153_3_);
/**
* Two modes of operation: if passed true, save all Chunks in one go. If passed false, save up to two chunks.
* Return true if all chunks have been saved.
*/
boolean saveChunks(boolean p_73151_1_, IProgressUpdate p_73151_2_);
/**
* Unloads chunks that are marked to be unloaded. This is not guaranteed to unload every such chunk.
*/
boolean unloadQueuedChunks();
/**
* Returns if the IChunkProvider supports saving.
*/
boolean canSave();
/**
* Converts the instance data to a readable string.
*/
String makeString();
/**
* Returns a list of creatures of the specified type that can spawn at the given location.
*/
List getPossibleCreatures(EnumCreatureType p_73155_1_, int p_73155_2_, int p_73155_3_, int p_73155_4_);
ChunkPosition findClosestStructure(World p_147416_1_, String p_147416_2_, int p_147416_3_, int p_147416_4_, int p_147416_5_);
int getLoadedChunkCount();
void recreateStructures(int p_82695_1_, int p_82695_2_);
/**
* Save extra data not associated with any Chunk. Not saved during autosave, only during world unload. Currently
* unimplemented.
*/
void saveExtraData();
}