Create new Placeable Workbenches

Placeable Workbenches

Placeable workbenches are portable crafting stations that players can purchase, place in the world, and pick up later. This guide covers how to configure a new placeable workbench from scratch.

Overview

Placeable workbenches differ from static stations in that:

  • Players purchase them from a shop ped (configured in Config.Shops)

  • They can be placed anywhere in the world

  • They persist in the database and can be picked up

  • They support permissions (owner can grant/revoke access to other players)

  • They have crafting history tracking


Step 1: Create the Item in Your Inventory

First, add the workbench item to your inventory system.

ox_inventory

Add to ox_inventory/data/items.lua:

['industrial_workbench'] = {
    label = 'Industrial Workbench',
    weight = 50000,
    stack = false,
    close = true,
    description = 'A heavy-duty industrial workbench for advanced crafting'
},

QBCore

Add to qb-core/shared/items.lua:


Step 2: Configure the Placeable Workbench

Open configs/config.lua and add your workbench to the PlaceableWorkbenches table:

Configuration Options

Option
Type
Description

label

string

Display name shown in UI and interactions

type

string

Workbench type for per-workbench leveling system

prop

string

GTA V prop model name to spawn when placed

recipes

table

Array of recipe table names from configs/recipes.lua

techTrees

table

Array of tech tree names from configs/techtrees.lua

job

table

Optional job restriction { name = 'jobname', minGrade = 0 }

gang

string

Optional gang restriction (QBCore only)

CraftingBehavior

table

Optional overrides for crafting behavior settings


Step 3: Add to Shop (Optional)

If you want players to purchase the workbench from an NPC, add it to a shop in Config.Shops:


Step 4: ox_inventory Export (Important)

For ox_inventory users, you must register the item as useable. sd-crafting automatically creates an export for each placeable workbench.

The export naming convention is:

Where <ItemName> is your item name with the first letter capitalized.

Examples

Item Name
Export Name

workbench

sd-crafting.useWorkbench

advanced_workbench

sd-crafting.useAdvanced_workbench

industrial_workbench

sd-crafting.useIndustrial_workbench

Registering in ox_inventory

In ox_inventory/data/items.lua, make your item export to sd-crafting:


Step 5: Configure Leveling (Optional)

If using per-workbench-type leveling (Config.Leveling.perWorkbenchType = true), add your workbench type to the leveling config:


Complete Example

Here's a complete example of adding an "Electronics Workbench":

1. Item Definition (ox_inventory)

2. Config Entry

3. Shop Entry


Placement Settings

Control how players place workbenches with these global settings in configs/config.lua:


Permissions System

When Config.Permissions.enabled = true, workbench owners can manage who has access:

  • Only the owner and permitted players can use the workbench

  • Owners can add/remove players via the permissions tab in the UI

  • Permissions persist across server restarts


Crafting History

When Config.History.enabled = true, the UI shows a history tab:

  • Displays who crafted what and when

  • Configurable max entries per workbench (Config.History.maxEntries)

  • Owner-only deletion option available (Config.History.ownerOnlyDelete)

  • Date format configurable: 'DMY' for DD/MM/YYYY or 'MDY' for MM/DD/YYYY


Troubleshooting

Workbench item not useable

  • Ensure the export name matches exactly: sd-crafting.use<ItemName>

  • The first letter after use must be capitalized

  • Restart both ox_inventory and sd-crafting after changes

Workbench not appearing in shop

  • Verify the item id in the shop matches the key in PlaceableWorkbenches

  • Check that the shop ped coordinates are correct

Recipes not showing

  • Confirm the recipe table names in recipes exist in configs/recipes.lua

  • Check if recipes are locked behind tech trees that haven't been unlocked

Players can't use placed workbench

  • If Config.Permissions.enabled = true, only the owner and permitted players can use it

  • Check job/gang restrictions if configured

Last updated