Documentation
FiveM Resource Structure
fxmanifest.lua, the stream/ folder, and what FiveM needs to load.
FiveM loads resources from a folder (or ZIP) that must contain an fxmanifest.lua (or legacy __resource.lua) at the root. For a vehicle addon the minimal structure looks like this:
my_vehicle/
├── fxmanifest.lua
└── stream/
├── my_vehicle.yft
├── my_vehicle_hi.yft # high-LOD, optional but recommended
├── my_vehicle.ytd
├── vehicles.meta
├── handling.meta
├── carvariations.meta
└── carcols.metaA minimal fxmanifest.lua for a vehicle addon:
fx_version 'cerulean'
game 'gta5'
data_file 'VEHICLE_METADATA_FILE' 'stream/vehicles.meta'
data_file 'HANDLING_FILE' 'stream/handling.meta'
data_file 'VEHICLE_VARIATION_FILE' 'stream/carvariations.meta'
data_file 'CARCOLS_FILE' 'stream/carcols.meta'
files {
'stream/*.yft',
'stream/*.ytd',
}data_file entries means the meta files are never loaded — the vehicle will spawn but may behave incorrectly or use default handling.Frequently asked questions
What is fxmanifest.lua?
It's the manifest at the root of every FiveM resource that tells the server what to load — the fx_version, the game, the streamed files, and the data_file entries for your meta files. The older __resource.lua name still works, but fxmanifest.lua is current.
Why are my meta files being ignored?
If you don't declare each one with a data_file line (VEHICLE_METADATA_FILE, HANDLING_FILE, VEHICLE_VARIATION_FILE, CARCOLS_FILE), FiveM never loads them — the vehicle spawns but uses default handling and no liveries. PackBench writes these lines for you.
What goes in the stream/ folder?
The streamed game assets: your .yft (and optional _hi.yft high-LOD), .ytd, and the vehicle .meta files. FiveM streams anything matched by the files{} block in fxmanifest.lua.
Can I ship a resource as a ZIP?
Yes — FiveM loads a resource from a folder or a ZIP as long as fxmanifest.lua is at the root. PackBench outputs exactly this, streaming-ready.
Discussion