How do I install MLOs and custom maps on my FiveM server?
In this article
Want to give your FiveM server its own identity with custom interiors and map edits? Sooner or later you will end up with MLOs and ymap files. In this guide you install an MLO or custom map step by step on your MC-Node server: you set up the correct folder structure with a stream folder, write a proper fxmanifest.lua, upload the resource via SFTP and activate everything with ensure in your server.cfg. You will also learn how to fix the most common issues, such as interiors that refuse to load or players falling through the floor.
What is the difference between an MLO and a ymap?
Both modify the game world, but in different ways:
- Ymap — a placement file that adds or moves existing objects (props) in the world: fences, decoration, road blocks or an extra building on the outside. Light and simple; a single .ymap file is often all there is.
- MLO (Multi-Level Object) — a fully enterable interior with its own rooms, portals, collision and lighting. An MLO usually consists of several files: .ydr (models), .ybn (collision), .ytd (textures), a .ytyp (interior definition) and a .ymap (placement).
In short: a ymap places something, an MLO builds something you can walk into. The installation is almost identical, but an MLO is more error-prone because the .ytyp has to load correctly.
Step 1: Set up the correct folder structure
- Extract the downloaded MLO or custom map on your computer and check which files it contains.
- Create one resource folder with a short name without spaces or capital letters, for example
vanilla_hotel. - Put all streaming files (.ydr, .ybn, .ytd, .ytyp and .ymap) in a subfolder named
stream. - Place a file called
fxmanifest.luain the root of the resource.
The structure should look like this:
vanilla_hotel/
├── fxmanifest.lua
└── stream/
├── hotel_interior.ydr
├── hotel_interior.ybn
├── hotel_textures.ytd
├── hotel.ytyp
└── hotel.ymapA minimal, correct fxmanifest.lua for a map resource:
fx_version 'cerulean' game 'gta5' this_is_a_map 'yes'
The line this_is_a_map 'yes' tells FiveM that this resource contains world data, so the map reloads cleanly when the resource restarts. If the creator ships extra lines, such as data_file 'DLC_ITYP_REQUEST' 'stream/hotel.ytyp', simply keep them.
Step 2: Upload the resource via SFTP
- Connect to your server via SFTP. How to set that up is explained in SFTP with WinSCP or FileZilla.
- Navigate to the
resourcesfolder of your FiveM server. - Upload the complete resource folder, including the stream subfolder. You may also place the resource in a category folder such as
[maps]. - Using FileZilla? Before uploading, set Transfer → Transfer type → Binary. In ASCII or Auto mode FileZilla can corrupt binary files like .ydr and .ybn, and your interior will never load.
Small resources can also be uploaded through the Files tab in the panel, but for MLOs with large streaming files SFTP is more reliable. The general workflow is covered in How do I upload a script?
Step 3: Ensure the resource in server.cfg
- Open
server.cfgvia the Files tab in the panel (or via SFTP). - Add the line
ensure vanilla_hotel, using exactly the same name as your resource folder. - Mind the order: put map resources above scripts that depend on the interior, such as housing, garage or teleport scripts. A wrong ensure order makes such a script start while the interior does not exist yet.
- Save the file and restart your server via the Console tab.
- Check the console for
Started resource vanilla_hoteland walk to the location in-game.
Common problems
- Interior is invisible or not loading — First check the console to confirm the resource actually started. If it did, the files were often uploaded corrupted or the .ytyp is not being loaded: re-upload the entire stream folder in binary mode and verify that
this_is_a_map 'yes'is present in the fxmanifest.lua. - You fall through the floor — The collision file (.ybn) is missing or damaged. Compare the file sizes on the server with those on your PC; if they differ, the upload went wrong.
- Two MLOs at the same location — Flickering walls, duplicate doors or a pitch-black interior usually mean two resources modify the same building. Remove the ensure line of one of them and restart the server.
- Error about oversized assets — A console message saying an asset exceeded the size limit is almost always caused by heavy .ytd texture files. Use an optimised version or downscale the textures (for example from 4K to 2K); oversized maps also cause long loading times and client crashes.
- Script errors after adding the map — Check the order in server.cfg: the map resource has to load before the scripts that reference it.
Done!
Your server now streams your own MLOs and custom maps. Still stuck? Open a ticket via our support page and include the resource name and the exact error message from the console.
Launch your server in 60 seconds on our own hardware.