# Items

{% hint style="warning" %}
⚠️ **Warning:** Item names (the **left side**) must stay exactly as written. Only edit labels, weights, images, and descriptions if needed.
{% endhint %}

***

### 🧰 Where to Add

| Inventory      | Path                          |
| -------------- | ----------------------------- |
| `ox_inventory` | `ox_inventory/data/items.lua` |
| `qb-inventory` | `qb-core/shared/items.lua`    |

***

### 📋 Item List

All items by category:

#### 🧪 Lab Tools

| Item           | Label         | Weight | Unique | Description                                      |
| -------------- | ------------- | ------ | ------ | ------------------------------------------------ |
| `lab_tablet`   | Lab Tablet    | 800    | ✅      | Opens the labs management UI.                    |
| `weedscissors` | Weed Scissors | 200    | ✅      | Required to harvest weed plants.                 |
| `hack_lab`     | Lab Hacker    | 300    | ✅      | Hack a foreign lab keypad — consumed on success. |

#### 🌱 Plant Inputs

| Item               | Label            | Weight | Description                                 |
| ------------------ | ---------------- | ------ | ------------------------------------------- |
| `weed_nutrition`   | Plant Fertilizer | 200    | Fertilizer for plants.                      |
| `weed_pot`         | Empty Pot        | 500    | Required to plant a seed.                   |
| `water_bottle_big` | Water Bottle     | 600    | Refills the lab water tank (stores 0–100%). |
| `weed_baggy_empty` | Empty Baggy      | 10     | Used in cleaning recipes.                   |

#### 🌿 Seeds

| Item               | Label             | Description         |
| ------------------ | ----------------- | ------------------- |
| `seed_weedbask`    | Weed Basket Seed  | Common weed seed.   |
| `seed_bluedream`   | Blue Dream Seed   | Premium weed seed.  |
| `seed_yellowdream` | Yellow Dream Seed | Standard weed seed. |

#### 🍃 Buds (Harvested)

| Item              | Label            | Description             |
| ----------------- | ---------------- | ----------------------- |
| `bud_weedbask`    | Weed Basket Bud  | Harvested basic bud.    |
| `bud_bluedream`   | Blue Dream Bud   | Harvested premium bud.  |
| `bud_yellowdream` | Yellow Dream Bud | Harvested standard bud. |

#### 🛍️ Plant-specific Baggies

| Item              | Label              | Description                         |
| ----------------- | ------------------ | ----------------------------------- |
| `weedbask_bag`    | Weed Basket Baggy  | Pre-filled baggy with Weed Basket.  |
| `bluedream_bag`   | Blue Dream Baggy   | Pre-filled baggy with Blue Dream.   |
| `yellowdream_bag` | Yellow Dream Baggy | Pre-filled baggy with Yellow Dream. |

#### 📦 Packed Weed Bags

| Item        | Label               | Description               |
| ----------- | ------------------- | ------------------------- |
| `weedbag_1` | Weed Bag (Basic)    | Basic packed weed bag.    |
| `weedbag_2` | Weed Bag (Standard) | Standard packed weed bag. |
| `weedbag_3` | Weed Bag (Premium)  | Premium packed weed bag.  |

#### 🚬 Joints

| Item                 | Label         | Description                   |
| -------------------- | ------------- | ----------------------------- |
| `joint`              | Joint         | Rolled joint.                 |
| `marijuana_joint3_1` | Premium Joint | Premium rolled joint.         |
| `g_joint`            | Green Joint   | Smoke to gain **25 armor**.   |
| `y_joint`            | Yellow Joint  | Smoke to gain **50 armor**.   |
| `b_joint`            | Blue Joint    | Smoke to gain **full armor**. |

> 💡 **Note:** The colored joints (`g_joint`, `y_joint`, `b_joint`) trigger an armor effect when used. On ox\_inventory this is handled via the `X8-WeedlaP.useJoint` export.

#### 💵 Money Laundering Chain

```
blank_paper + printer_ink  →  dollar_sheet
dollar_sheet               →  45x cut_dollar
30x cut_dollar             →  10x dirty_money
10x dirty_money            →  cash
```

| Item           | Label        | Description                          |
| -------------- | ------------ | ------------------------------------ |
| `blank_paper`  | Blank Paper  | Blank paper for printing.            |
| `printer_ink`  | Printer Ink  | Ink cartridge for printer.           |
| `dollar_sheet` | Dollar Sheet | Printed dollar sheet, needs cutting. |
| `cut_dollar`   | Cut Bill     | Cut bill, needs bundling.            |
| `dirty_money`  | Dirty Money  | Marked bills to launder.             |

