using System;
using TrueCraft.API.Logic;
namespace TrueCraft.API.World
{
// TODO: Entities
///
/// An in-game world composed of chunks and blocks.
///
public interface IWorld
{
string Name { get; set; }
IBlockRepository BlockRepository { get; set; }
IChunkProvider ChunkProvider { get; set; }
long Time { get; set; }
event EventHandler BlockChanged;
IChunk GetChunk(Coordinates2D coordinates);
byte GetBlockID(Coordinates3D coordinates);
byte GetMetadata(Coordinates3D coordinates);
byte GetSkyLight(Coordinates3D coordinates);
BlockDescriptor GetBlockData(Coordinates3D coordinates);
void SetBlockData(Coordinates3D coordinates, BlockDescriptor block);
void SetBlockID(Coordinates3D coordinates, byte value);
void SetMetadata(Coordinates3D coordinates, byte value);
void SetSkyLight(Coordinates3D coordinates, byte value);
void SetBlockLight(Coordinates3D coordinates, byte value);
bool IsValidPosition(Coordinates3D position);
void Save();
void Save(string path);
}
}