using VoxelEngine.World.Blocks; namespace VoxelEngine.World; public sealed class BlockRegistry { private readonly IBlock[] _byId; public AirBlock Air { get; } = new(); public StoneBlock Stone { get; } = new(); public DirtBlock Dirt { get; } = new(); public GrassBlock Grass { get; } = new(); public BlockRegistry() { // Index by id. Order does not matter; slot = block.Id. var blocks = new IBlock[] { Air, Stone, Dirt, Grass }; _byId = new IBlock[blocks.Length]; foreach (IBlock block in blocks) { _byId[block.Id] = block; } } public IBlock Get(ushort id) => _byId[id]; }