Guide ยท Server Setup

How to Install MLOs on a FiveM Server

A full walkthrough of installing any FiveM MLO โ€” understanding the file types (YMAP, YTYP, YBN, YDR, YTD), setting up the stream folder, removing conflicting vanilla buildings, and fixing collision issues. Works for every framework.

MLOs vs. Scripts โ€” A Different Beast

If you've already followed the scripts install guide, a lot of this will look familiar โ€” the folder still goes in resources/, and you still add an ensure line to server.cfg. But MLOs add two wrinkles that scripts don't have:

  • MLOs are streamed map data, not Lua code. They use a stream/ subfolder with binary GTA asset files (.ymap, .ytyp, .ybn, .ydr, .ytd) that the game loads into the world when a player gets close enough.
  • Some MLOs replace existing buildings โ€” the default GTA V world has to be "disabled" in that area, or you'll end up with the vanilla building clipping through the custom interior. This is the #1 source of "my MLO doesn't work" problems.

What You'll Need

  • Access to your FiveM server files โ€” SFTP, a web file manager, or direct disk access. Managed hosting providers include a file manager by default.
  • The MLO โ€” from the MLOs marketplace or a custom commission. The rest of this guide assumes you have the ZIP downloaded.
  • A text editor โ€” you'll edit fxmanifest.lua and server.cfg.
  • (Optional) CodeWalker โ€” a free open-source tool for inspecting and editing GTA V map files. Useful for verifying coordinates and identifying conflicting YMAPs. You don't strictly need it to install, but it's invaluable for troubleshooting.
๐Ÿ’ก Tip Before buying an MLO, confirm whether it replaces an existing building or adds a new one in empty space. Replacement MLOs (custom hospitals, police stations, mansions on vanilla lots) need the extra "remove default" step. Greenfield MLOs (new buildings in empty desert, rooftops) install like a script โ€” no removal needed.

Quick Reference

For the experienced:

  1. Extract the MLO folder into server-data/resources/[name]/
  2. Verify fxmanifest.lua declares files and data_file entries for every .ymap / .ytyp
  3. If it's a replacement MLO, ensure the "remove" YMAP is included (usually ships with the pack)
  4. Add ensure [name] to server.cfg
  5. Restart the server and walk the perimeter in-game to check for clipping

1Understand the MLO File Structure

Extract the MLO ZIP locally. You'll see a folder laid out something like this:

mansion-mlo/
โ”œโ”€โ”€ fxmanifest.lua
โ”œโ”€โ”€ stream/
โ”‚   โ”œโ”€โ”€ mansion_int.ytyp       # interior definition
โ”‚   โ”œโ”€โ”€ mansion_int.ymap       # placement in world
โ”‚   โ”œโ”€โ”€ mansion_exterior.ydr   # 3D geometry (exterior)
โ”‚   โ”œโ”€โ”€ mansion_interior.ydr   # 3D geometry (interior)
โ”‚   โ”œโ”€โ”€ mansion.ytd            # textures
โ”‚   โ”œโ”€โ”€ mansion_coll.ybn       # collision data
โ”‚   โ””โ”€โ”€ remove_vanilla.ymap    # (optional) disables original building
โ””โ”€โ”€ README.md

Quick primer on the file types you'll see:

  • .ymap โ€” map data: where things go in the world (object placements, LODs, occluders, interior portals).
  • .ytyp โ€” type definitions: describes rooms, interior geometry archetypes, portals, and what's inside each interior.
  • .ybn โ€” collision/bounds: the invisible walls that stop players falling through floors or walking through walls.
  • .ydr โ€” model: the actual 3D mesh you see.
  • .ytd โ€” texture dictionary: compressed textures packed into an atlas.
  • .ydd โ€” drawable dictionary: a group of .ydr models shipped together.

You don't need to touch these files directly โ€” FiveM loads them automatically once the resource is registered. But knowing what they are helps when troubleshooting missing textures, collision problems, or invisible walls.

2Upload the MLO to resources/

Upload the entire MLO folder (containing fxmanifest.lua and the stream/ subfolder) into your server's resources/ directory. Most server owners group MLOs into a [mlo] bracket folder for organization:

server-data/
โ””โ”€โ”€ resources/
    โ”œโ”€โ”€ [qb]/
    โ”œโ”€โ”€ [mlo]/
    โ”‚   โ”œโ”€โ”€ mansion-mlo/
    โ”‚   โ”œโ”€โ”€ custom-police-station/
    โ”‚   โ””โ”€โ”€ arcade-interior/
    โ””โ”€โ”€ advanced-housing-script/

FiveM recursively scans resources/, so the nesting is purely cosmetic. What matters is that the folder contains a valid fxmanifest.lua at its root.

โš ๏ธ Don't rename the stream folder FiveM specifically looks for a folder named stream/ (lowercase) inside the resource. If the MLO ships it as Stream/, streams/, or stream_files/, rename it to stream/ before uploading. Anything else won't be auto-streamed.

3Verify the fxmanifest.lua

