How Integrations Work#
Nothing inside Crafting Creator talks to your framework or inventory directly. Every call goes through a bridge — a small, unencrypted Lua file per framework and per inventory — and the right bridge is picked at start-up from the resources that are already running.
Layer | Supported | Without it |
|---|---|---|
Framework |
| Required — the resource will not load. |
Inventory |
| Standalone: no item list, so no recipes. Meant for testing only, and it says so in the console. |
Target |
| A 3D prompt over the bench and the |
Gangs | QBCore / Qbox gangs · | The gang list in the creator is empty; job benches still work. |
Notifications · HUD |
| Notifications from the crafting interface itself; only the minimap is hidden. |
3D prompt |
| A plain GTA-style 3D text. |
Skill system |
| The built-in crafting level. |
Detection happens once, when the resource starts, and only sees resources that are already started. Anything listed above must be
ensured beforeqs-crafting.
Frameworks#
Config.Framework is filled in automatically: es_extended loads the esx bridge, and qb-core or qbx_core load the qb bridge — Qbox through its QBCore compatibility layer. The bridges live in custom/esx/ and custom/qb/, one server.lua and one client.lua each.
Bridge function | Used for |
|---|---|
| Who owns a queued craft, and the name in the crafting window. |
| Bench access. |
| The job and gang lists, with grades, in the creator. |
| Access to the creator. |
| Recipe prices and refunds. |
| Counting and taking ingredients, delivering the result. |
| Reading and saving the crafting level in |
Running a renamed or heavily modified framework? Set Config.Framework = 'esx' or 'qb' by hand in config/main.lua, then adjust the matching bridge — for example the export name at the top of the file — so every function above returns what your framework has.
Money#
Recipe prices are taken from Config.MoneyType:
Value | ESX | QBCore / Qbox |
|---|---|---|
| Cash account |
|
| Bank account |
|
| Black money account | The worth of the player's |
Inventories#
The inventory decides which items exist: recipes, ingredients, labels and pictures all come from its item list, loaded once at start. Each one has a server bridge in server/custom/inventory/ and a client bridge in client/custom/inventory/.
Inventory | Pictures from | Attachments |
|---|---|---|
|
| Its own attachment and tint configuration. An item's |
| The | ox_inventory components on the weapon. |
|
| Needs |
|
| Weapon components read from the item. |
If your pictures live somewhere else, change the image path at the top of that inventory's server bridge.
Targets and the Prompt#
With Config.UseTarget = true, every bench gets a box zone the size of its Distance, with one option, Open Crafting Table, reachable from 2.5 metres. ox_target is used when it is running, otherwise qb-target. The zones live in client/custom/target/main.lua, where the icon, label and reach can be changed.
With false, standing in the zone shows “Press E to open the crafting table” over the bench — drawn by qs-textui when it is running, otherwise as plain 3D text.
Notifications, Progress and the HUD#
All three live in custom/client.lua, unencrypted, so they can point at whatever your server uses:
Function | By default |
|---|---|
| qs-interface notifications when it is running; otherwise the crafting interface's own. An |
| Hides the minimap and the qs-interface HUD while a bench is open. Add your own HUD's hide and show call here. |
| The ox_lib progress circle of proximity crafting, styled by |
-- custom/client.lua — using ox_lib notifications instead
function Notification(msg, type)
lib.notify({ title = 'Crafting', description = msg, type = type })
endSkill Systems#
qs-inventory skills#
Servers using the skill system built into qs-inventory can make crafting share it:
Config.UseAdvancedInventorySkill = trueThe level shown and checked at the bench is then qs-inventory's, and crafting XP is added to it. If qs-inventory's skills are not active, the option switches itself off at start with the warning Advanced inventory skill is not active, and the built-in level is used.
Other skill and perk scripts#
A skill script such as pn-skills can award its own XP and give perks — faster crafts, fewer materials, bonus output — through the hooks in server/custom/hooks.lua. Commands and Exports has the full reference.
Discord Logs#
Crafting activity can be posted to a Discord channel as embeds. Paste a webhook URL in server/webhooks.lua:
-- server/webhooks.lua
Config.ShowWebhookIP = false -- true shows the player's IP in each log
_G['webhook'] = {
general = 'https://discord.com/api/webhooks/...',
}Log | Posted when |
|---|---|
Crafting Item Started · Proximity Craft Started | A craft begins — item, amount, duration and the ingredients taken. |
Crafting Item Added · Proximity Craft Finished | An item is delivered — amount and XP earned. |
Crafting XP Earned | XP is added to a player. |
Each log carries the player's name, server id, identifier and their Steam, Discord, license, Xbox and FiveM ids. Logs are queued and sent in order, pausing as Discord's rate limits require, so they never hold up a craft. Leave the URL empty to turn logging off.
Languages#
41 translations ship in locales/: ar bg bn ca cs da de el en es et fa fi fr he hi hr hu id it ja ko lt lv ms nl no pl pt ro ru sk sl sv sw th tr uk ur vi zh. Pick one with Config.Locale. The same file translates the crafting window, the creator and the Discord logs.
To add a language, copy locales/en.json to a new file named after its code, translate the values, and set Config.Locale to that code. Any key missing from a translation falls back to English, and the console names it so it can be added.



