Installation

HoodRich Cooking

Complete installation and configuration guide.

Version 1.1.0ESX / QBCore / QboxUpdated Sep 26, 2026

01Requirements

Select your server stack to see the exact install order and a ready-to-copyserver.cfg snippet.

Your server setup
Framework
Inventory
Target
01FrameworkChoose 1
QBCoreESX
02InventoryChoose 1
ox_inventoryqb-inventory
03TargetChoose 1
ox_targetqb-target
04ox_libRequired

Must start before HoodRich_Cooking.

GitHub ↗
ensure ox_lib

Installation order

01
Install ox_lib

Download ox_lib and start it before HoodRich Cooking.

ensure ox_lib
02
Install your framework

Install either QBCore (qb-core) or ESX (es_extended).

ensure qb-core
03
Install your inventory

Install ox_inventory or qb-inventory to match your stack.

ensure ox_inventory
04
Install your target system

Install ox_target or qb-target to match your stack.

ensure ox_target
05
Install HoodRich_Cooking

Place HoodRich_Cooking in resources and ensure it after your stack.

ensure HoodRich_Cooking

Server.cfg

CFG
ensure ox_lib
ensure qb-core
ensure ox_inventory
ensure ox_target
ensure HoodRich_Cooking

Version 1.1.0

01Requirements

Resource Required
ox_lib Required
qb-core or es_extended Required
ox_inventory or qb-inventory Required
ox_target or qb-target Required

Supported combinations

  • ESX + ox_inventory + ox_target
  • QBCore + ox_inventory + ox_target
  • QBCore + qb-inventory + qb-target

02Install the resource

  1. Place the HoodRich_Cooking folder in your server resources directory.
  2. Add this to your server.cfg after your framework, inventory, and target resources:
CFG
ensure ox_lib
ensure HoodRich_Cooking
  1. Restart the server, or run:
TEXT
refresh
ensure HoodRich_Cooking

03Configure compatibility

Open shared/config.lua and set these to match your server:

LUA
Config.Framework = 'qb'   -- 'qb' or 'esx'
Config.Inventory = 'qb'   -- 'qb' or 'ox'
Config.Target = 'qb'      -- 'qb' or 'ox'
Your setup Config values
QBCore + qb-inventory + qb-target Framework = 'qb', Inventory = 'qb', Target = 'qb'
QBCore + ox_inventory + ox_target Framework = 'qb', Inventory = 'ox', Target = 'ox'
ESX + ox_inventory + ox_target Framework = 'esx', Inventory = 'ox', Target = 'ox'

04Add inventory items

You need these items in your inventory system. Names below are the defaults — change them in Config.Items / Config.Ingredients if you use different names.

Item name Purpose
portable_stove Placeable stove (use from inventory)
cooking_pot Required on stove while cooking; returned when picked up
cocaine Ingredient (consumed when cooking)
baking_soda Ingredient (consumed when cooking)
crack Cooked output + usable item

Default ingredient amounts per batch (configurable in Config.Ingredients):

  • 10 cocaine
  • 5 baking soda
  • 1 cooking pot (not consumed)

Output: 1 crack per 1 cocaine used (see Config.Output).

QBCore

Open qb-core/shared/items.lua and add:

LUA
['portable_stove'] = {
    name = 'portable_stove',
    label = 'Portable Stove',
    weight = 5000,
    type = 'item',
    image = 'portable_stove.png',
    unique = false,
    useable = true,
    shouldClose = true,
    description = 'A portable stove for cooking.',
},

['cooking_pot'] = {
    name = 'cooking_pot',
    label = 'Cooking Pot',
    weight = 2000,
    type = 'item',
    image = 'cooking_pot.png',
    unique = false,
    useable = false,
    shouldClose = true,
    description = 'A pot used for cooking.',
},

['cocaine'] = {
    name = 'cocaine',
    label = 'Cocaine',
    weight = 100,
    type = 'item',
    image = 'cocaine.png',
    unique = false,
    useable = false,
    shouldClose = true,
    description = 'Raw ingredient.',
},

['baking_soda'] = {
    name = 'baking_soda',
    label = 'Baking Soda',
    weight = 100,
    type = 'item',
    image = 'baking_soda.png',
    unique = false,
    useable = false,
    shouldClose = true,
    description = 'Cooking ingredient.',
},

