Troubleshooting

Nearly every jj-radial support ticket is one of the first two entries. Start there.

The radial looks unchanged / customisation does nothing

The ox_lib patch hasn't been applied, or an ox_lib update overwrote it. This is by far the most common issue.

Symptoms, all at once:

  • The radial still looks like stock ox_lib.
  • The Customize tab says "Open your radial menu first to see available items" no matter how many times you open it.
  • Hiding, reordering and accent colours appear to save but change nothing.
  • Hold-vs-toggle mode does nothing.
  • Custom shortcuts do appear — because those go through lib.addRadialItem — but render in the stock UI.

Fix: re-apply the patch to ox_lib/resource/interface/client/radial.lua, then restart ox_lib and jj-radial. To confirm it's live, that file should contain exports['jj-radial']:Render(data).

⚠️

Re-check this after every ox_lib update. Updating ox_lib restores the stock file and silently disables jj-radial.

Buttons in the settings panel do nothing

The folder has been renamed. The NUI posts back to https://jj-radial/..., so if the resource folder isn't exactly jj-radial, every callback fails silently — no console error, no visible effect.

Fix: rename the folder back to jj-radial.

Client-side error on a Qbox server

On a pure Qbox server with no qb-core present, client/functions.lua throws while loading and the whole client side of jj-radial stops.

The cause is in the qbx branch of the detection block:

if GetResourceState('qbx_core') == 'started' then
    Framework = 'qbx'
    QBCore = exports['qb-core']:GetCoreObject()   -- fails: qb-core isn't running

Fix: delete that QBCore = ... line. The variable is never used anywhere in the file, so removing it is safe. client/functions.lua is unencrypted.

There's no keybind for jj-radial in the settings menu

Correct — there isn't one, and there shouldn't be. The radial keybind belongs to ox_lib, not jj-radial.

Players rebind it under FiveM → Settings → Key Bindings, looking for the ox_lib entry (default F1). Searching for "radial" or "jj" there will find nothing.

Icons are blank boxes

Font Awesome ships with the resource, so this is almost always a bad icon name rather than a loading problem. Check the icon exists in the free Font Awesome set — Pro-only icons render as blank boxes.

If every icon is blank, the font files didn't deploy. Confirm html/webfonts/ contains the four fa-*.woff2 files and that html/vendor/fontawesome.min.css is present, then restart the resource.

Working as designed. Both apply to the root ring only — submenu contents are passed straight through as the owning resource defined them.

An entry from another resource isn't in the menu

  1. Check it isn't hidden — open /radialsettings → Customize and look for it in the hidden state.
  2. Confirm the owning resource actually started, and started after ox_lib.
  3. Entries added conditionally (job-locked, item-locked) only appear when their condition is met — that's the owning resource's logic, not jj-radial's.

Resetting a player's settings

Either have them hit Revert To Default in the panel, or delete their row:

DELETE FROM jj_radial_settings WHERE citizenid = 'ABC12345';

They'll get defaults on next login.

Settings save on every click

There's no Save button by design — each change writes straight to the database. Dragging the colour picker fires a write per movement, so a player fiddling with colours generates a burst of small writes to their own row.

Harmless on any normal server, but worth knowing if you're watching query volume.

💡

Still stuck? Bring your F8 console output to Discord — the framework detection line jj-radial prints on join ([jj-radial] client: framework=...) is usually the first useful clue.