***

### 📄 ox\_inventory

> ✅ **Tip:** Add this **inside** `ox_inventory/data/items.lua` (paste before the closing `}`).

```lua
['lab_tablet'] = {
    label       = 'Lab Tablet',
    weight      = 800,
    stack       = false,
    close       = true,
    description = 'Tablet to manage your gang lab'
},

['weed_nutrition'] = {
    label       = 'Plant Fertilizer',
    weight      = 200,
    stack       = true,
    close       = true,
    description = 'Fertilizer for weed plants'
},

['weed_pot'] = {
    label       = 'Empty Pot',
    weight      = 500,
    stack       = true,
    close       = false,
    description = 'Empty pot for planting seeds'
},

['water_bottle_big'] = {
    label       = 'Water Bottle',
    weight      = 600,
    stack       = false,
    close       = true,
    description = 'Big water bottle for refilling tanks'
},

['weed_baggy_empty'] = {
    label       = 'Empty Baggy',
    weight      = 10,
    stack       = true,
    close       = false,
    description = 'Empty plastic baggy'
},

-- Plant-specific baggies
['weedbask_bag'] = {
    label       = 'Weed Basket Baggy',
    weight      = 15,
    stack       = true,
    close       = false,
    description = 'Pre-filled baggy with Weed Basket'
},

['bluedream_bag'] = {
    label       = 'Blue Dream Baggy',
    weight      = 15,
    stack       = true,
    close       = false,
    description = 'Pre-filled baggy with Blue Dream'
},

['yellowdream_bag'] = {
    label       = 'Yellow Dream Baggy',
    weight      = 15,
    stack       = true,
    close       = false,
    description = 'Pre-filled baggy with Yellow Dream'
},

-- Seeds
['seed_weedbask']    = { label = 'Weed Basket Seed',  weight = 50, stack = true, close = true,  description = 'Common weed seed' },
['seed_bluedream']   = { label = 'Blue Dream Seed',   weight = 50, stack = true, close = true,  description = 'Premium weed seed' },
['seed_yellowdream'] = { label = 'Yellow Dream Seed', weight = 50, stack = true, close = true,  description = 'Standard weed seed' },

-- Buds
['bud_weedbask']    = { label = 'Weed Basket Bud',  weight = 100, stack = true, close = false, description = 'Harvested basic bud' },
['bud_bluedream']   = { label = 'Blue Dream Bud',   weight = 100, stack = true, close = false, description = 'Harvested premium bud' },
['bud_yellowdream'] = { label = 'Yellow Dream Bud', weight = 100, stack = true, close = false, description = 'Harvested standard bud' },

-- Packed weed bags
['weedbag_1'] = { label = 'Weed Bag (Basic)',    weight = 250, stack = true, close = false, description = 'Basic packed weed bag' },
['weedbag_2'] = { label = 'Weed Bag (Standard)', weight = 250, stack = true, close = false, description = 'Standard packed weed bag' },
['weedbag_3'] = { label = 'Weed Bag (Premium)',  weight = 250, stack = true, close = false, description = 'Premium packed weed bag' },

-- Joints
['joint']              = { label = 'Joint',         weight = 30, stack = true, close = true, description = 'Rolled joint' },
['marijuana_joint3_1'] = { label = 'Premium Joint', weight = 30, stack = true, close = true, description = 'Premium rolled joint' },

['g_joint'] = {
    label       = 'Green Joint',
    weight      = 30,
    stack       = true,
    close       = true,
    description = 'Smoke to gain 25 armor',
    server      = { export = 'X8-WeedlaP.useJoint' },
},

['y_joint'] = {
    label       = 'Yellow Joint',
    weight      = 30,
    stack       = true,
    close       = true,
    description = 'Smoke to gain 50 armor',
    server      = { export = 'X8-WeedlaP.useJoint' },
},

['b_joint'] = {
    label       = 'Blue Joint',
    weight      = 30,
    stack       = true,
    close       = true,
    description = 'Smoke to gain full armor',
    server      = { export = 'X8-WeedlaP.useJoint' },
},

-- Tools
['weedscissors'] = { label = 'Weed Scissors', weight = 200, stack = false, close = true, description = 'Used to trim weed buds' },
['hack_lab']     = { label = 'Lab Hacker',    weight = 300, stack = false, close = true, description = 'Hack a lab keypad — consumed on success' },

-- Laundry chain
['blank_paper']  = { label = 'Blank Paper',  weight = 5,  stack = true, close = false, description = 'Blank paper for printing' },
['printer_ink']  = { label = 'Printer Ink',  weight = 50, stack = true, close = false, description = 'Ink cartridge for printer' },
['dollar_sheet'] = { label = 'Dollar Sheet', weight = 10, stack = true, close = false, description = 'Printed dollar sheet, needs cutting' },
['cut_dollar']   = { label = 'Cut Bill',     weight = 1,  stack = true, close = false, description = 'Cut bill, needs bundling' },
['dirty_money']  = { label = 'Dirty Money',  weight = 1,  stack = true, close = false, description = 'Marked bills to launder' },
```

