Troubleshooting
Every failure mode surfaces in the debug overlay. Open it with /decals_debug (admin-only; /decals_debug <serverId> opens it on another player's screen so they can read values to you), then check the cards top to bottom.
1. DECALS.DAT PROBE says FAILED
The decal types from rm_decalv_assets never registered in this session, so nothing can render no matter what else is right. Two causes:
The player joined while
rm_decalv_assetswasn't running. Its decal types mount when the game level loads, i.e. at join. Make sure it starts at boot, then have the player reconnect. Restartingrm_decalv_assetsdoes not fix already-connected players.Another resource owns the level meta. Check the GTA5.META OWNERS card: it must say
rm_decalv_assets (expected). If a map/meta resource is listed instead, it wins thereplace_level_metaconflict. Load it beforerm_decalv_assetsor remove its override.
2. DECAL TYPE SLOTS shows 31 instead of 280
Milder form of check 1, same causes: the player joined while rm_decalv_assets wasn't running, either because it never started at boot or because it was being restarted at that moment. The session then falls back to the game's own 31 built-in decal types, so decals render but only 31 distinct textures fit. Start rm_decalv_assets at boot, leave it running, and have the affected player reconnect to restore the full 280.
3. CATALOG isn't "Loaded"
The client never received the catalog. Read the server console from the last rm_decalv start:
File not found: [x.webp]means the entry was pruned; the image is missing fromrm_decalv/assets/.[x] has an unsupported file extensionmeans only webp/png/jpg are accepted (gif when enabled).A Lua error in
decals.luastops the whole catalog. Fix the syntax and restart.
4. One specific decal is blank
While placing, a small preview sprite sits in the bottom-right corner showing the raw texture. Read it like this:
Sprite visible, decal missing: the texture is fine; the decal types didn't register in this session. Back to checks 1 and 2.
Sprite blank too: the texture never resolved. Wrong
textureDict/textureName, the ytd isn't inrm_decalv_assets/stream/, or the dict was updated without players reconnecting. For image-file decals, check the RUNTIME TEXTURE POOL card: a full bucket (e.g.512² 16/16) means too many distinct image decals are in range at once, so move the pack into a dictionary (recommended method).
5. Decals exist but don't draw right now
The RENDERING card counts what's loaded vs what's drawn:
Graffiti rows > rendered: the extras are beyond
cfg.rendering.distanceor overcfg.rendering.graffitiBudget(farthest drop first).Sticker vehicles tracked > 0, rendered 0: the vehicles are out of render range, or currently hidden by visibility culling (blocked from view / behind the camera); they redraw as soon as they come back into view.
Only one player affected: ask them to open the catalog and check the gear icon: players can turn sticker and graffiti rendering off for themselves, and the choice persists between sessions.
6. Decals vanish near a specific vehicle (ENGINE says Stalled)
The ENGINE cell in the status strip probes live whether GTA's decal engine is accepting new decals. If it reads Stalled, some vehicle model on your server is overloading the engine: unoptimized high-poly conversions make every decal cost many times more than it should, and past a budget the engine stops creating any new decals in that player's game (all decal types, other scripts' decals included) until the load drops. The stall is per client, but every player who renders that vehicle's stickers hits the same wall on their own screen, so in practice it reads as server-wide. Typical symptoms: previews stop rendering near a certain car, stickers on healthy cars blink out and return when that car is stored.
The script protects itself automatically (it sheds load and recovers), but the real fix is finding and blacklisting the model:
Add
cfg.dev = truetocfg.luaand restart the resource.Run
/decals_meshprobe <model>for a suspect, or/decals_meshprobe allto sweep every vehicle model on the server (takes a while;/decals_meshprobe stopaborts).The run ends with a summary and ready-to-paste
cfg.blacklistModelslines for every model that stalled the engine. Paste them, removecfg.dev, restart.
For the vehicle's creator: the fix on their side is lowering body-panel polygon density, adding real LODs, and making the collision match the visible body. Vanilla-quality models pass the probe with a wide margin.
7. Flip switch is greyed out
Expected in three cases: the decal is a GIF (no flip variant exists), the texture dictionary has no <dict>_f twin (build one with ytd-flip), or you're placing on a wall (graffiti has no flip).
8. Console warnings worth acting on
Since 3.3.0 routine self-healing messages sit behind verbose logging so consoles stay quiet; run setr ox:printlevel:rm_decalv verbose (before resource start) when you want the full diagnostic stream. The warnings below always print:
decal capacity: X of 280 slots...: see check 2.Asset ... uses N MiB of physical memory: a custom ytd is oversized; split it into smaller dictionaries.no texture source registered for x.webp: a placed decal's catalog entry was removed. Delete the orphaned decal from the admin panel or restore the entry.N asset file(s) not referenced by decals.lua: imported files whose snippet never got pasted. Paste the entries or delete the files.
Still stuck? Open a ticket in our Discord with your server console output and a screenshot of the debug overlay. Those two cover nearly every case.
Last updated