How to Add Custom MLO Interiors to Your FiveM Server
Custom MLO interiors transform your FiveM server world. This complete guide covers installation, fxmanifest setup, common errors, and how to pair MLOs with scripts.
Custom MLO (Map Loading Override) interiors are one of the most visually impressive upgrades you can make to any FiveM server. They replace or add entirely new 3D interiors and buildings to GTA V's world — custom police stations, player-owned apartments, hospitals, nightclubs, criminal hideouts, and more. This guide covers everything you need to install them correctly.
What Is an MLO?
An MLO is a custom interior or exterior map addition that gets streamed to players through the FiveM server, just like custom vehicles. Players do not need to install anything — the files download automatically when they connect.
Common MLO additions on FiveM servers include:
- Custom police station interiors replacing the default LSPD building
- Apartment complexes with unique layouts players can own via housing scripts
- Custom hospitals and trauma centers for EMS roleplay
- Underground clubs and bars for criminal and entertainment RP
- Warehouses and hideouts for gang and faction RP
- Courthouses, city halls, and government buildings for political and legal RP
Understanding MLO File Types
| File Type | Purpose |
|---|---|
| .ymap | Map placement — where the interior exists in the world |
| .ytyp | Map type — defines what objects/props exist in the interior |
| .ytd | Texture files for the interior surfaces and props |
| .ydr | Static prop/model files |
| .yft | High-detail model files |
| fxmanifest.lua | FiveM resource definition |
Step 1: Organize the MLO Files
Create a resource folder with a stream/ subfolder:
resources/[maps]/my-mlo-name/
└── stream/
├── interior_mlo.ymap
├── interior_mlo.ytyp
├── interior_mlo.ytd
└── interior_mlo.ydr
All streaming files (.ymap, .ytyp, .ytd, .ydr, .yft) go inside the stream/ folder. Do not put them in the resource root.
Step 2: Create fxmanifest.lua
Create fxmanifest.lua at the root of the resource folder (not inside stream/):
fx_version 'cerulean'
game 'gta5'
description 'My Custom Interior MLO'
version '1.0.0'
files {
'stream/*.ymap',
'stream/*.ytyp',
'stream/*.ytd',
'stream/*.ydr',
'stream/*.yft',
}
Only include file type lines that have matching files in your stream/ folder. If there are no .yft files, remove that line.
Step 3: Add to server.cfg
MLOs have no framework dependencies and can be listed anywhere in your load order. Group them together for readability:
# ── Custom Interiors ────────────────────────────────────────
ensure mlo-police-station
ensure mlo-hospital
ensure mlo-apartments
ensure mlo-courthouse
Step 4: Test In-Game
Start your server, connect, and travel to the world coordinates where the MLO is placed. You should see the custom interior rendered in the world.
If you do not know the coordinates, check the MLO's README or documentation — the creator usually includes the world position.
Common MLO Problems and Solutions
The interior is completely invisible: The stream files are not loading. Double-check:
- All files are inside the
stream/folder (not the resource root) - File extensions in
fxmanifest.luamatch the actual files on disk - The resource started without errors in the server console
Textures are pink or purple:
The .ytd texture files are missing from stream/ or not listed in fxmanifest.lua.
Props inside the interior are floating or missing:
The .ytyp file is missing or incomplete. Make sure it is in the stream/ folder.
Server crashes when the MLO resource starts: The MLO files are corrupted or incompatible with the current FiveM version. Try downloading the MLO again from the source or checking if an updated version exists.
MLO is visible but in the wrong location:
The .ymap file contains incorrect world coordinates. This is a problem with the MLO itself — contact the creator or look for a corrected version.
MLO breaks nearby game world visuals: Some poorly made MLOs have incorrect LOD (level-of-detail) settings that affect surrounding geometry. Remove the MLO and find a higher quality version.
Pairing MLOs with Scripts
The real power of custom MLOs comes from pairing them with scripts that use their locations:
Housing scripts: A custom apartment MLO paired with a housing script (like qb-houses) lets players own and furnish the interior. The housing script needs the interior's entry coordinates and the interior ID to teleport players inside.
Job scripts: A custom police station MLO paired with a police job script creates a fully immersive starting point. The job script's config needs updated coordinates for locker room interactions, armory locations, and garage entrances.
Shop scripts: Custom store MLOs need their script interaction zones (NPC positions, menu trigger zones) adjusted to match the MLO's internal layout.
When you purchase scripts on ModForge that are designed to work with specific MLOs, the script documentation will specify which MLO it was built for and where to find it.
Performance Considerations
Too many MLOs can impact your server in two ways:
- First-connection download time increases because players must download all your streaming files
- Rendering performance can decrease in areas with many overlapping MLOs
Practical guidelines:
- 20–40 MLOs is typical for a well-rounded server
- Avoid stacking multiple large MLOs in the same section of the map
- Remove MLOs you are not actively using in scripts or RP
Browse MLO-compatible scripts and housing systems at modforge.xyz.