# Crafting

> **Want players to craft items by dragging one item over another? This guide shows you how, step-by-step**

This feature allows players to craft items by dragging a source item over a target item in the same inventory. When the recipe matches, the items are combined and the result is created.

**Note:** This functionality is provided by the `_hooks/sv_craftings.lua` hook. You just need to add your recipes to the `CRAFTING_RECIPES` table.

## How it works

1. Player drags a **source item** over a **target item** in the same inventory
2. The system checks if there's a matching recipe
3. If the recipe matches and quantities are sufficient, the crafting happens
4. Source and/or target items are removed (based on recipe settings)
5. The result item is added to the inventory

## Step-by-step guide

1. Open your server files and navigate to: `jaksam_inventory/_hooks/sv_craftings.lua`
2. Find the `CRAFTING_RECIPES` table (it's near the top of the file)
3. Add your recipe following this format:

```lua
local CRAFTING_RECIPES = {
    ["source_item_name"] = {
        sourceQuantityRequired = 1,        -- How many source items needed
        sourceIsToRemove = true,           -- Remove source item after crafting?
        targetItem = "target_item_name",  -- Name of the target item
        targetQuantity = 1,                -- How many target items needed
        targetIsToRemove = true,           -- Remove target item after crafting?
        resultItem = "result_item_name",  -- Name of the item created
        resultQuantity = 1,                -- How many result items created
    },
}
```

4. Save the file and restart the script/reload the server

That's it! Now players can drag the source item over the target item to craft.

## Recipe properties explained

* **`sourceQuantityRequired`**: How many of the source item are needed for the recipe
* **`sourceIsToRemove`**: Set to `true` if the source item should be removed after crafting, `false` to keep it
* **`targetItem`**: The exact name (as defined in `items.lua`) of the item you drag the source item onto
* **`targetQuantity`**: How many of the target item are needed for the recipe
* **`targetIsToRemove`**: Set to `true` if the target item should be removed after crafting, `false` to keep it
* **`resultItem`**: The exact name (as defined in `items.lua`) of the item that will be created
* **`resultQuantity`**: How many result items will be created

## Examples

### Example 1: Upgrade scope to thermal scope

Combine a wrench with an advanced scope to create a thermal scope:

```lua
["weapon_wrench"] = {
    sourceQuantityRequired = 1,
    sourceIsToRemove = false,              -- Keep the wrench (reusable tool)
    targetItem = "advanced_scope",
    targetQuantity = 1,
    targetIsToRemove = true,               -- Remove the advanced scope
    resultItem = "thermal_scope",
    resultQuantity = 1,
},
```

**How to use:** Drag the wrench over the advanced scope → thermal scope is created, wrench stays, advanced scope is removed.

### Example 2: Combine materials

Combine 2 pieces of wood with 1 nail to create a wooden plank:

```lua
["wood"] = {
    sourceQuantityRequired = 2,
    sourceIsToRemove = true,               -- Remove the 2 wood pieces
    targetItem = "nail",
    targetQuantity = 1,
    targetIsToRemove = true,               -- Remove the nail
    resultItem = "wooden_plank",
    resultQuantity = 1,
},
```

**How to use:** Drag 2 wood items over 1 nail → wooden plank is created, both materials are consumed.

## Important notes

* **Same inventory only**: Crafting only works when both items are in the **same inventory** (you can't drag from player inventory to vehicle inventory)
* **Item names must match**: The `targetItem` and `resultItem` names must exactly match the item names in `_data/items.lua`
* **Quantity checks**: The system automatically checks if you have enough items before crafting
* **Multiple recipes**: You can add as many recipes as you want to the `CRAFTING_RECIPES` table
* **One source, multiple targets**: Each source item can only have one recipe. If you need multiple recipes for the same source item, you'll need to use different source items or create separate crafting systems


---

# 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://documentation.jaksam-scripts.com/jaksam-inventory/guides/crafting.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.
