FiveM Streamed Clothing Components Explained: Drawables, Textures and the mp Numbering That Trips Everyone

FiveM Streamed Clothing Components Explained: Drawables, Textures and the mp Numbering That Trips Everyone

If you have ever streamed a jacket onto your server and watched it render as a plain t-shirt, or shipped a clean texture pack only to find your players walking around with invisible arms, the problem is almost never the model itself. It is the numbering. fivem clothing components are driven by a strict slot-and-index system that GTA V inherited from single player, and every appearance menu, every custom YDD and every database row has to agree on the exact numbers. This guide breaks down the component model, the difference between components and props, how custom clothing is actually streamed, and the specific failures that the mp_freemode numbering causes.

The Ped Component Model

Every ped exposes twelve numbered component slots, indexed 0 to 11, set in script via SetPedComponentVariation(ped, componentId, drawableId, textureId, paletteId). Servers touch eleven of them routinely for clothing:

The reason “my jacket shows as a t-shirt” is so common: the upper body is split across three slots. Slot 3 defines the arms, slot 8 defines the undershirt that fills in around the neck and waist, and slot 11 is the actual outer top. A jacket modeled for slot 11 that gets assigned to slot 8 renders as the wrong garment entirely.

Components vs Props

Props are a separate system from components. They are anchor-attached accessories set with SetPedPropIndex(ped, propId, drawableId, textureId, attach): 0 hats and helmets, 1 glasses, 2 ears and earpieces, 6 watches, 7 bracelets. The critical thing to internalize is that both components and props use a pair of numbers: a drawable id (which model variant) and a texture id (which skin/color of that variant). A hat at drawable 4 texture 2 is a completely different item from drawable 4 texture 0. Mixing up which number is the drawable and which is the texture is the most frequent integration bug.

How Custom Clothing Is Streamed

Custom clothing ships as a resource — typically an addon-ped or clothing stream — containing the GTA asset files plus a meta that maps them onto the freemode ped. The asset files are YDD drawable dictionaries (the geometry, e.g. uppr_000_u.ydd) and YTD texture dictionaries (the materials, e.g. uppr_diff_000_a_uni.ytd). The meta — commonly mp_m_freemode_01.meta and a matching shop_clothes.meta — tells the engine which drawable number each YDD occupies and how many texture variants each one has. Clothing toolchains (the various clothing-tool / EUP generators) exist precisely to build these meta files automatically, because hand-writing the numbering is where most packs break.

The mp Numbering and post_ / base Offsets

There are two base freemode models: mp_m_freemode_01 (male) and mp_f_freemode_01 (female), and addon clothing must be authored per gender. Here is the offset trap. The base game already occupies drawable indices 0 through whatever the stock count is for each slot. When you add clothing rather than replace it, your streamed drawables are appended after that base count — the “post” range. So drawable 0 inside your pack is not global drawable 0; it is base-count plus zero. If your meta declares one numbering but the appearance menu saves the global number, the saved value lands on a different garment — which is the underlying cause of the t-shirt/jacket swap and of items that “shift” by a fixed amount after you add a second pack. Always confirm whether your toolchain emitted base (replacement, low indices) or post_ (additive, offset indices) numbering before you let players save anything.

How Appearance Menus Reference These Numbers

Menus like illenium-appearance, fivem-appearance and qb-clothing are just front-ends over the same natives. When a player picks a jacket, the menu calls SetPedComponentVariation with a component id, drawable id and texture id, then writes those integers to the database — illenium-appearance and fivem-appearance persist a row per player in their appearance/skins table, while qb-clothing stores a JSON skin blob in the players table. On respawn the framework reads those exact numbers back and reapplies them. This is why a numbering mismatch is sticky: the wrong number gets baked into the save, so the item is wrong every time that character spawns until you fix the data, not just the stream.

Common Bugs and Fixes

A Practical Install and Test Flow

When a saved outfit stops matching

A component number, a drawable index and a texture variation identify different parts of an outfit. If clothes change after a game-build update, also check how the appearance resource stores clothing collections and global drawable IDs. The FiveM clothing conflict checklist separates those ID changes from torso/top mismatches and missing texture files, with a repeatable staging test.

Related posts

Clothing Packs and Download Size: Duplicate Textures, YTD Weight and a Wardrobe That Streams
Guide
Clothing Packs and Download Size: Duplicate Textures, YTD Weight and a Wardrobe That Streams
Why Does ESX Skin Data Break When You Change Clothing Scripts?
Guide
Why Does ESX Skin Data Break When You Change Clothing Scripts?
Converting GTA V Singleplayer Mods for FiveM: Clothing, Vehicles, Props and What Actually Ports
Guide
Converting GTA V Singleplayer Mods for FiveM: Clothing, Vehicles, Props and What Actually Ports
Published · Jun 29, 2026 Read more posts →