['crack'] = {
    name = 'crack',
    label = 'Crack',
    weight = 100,
    type = 'item',
    image = 'crack.png',
    unique = false,
    useable = true,
    shouldClose = true,
    description = 'Ready to use.',
},

Put matching PNG icons in qb-inventory/html/images/ (or your inventory image folder).

ox_inventory

Open ox_inventory/data/items.lua and add:

LUA
['portable_stove'] = {
    label = 'Portable Stove',
    weight = 5000,
    stack = true,
    close = true,
    description = 'A portable stove for cooking.',
    client = {
        export = 'HoodRich_Cooking.portable_stove',
    },
},

['cooking_pot'] = {
    label = 'Cooking Pot',
    weight = 2000,
    stack = true,
    close = true,
    description = 'A pot used for cooking.',
},

['cocaine'] = {
    label = 'Cocaine',
    weight = 100,
    stack = true,
    close = true,
    description = 'Raw ingredient.',
},

['baking_soda'] = {
    label = 'Baking Soda',
    weight = 100,
    stack = true,
    close = true,
    description = 'Cooking ingredient.',
},

['crack'] = {
    label = 'Crack',
    weight = 100,
    stack = true,
    close = true,
    description = 'Ready to use.',
    client = {
        export = 'HoodRich_Cooking.use_crack',
    },
},

Add images to ox_inventory/web/images/ (e.g. portable_stove.png, crack.png).

ESX

If you use ESX with ox_inventory, only the ox_inventory items above are needed.

If you use a legacy ESX inventory, add items to your items table and ensure names match Config.Ingredients / Config.Items.

05Give yourself items (testing)

QBCore

TEXT
/giveitem [id] portable_stove 1
/giveitem [id] cooking_pot 1
/giveitem [id] cocaine 50
/giveitem [id] baking_soda 25

ox_inventory

TEXT
/ox give [id] portable_stove 1
/ox give [id] cooking_pot 1
/ox give [id] cocaine 50
/ox give [id] baking_soda 25

06How to play

Portable stove

01Place the StovePlace the Stove

Use Portable Stove from inventory. Move the ghost preview, press ENTER to place, X to cancel.

02Place the PotPlace the Pot

Target the stove → Place Pot (needs cooking_pot in inventory).

03Place the CupPlace the Cup

Target the stove → Place Cup on the pot.

04Start CookingStart Cooking

Target the stove → Start Cooking → enter cocaine amount.

05Complete CookingComplete Cooking

Complete skill checks and the stirring progress bar. Receive crack on success.

World stoves

Stoves already in the map (BBQs, cookers, etc.) are listed in Config.WorldStoveModels. Target them the same way — no portable stove item needed.

Using crack

Use crack from inventory (pipe animation + optional armour gain from Config.CrackUse.armour).

Pick up / pack up

  • Pick Up Cup — removes cup from pot (client only).
  • Pick Up Pot — returns cooking_pot to inventory.
  • Pick Up Stove — returns portable_stove to inventory.

07Optional configuration

All in shared/config.lua:

Setting Description
Config.Debug true = F8 debug prints
Config.Ingredients Default amounts for UI / validation
Config.IngredientOrder Order of cooking steps
Config.Output Output item name and yield ratio
Config.CrackUse.armour Armour gained when smoking crack (0–100)
Config.WorldStoveModels Prop models that work as world stoves
Config.CookingMistakes Skill check failures before fire / burn

Pot placement tuning: stand near a stove with a pot placed and run:

TEXT
/hoodrich_potoffset
/hoodrich_potoffset 0.08 -0.04 0.98

Copy the F8 config line into Config.PotOnStoveOffset if props look misaligned.

08Troubleshooting

Enable debug mode:

LUA
Config.Debug = true

Then check the F8 client console and server console for [HoodRich Cooking] messages.

09File structure

TEXT
HoodRich_Cooking/
├── client/
│   ├── lib.lua
│   ├── effects.lua
│   ├── placement.lua
│   ├── stoves.lua
│   ├── cooking.lua
│   ├── crack.lua
│   └── main.lua
├── server/
│   └── main.lua
├── shared/
│   └── config.lua
├── stream/
├── fxmanifest.lua
└── INSTALL.md

10Support checklist

Before asking for help, confirm:

  • ox_lib, framework, inventory, and target are running
  • shared/config.lua matches your stack
  • All five items exist with correct names
  • Item images are added (optional but recommended)
  • Resource restarted after config/item changes