***

### 📄 QBCore (qb-inventory / ps / qs / codem)

> ✅ **Tip:** Add this **inside** `QBCore.Shared.Items` in `qb-core/shared/items.lua`.

```lua
lab_tablet         = { name = 'lab_tablet',         label = 'Lab Tablet',          weight = 800,  type = 'item', image = 'lab_tablet.png',         unique = true,  useable = true,  shouldClose = true,  combinable = nil, description = 'Tablet to manage your gang lab' },

-- Weed lab inputs
weed_nutrition     = { name = 'weed_nutrition',     label = 'Plant Fertilizer',    weight = 200,  type = 'item', image = 'weed_nutrition.png',     unique = false, useable = true,  shouldClose = true,  combinable = nil, description = 'Fertilizer for weed plants' },
weed_pot           = { name = 'weed_pot',           label = 'Empty Pot',           weight = 500,  type = 'item', image = 'weed_pot.png',           unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Empty pot for planting seeds' },
water_bottle_big   = { name = 'water_bottle_big',   label = 'Water Bottle',        weight = 600,  type = 'item', image = 'water_bottle_big.png',   unique = true,  useable = true,  shouldClose = true,  combinable = nil, description = 'Big water bottle for refilling tanks' },
weed_baggy_empty   = { name = 'weed_baggy_empty',   label = 'Empty Baggy',         weight = 10,   type = 'item', image = 'weed_baggy_empty.png',   unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Empty plastic baggy' },

-- Plant-specific baggies
weedbask_bag       = { name = 'weedbask_bag',       label = 'Weed Basket Baggy',   weight = 15,   type = 'item', image = 'weedbask_bag.png',       unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Pre-filled baggy with Weed Basket' },
bluedream_bag      = { name = 'bluedream_bag',      label = 'Blue Dream Baggy',    weight = 15,   type = 'item', image = 'bluedream_bag.png',      unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Pre-filled baggy with Blue Dream' },
yellowdream_bag    = { name = 'yellowdream_bag',    label = 'Yellow Dream Baggy',  weight = 15,   type = 'item', image = 'yellowdream_bag.png',    unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Pre-filled baggy with Yellow Dream' },

-- Seeds
seed_weedbask      = { name = 'seed_weedbask',      label = 'Weed Basket Seed',    weight = 50,   type = 'item', image = 'seed_weedbask.png',      unique = false, useable = true,  shouldClose = true,  combinable = nil, description = 'Common weed seed' },
seed_bluedream     = { name = 'seed_bluedream',     label = 'Blue Dream Seed',     weight = 50,   type = 'item', image = 'seed_bluedream.png',     unique = false, useable = true,  shouldClose = true,  combinable = nil, description = 'Premium weed seed' },
seed_yellowdream   = { name = 'seed_yellowdream',   label = 'Yellow Dream Seed',   weight = 50,   type = 'item', image = 'seed_yellowdream.png',   unique = false, useable = true,  shouldClose = true,  combinable = nil, description = 'Standard weed seed' },

-- Buds
bud_weedbask       = { name = 'bud_weedbask',       label = 'Weed Basket Bud',     weight = 100,  type = 'item', image = 'bud_weedbask.png',       unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Harvested basic bud' },
bud_bluedream      = { name = 'bud_bluedream',      label = 'Blue Dream Bud',      weight = 100,  type = 'item', image = 'bud_bluedream.png',      unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Harvested premium bud' },
bud_yellowdream    = { name = 'bud_yellowdream',    label = 'Yellow Dream Bud',    weight = 100,  type = 'item', image = 'bud_yellowdream.png',    unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Harvested standard bud' },

-- Packed weed bags
weedbag_1          = { name = 'weedbag_1',          label = 'Weed Bag (Basic)',    weight = 250,  type = 'item', image = 'weedbag_1.png',          unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Basic packed weed bag' },
weedbag_2          = { name = 'weedbag_2',          label = 'Weed Bag (Standard)', weight = 250,  type = 'item', image = 'weedbag_2.png',          unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Standard packed weed bag' },
weedbag_3          = { name = 'weedbag_3',          label = 'Weed Bag (Premium)',  weight = 250,  type = 'item', image = 'weedbag_3.png',          unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Premium packed weed bag' },

-- Joints
joint              = { name = 'joint',              label = 'Joint',               weight = 30,   type = 'item', image = 'joint.png',              unique = false, useable = true,  shouldClose = true,  combinable = nil, description = 'Rolled joint' },
marijuana_joint3_1 = { name = 'marijuana_joint3_1', label = 'Premium Joint',       weight = 30,   type = 'item', image = 'marijuana_joint3_1.png', unique = false, useable = true,  shouldClose = true,  combinable = nil, description = 'Premium rolled joint' },

g_joint            = { name = 'g_joint',            label = 'Green Joint',         weight = 30,   type = 'item', image = 'g_joint.png',            unique = false, useable = true,  shouldClose = true,  combinable = nil, description = 'Smoke to gain 25 armor' },
y_joint            = { name = 'y_joint',            label = 'Yellow Joint',        weight = 30,   type = 'item', image = 'y_joint.png',            unique = false, useable = true,  shouldClose = true,  combinable = nil, description = 'Smoke to gain 50 armor' },
b_joint            = { name = 'b_joint',            label = 'Blue Joint',          weight = 30,   type = 'item', image = 'b_joint.png',            unique = false, useable = true,  shouldClose = true,  combinable = nil, description = 'Smoke to gain full armor' },

-- Tools
weedscissors       = { name = 'weedscissors',       label = 'Weed Scissors',       weight = 200,  type = 'item', image = 'weedscissors.png',       unique = true,  useable = true,  shouldClose = true,  combinable = nil, description = 'Used to trim weed buds' },
hack_lab           = { name = 'hack_lab',           label = 'Lab Hacker',          weight = 300,  type = 'item', image = 'hack_lab.png',           unique = true,  useable = true,  shouldClose = true,  combinable = nil, description = 'Hack a lab keypad — consumed on success' },

-- Laundry chain
blank_paper        = { name = 'blank_paper',        label = 'Blank Paper',         weight = 5,    type = 'item', image = 'blank_paper.png',        unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Blank paper for printing' },
printer_ink        = { name = 'printer_ink',        label = 'Printer Ink',         weight = 50,   type = 'item', image = 'printer_ink.png',        unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Ink cartridge for printer' },
dollar_sheet       = { name = 'dollar_sheet',       label = 'Dollar Sheet',        weight = 10,   type = 'item', image = 'dollar_sheet.png',       unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Printed dollar sheet, needs cutting' },
cut_dollar         = { name = 'cut_dollar',         label = 'Cut Bill',            weight = 1,    type = 'item', image = 'cut_dollar.png',         unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Cut bill, needs bundling' },
dirty_money        = { name = 'dirty_money',        label = 'Dirty Money',         weight = 1,    type = 'item', image = 'dirty_money.png',        unique = false, useable = false, shouldClose = false, combinable = nil, description = 'Marked bills to launder' },
```

***

### 🖼️ Item Images

For QBCore inventories, place the `.png` images inside:

```
qb-inventory/html/images/
```

For `ox_inventory`:

```
ox_inventory/web/images/
```

Filenames must match the `image` / item name in the snippets above.

***

### ✅ Final Checklist

* \[ ] All items added to the correct inventory.
* \[ ] Item images placed in the correct folder.
* \[ ] Item names in `Config.Items` match the inventory keys.
* \[ ] Inventory restarted (or full server restart).
* \[ ] Test by giving yourself `lab_tablet` and opening it.

> 💡 **Note:** If your inventory fork uses a different format (`metadata` instead of `info`, different `useable` flag…), keep the **item names** identical and adjust the format to match your fork's convention.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://x8project.gitbook.io/x8project/projects/weed-lab/items.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
