Call of Duty Map Export in Blender 2.8x and 2.9x

Hi. Is there an addon for exporting COD 1 levels from new blenders? For 2.79 there is a standard add-on for exporting to Map files.
2.79\scripts\addons_contrib\io_scene_map This Addon.
bl_info = {
“name”: “Quake/Doom3 MAP format”,
“author”: “Campbell Barton, scorpion81, Bastien Montagne, motorstep”,
“version”: (2, 1, 0),
“blender”: (2, 6, 9),
“location”: “File > Export”,
“description”: "Export MAP brushes, nurbs surfaces, "
“lamps and empties as map nodes”,
“warning”: “”,
“wiki_url”: “http://wiki.blender.org/index.php/Extensions:2.6/Py/
“Scripts/Import-Export/Quake_MAP”,
“tracker_url”: “https://developer.blender.org/maniphest/task/edit/form/2/”,
“category”: “Import-Export”}

for ob in obs_surf:
‘’’
Surf, patches
‘’’
data = ob.data
surf_name = data.name
mat = ob.matrix_world * SCALE_MAT

        # This is what a valid patch looks like
        """
        // brush 0
        {
        patchDef2
        {
        NULL
        ( 3 3 0 0 0 )
        (
        ( ( -64 -64 0 0 0 ) ( -64 0 0 0 -2 ) ( -64 64 0 0 -4 ) )
        ( ( 0 -64 0 2 0 ) ( 0 0 0 2 -2 ) ( 0 64 0 2 -4 ) )
        ( ( 64 -64 0 4 0 ) ( 64 0 0 4 -2 ) ( 80 88 0 4 -4 ) )
        )
        }
        }
        """
        for i, nurb in enumerate(data.splines):
            u = nurb.point_count_u
            v = nurb.point_count_v
            if u in valid_dims and v in valid_dims:

                fw('// brush %d surf_name\n' % i)
                fw('{\n')
                fw('patchDef2\n')
                fw('{\n')
                fw('NULL\n')
                fw('( %d %d 0 0 0 )\n' % (u, v))
                fw('(\n')

                u_iter = 0
                for p in nurb.points:

                    if u_iter == 0:
                        fw('(')

                    u_iter += 1

                    # add nmapping 0 0 ?
                    if PREF_GRID_SNAP:
                        fw(" ( %d %d %d 0 0 )" %
                                   round_vec(mat * p.co.xyz))
                    else:
                        fw(' ( %.6f %.6f %.6f 0 0 )' %
                                   (mat * p.co.xyz)[:])

                    # Move to next line
                    if u_iter == u:
                        fw(' )\n')
                        u_iter = 0

                fw(')\n')
                fw('}\n')
                fw('}\n')
                # Debugging
                # for p in nurb: print 'patch', p

            else:
                print("Warning: not exporting patch",
                      surf_name, u, v, 'Unsupported')

    if obs_mesh or obs_surf:

There is such a code that should export the patch mesh if I understand correctly. How to export it correctly?
No matter how much I try, I only get the geometry brush.