public IBlock GetBlock(int x, int y, int z) { if (y < 0) { throw new InvalidOperationException($"Cannot get a block with a negative Y value."); } if (y > Height) { throw new InvalidOperationException($"Cannot get a block with a Y value higher than {Height}."); } int sectionIndex = GetSectionIndex(y); IChunkSection section = GetSection(sectionIndex); return(section.GetBlock(x, y % Size, z)); }