Open fxmanifest.lua in your text editor. A valid MLO manifest declares both files and data_file entries for every YMAP and YTYP in stream/:

fx_version 'cerulean'
game 'gta5'

author 'DesignStudio'
description 'Custom Mansion MLO'
version '1.0.0'

this_is_a_map 'yes'

files {
  'stream/mansion_int.ytyp',
  'stream/mansion_int.ymap',
  'stream/remove_vanilla.ymap',
}

data_file 'DLC_ITYP_REQUEST' 'stream/mansion_int.ytyp'
data_file 'MAP_TYPES_FILE'   'stream/mansion_int.ymap'
data_file 'MAP_TYPES_FILE'   'stream/remove_vanilla.ymap'

The key lines:

  • this_is_a_map 'yes' โ€” flags the resource as map data so FiveM's streamer handles it correctly.
  • files { ... } โ€” every YMAP and YTYP must be listed (you don't need to list .ydr, .ytd, or .ybn โ€” those stream automatically from the stream/ folder).
  • data_file 'DLC_ITYP_REQUEST' โ€” registers each .ytyp as a type request.
  • data_file 'MAP_TYPES_FILE' โ€” registers each .ymap. Use this for both the main map and any "remove" YMAPs.

If your MLO's manifest is missing these entries, the files stream but the game doesn't know what to do with them โ€” you'll see the exterior mesh but no interior, or the interior will load without its type definition and render as a floating archetype of props. Fix: add the missing lines and restart.

4Handle Vanilla Building Replacement

This is where MLO installs most often go wrong. If the MLO replaces an existing GTA V building (custom Mission Row PD, Pillbox Hospital rework, Pacific Bank redesign), the original building's geometry and collision need to be removed โ€” otherwise both load simultaneously and you get clipping, floating props, and doors that open into solid walls.

If the MLO ships with a remove YMAP

Most well-built MLOs include a remove_*.ymap, disable_*.ymap, or similar file that flags the vanilla building as removed. The previous step's fxmanifest.lua example already registered it โ€” as long as this_is_a_map 'yes' is set and the YMAP is registered as a MAP_TYPES_FILE, FiveM will apply it on load.

If the MLO doesn't ship one

Some older or cheaper MLOs don't handle vanilla removal. You have two options:

  • Ask the seller. Marketplace MLO sellers fix this within an hour on average โ€” it's a free revision. The MLO marketplace gigs include revisions on every tier.
  • Use a community "interior remover" โ€” there are free tools that auto-generate the remove YMAP for any named vanilla building. Search the Cfx.re forums for "building remover" plus the building name.
โš ๏ธ Signs of a missing remove YMAP Walls clipping through the custom geometry, doors that lead into solid concrete, the original vanilla interior visible underneath the new one, two sets of furniture in the same room, collision that stops you from walking where the floor clearly is. All of these point to a failed removal.

5Add to server.cfg

Open server.cfg and add an ensure line for the MLO. Order matters less here than it did for scripts (MLOs don't depend on frameworks), but there's still one rule:

# server.cfg

# Framework first (if you run one)
ensure es_extended
ensure oxmysql
ensure ox_lib

# Scripts next
ensure qb-policejob
ensure advanced-housing-script

# MLOs last โ€” they stream regardless of what else runs
ensure mansion-mlo
ensure custom-police-station
ensure arcade-interior

Grouping MLOs at the bottom of server.cfg is a common convention โ€” it makes it easy to enable/disable a batch of map content without scrolling through framework and script entries. Nothing requires it, but it helps.

๐Ÿ’ก Conflicting MLOs in the same area If you install two MLOs that both claim the same vanilla building (e.g., two different Mission Row PDs), only one will "win" โ€” typically whichever loads last. Remove or disable one before adding the other, or you'll get visual artifacts that look like stream-order bugs but are actually two MLOs fighting for the same slot.

6Restart & Walk the Perimeter

Restart the server and join in-game. MLOs stream on approach โ€” they don't fully load until a player is within roughly 300 meters, so teleport or drive to the location before judging the result.

Once you're there, do a perimeter walk:

  • Walk the full exterior โ€” check for clipping walls, floating props, or missing chunks of the building.
  • Enter through every door the MLO describes โ€” each should load the interior cleanly, with proper collision and no "black void" loading gaps.
  • Walk every room of the interior โ€” look for invisible walls, ceilings you can see through, or collision that stops you in the middle of an open space.
  • Check the roof / basement if the MLO includes them.

First-load LOD pop-in is normal โ€” give the interior 5โ€“10 seconds on first entry for high-res textures and props to stream in. After the first entry it should load instantly on subsequent visits.

Troubleshooting

The MLO loads but the interior is empty / just the exterior

The .ytyp isn't registered. Open fxmanifest.lua and make sure every .ytyp file in stream/ has a data_file 'DLC_ITYP_REQUEST' line. Also verify this_is_a_map 'yes' is present at the top.

I can see the custom building AND the vanilla one clipping through

The remove/disable YMAP isn't working. Check: (1) the remove YMAP file is actually in stream/, (2) it's listed in both files { } and as a data_file 'MAP_TYPES_FILE', (3) no other resource is re-adding the vanilla building. If all three check out and it still clips, message the MLO's seller โ€” they usually have a pre-made fix.

Textures show as pink / checkerboard

The .ytd didn't stream. Verify the texture file is in stream/ (not a subfolder โ€” FiveM's auto-streamer doesn't recurse into stream/textures/, it expects everything flat inside stream/). Also check the filename matches what the .ydr expects โ€” case-sensitive on Linux servers.

Invisible walls / collision where it shouldn't be

The .ybn file doesn't match the .ydr. This almost always means a mismatched version โ€” the MLO's YDR was updated but the YBN wasn't regenerated. Re-download the MLO (in case the seller pushed a fix), and if it's still wrong, message the seller for a corrected collision file.

Can walk through the floor / fall out of the world

Missing or broken .ybn. Different failure than the above: here the collision file is entirely absent, not mismatched. Check stream/ for .ybn files โ€” if there are none, the MLO was shipped broken. Request a fix from the seller.

Teleport script puts me outside the interior

The teleport script's coordinates don't match the MLO's entry points. Open your teleport/door-lock script's config and update the coordinates to match the MLO's documented entry points. Most marketplace MLOs list exact entry coordinates in the README. If not, fly to the entry point in-game with a devmode tool and read the coords off the HUD.

The server crashes or freezes on startup after adding the MLO

Usually a malformed YMAP or a YTYP conflict. Isolate: remove the new MLO from server.cfg, restart, confirm the server boots. Then add the MLO back and watch the console as it loads โ€” the line right before the crash names the file that failed. Forward it to the seller. Before contacting the seller, also check if another recently-added resource is using the same archetype IDs.

LOD pop-in never stops / props appear and disappear

The MLO's LOD chain is incomplete or the YMAP's lodDist values are too low. This is a building-quality issue โ€” ask the seller for a revision. Temporary workaround: reduce your server's population_density to free up streaming bandwidth, which sometimes masks the problem.

Performance drops after installing multiple MLOs

Each MLO contributes to streaming bandwidth and draw calls. Use FiveM's client-side profiler to see what's eating frame time. If your server targets low-end clients, stick to MLOs that ship LOD meshes and avoid stacking more than 5โ€“6 heavy interiors in a single area. Consider upgrading to a dedicated server if streaming is the bottleneck โ€” VPS setups can choke when many players load a heavy MLO at the same time.

Next Steps

Now that MLO installs are familiar, here's where to take your server next:

  • Browse more MLOs โ€” the MLO marketplace has mansions, police stations, hospitals, gang houses, businesses, arcades, courthouses and more. Every listing ships with installation docs and free revisions.
  • Pair MLOs with matching scripts โ€” a custom mechanic shop MLO goes well with the mechanic job script; a hospital MLO with the EMS script. The interior and the gameplay loop were often designed to work together.
  • Commission a custom MLO โ€” the custom MLO development gig builds interiors to your exact spec, including matching the layout of any existing script you run.
  • Upgrade hosting if needed โ€” heavy MLO servers benefit from managed cloud hosting or a dedicated server to handle the extra streaming load.
  • Installing other asset types โ€” see the scripts install guide. Weapons, vehicles and clothing follow the same stream/ pattern MLOs use.

FAQ

Can I install multiple MLOs in the same area?

Yes, as long as they don't both try to replace the same vanilla building. Two MLOs that each add new geometry in empty space coexist fine. Two MLOs that both claim the same lot (e.g., two different Mission Row PDs) will conflict โ€” pick one.

Do MLOs work on any FiveM server framework?

Yes. MLOs are pure map data and have no framework dependency. An MLO works identically on ESX, QBCore, QBox, and standalone servers โ€” it's the scripts that interact with it (door locks, job zones, teleports) that care about the framework.

How do I find the entry coordinates of an MLO?

Check the README first โ€” most marketplace MLOs document entry points explicitly. If it's not documented, load the MLO on a test server and fly to each entry point in noclip with a devmode tool; the in-game HUD shows your exact x, y, z. Open CodeWalker and load the .ymap if you want to inspect every portal/door without being in-game.

Why is my MLO invisible from far away but loads when I get close?

Normal streaming behavior. FiveM only loads the full interior geometry when a player is within roughly 300 meters; from farther away you see the exterior LOD only. If the exterior LOD itself is missing, that's an incomplete MLO โ€” ask the seller for a version with LOD meshes.

Can I edit an MLO's layout after buying?

Yes, with the right tools โ€” CodeWalker can edit YMAPs and YTYPs visually, and you can swap props, move walls, and re-export. Most sellers allow buyers to modify MLOs for use on their own server. The standard work-for-hire restriction still applies: you can't repackage and resell the modified MLO as your own product.

The MLO showed up on a video but not on my server. What gives?

Usually a client-side mod the video creator had that your server doesn't. MLOs are server-streamed, so they should work for every connected player โ€” but some creators film on a client with extra standalone map mods layered on top (overlay packs, enhanced vanilla replacements). Confirm with the seller whether the MLO is self-contained.