package electrosphere.server.terrain.generation.interfaces;

import electrosphere.server.terrain.manager.ServerTerrainChunk;
import electrosphere.server.terrain.models.TerrainModel;

/**
 * An interface for generating chunks. Used to isolate different algorithms for getting chunks from one another.
 */
public interface ChunkGenerator {
    
    /**
     * Generates a chunk given an x, y, and z
     * @param worldX The x component
     * @param worldY The y component
     * @param worldZ The z component
     * @return The chunk
     */
    public ServerTerrainChunk generateChunk(int worldX, int worldY, int worldZ);

    /**
     * Sets the terrain model for the generation algorithm
     * @param model The terrain model
     */
    public void setModel(TerrainModel model);

}
