3 · Benches & Access

Create fixed and portable benches, control access, manage props and integrate organization ownership.

Bench Types

Bench Types

The runtime normalizes benches into four main modes:

Type Purpose
craft Standard item crafting
blueprint Blueprint drafting/creation
stash Storage-focused bench
weapon Weapon preview/component workflow

Older labels such as general, illegal or military can still be used as recipe organization concepts, but the current bench runtime normalizes the operational mode to the types above.

The bench type controls which interface and server validation path is used.

Fixed Benches

Fixed Benches

Fixed benches are persistent world benches stored in:

nord_crafting_fixed

They contain:

Admin Studio provides placement mode for creating fixed benches in-world.

After changes, the bench cache is reloaded and synchronized to clients.

Portable Benches

Portable Benches

Portable benches are enabled in:

Config.Portable = {
    Enabled = true,
    ItemName = 'craft_bench',
    Default = {
        label = 'Bancada Portátil',
        model = `prop_tool_bench02`,
        access = { type = 'public' },
        recipes = { ... },
        stash = { enabled = true, slots = 20, weight = 20000 },
        expiresMinutes = nil
    }
}

Placed portable benches are stored in:

nord_crafting_placed

Inventory requirement

If portable benches are enabled, the active inventory must contain the item named by Config.Portable.ItemName.

Expiration

expiresMinutes can be used to create temporary placed benches. nil means no configured expiration from this default.

Access Control · Public, Job & Gang

Access Control · Public, Job & Gang

Public

access = { type = 'public' }

Any player can use the bench, subject to normal distance and recipe validation.

Job

access = {
    type = 'job',
    jobs = { 'police', 'mechanic' },
    minGrade = 2
}

Supported on QBCore and ESX.

Gang

access = {
    type = 'gang',
    gangs = { 'ballas', 'lostmc' },
    minGrade = 1
}

Gang access is built into the QBCore bridge.

Normalization

The access resolver accepts common forms such as list, plural keys (jobs, gangs), singular keys, names and comma/space-separated strings.

Organization Access · Nord Crime / OpCrimes

Organization Access · Nord Crime / OpCrimes

Config.CrimeBridge = 'auto'

In automatic mode, Crafting prefers nord_crime when available and can fall back to op-crime.

Organization access

access = {
    type = 'org',
    orgId = 12
}

The player's organization state is checked server-side.

Nord Crime-specific modes

The bridge supports Nord Crime organization access patterns including:

Bench creation exports

Nord Crime or another compatible server resource can create organization benches using:

exports['nord_crafting']:CreateNordCrimeOrgBench(orgId, data)
exports['nord_crafting']:CreateOrgBench(orgId, data)
exports['nord_crafting']:AddOrgCraftingBench(orgId, data)

These aliases call the same organization bench creation implementation.

Bench Props & Placement

Bench Props & Placement

Nord Crafting loads bench prop catalogs from:

models/default_props.json
models/custom_props.json

The Admin Studio can also manage custom prop entries stored in:

nord_crafting_props

Placement

Admin placement spawns the selected model in-world and stores coordinates/heading when confirmed.

Target interaction

Spawned bench entities are registered through the target bridge when a supported target is active.

Restart behavior

On Crafting restart, the client clears spawned bench entities/cache and requests a fresh synchronization from the server, reducing stale world props after resource restarts.