3 · Benches & Access
Create fixed and portable benches, control access, manage props and integrate organization ownership.
- Bench Types
- Fixed Benches
- Portable Benches
- Access Control · Public, Job & Gang
- Organization Access · Nord Crime / OpCrimes
- Bench Props & Placement
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:
- Label.
- Prop/model.
- Coordinates and heading.
- Bench type.
- Access JSON.
- Assigned recipe/blueprint IDs.
- Stash configuration.
- Creator and creation timestamp.
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.
- With Nord Inventory, use the supported auto-install workflow and verify the item exists after setup.
- With other inventories, create/register the item manually.
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:
- Direct organization ID.
zone_ownermode.org_typemode.
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.