> For the complete documentation index, see [llms.txt](https://pepper-scripts.gitbook.io/pepper-scripts-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pepper-scripts.gitbook.io/pepper-scripts-docs/jobs/pepper-farmer/installation.md).

# Installation

This guide walks you through the installation **step by step**. You don't need any programming knowledge – you only copy folders, paste text into files and change a few lines. Plan about **30–45 minutes** and follow the steps **in the order given**.

After every step there is a **checkpoint**. Only move on once everything there is correct – that way you find mistakes right away instead of at the very end.

{% hint style="info" %}
**A few terms used in this guide:**

* **Resource** – a script folder on your server, e.g. `pepper_farmer` or `ox_inventory`.
* **`resources` folder** – the folder of your server that contains all resources.
* **`server.cfg`** – your server's settings file. It lists which resources start and in which order.
* **`ensure`** – the command in `server.cfg` that starts a resource (`ensure pepper_farmer`).
* **Server console** – the black window of your server, or the **Live Console** page in txAdmin. Messages and errors show up there.
* **F8 console** – the in-game console (key `F8`). It shows errors that only happen on your game client.
* **Item** – an object in the inventory, e.g. a tomato or a watering can.
  {% endhint %}

{% hint style="warning" %}
**Always open files with a text editor**, for example [Visual Studio Code](https://code.visualstudio.com/) or [Notepad++](https://notepad-plus-plus.org/). **Never use Word, WordPad or LibreOffice** – they change quotation marks and line breaks, and the file will stop working.
{% endhint %}

## Step 1 – Check what you already have

Pepper Farmer needs a few other resources that must be running on your server **first**. Go through the list and tick off what you already have.

### Checklist

| What                                                                                      | Why                                                                    | Required?           |
| ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------- |
| FiveM server (FXServer) **build 7290 or newer**                                           | older servers cannot start the script                                  | yes                 |
| **OneSync** enabled                                                                       | vehicles, animals and positions are synced through OneSync             | yes                 |
| **MySQL or MariaDB** (database) + **oxmysql**                                             | stores levels, fields, animals, machines …                             | yes                 |
| **ox\_lib**                                                                               | menus, notifications, key bindings                                     | yes                 |
| **ox\_inventory**                                                                         | inventory, items, farm storage                                         | yes                 |
| **ox\_target**                                                                            | "look at it and pick an option" on crops, animals, machines, merchants | yes                 |
| **ESX Legacy** (`es_extended`) **or** **QBCore** (`qb-core`) **or** **Qbox** (`qbx_core`) | characters and money                                                   | exactly one of them |

### How to check whether a resource is already there

For every resource in the list (`oxmysql`, `ox_lib`, `ox_inventory`, `ox_target` and your framework) check three things:

1. **Does the folder exist?** Open your `resources` folder and look for a folder with exactly this name. It can also sit in a sub-folder with square brackets, e.g. `resources/[ox]/ox_lib` or `resources/[standalone]/oxmysql`.
2. **Is it in `server.cfg`?** Open `server.cfg` and look for a line like `ensure ox_lib`. (If there is only `ensure [ox]`, every resource inside the `[ox]` folder is started – that counts too.)
3. **Does it actually start?** Start the server and look for the line `Started resource ox_lib` in the server console. In txAdmin you can also see all running resources under **Resources**.

{% hint style="success" %}
**Checkpoint:** For every resource in the checklist you see the line `Started resource <name>` in the console when the server starts.
{% endhint %}

### Check the server build and OneSync

* **Build:** When the server starts, the console shows the version at the very top, e.g. `FXServer-master v1.0.0.XXXX`. The number `XXXX` must be **7290 or higher**. You can also type `version` into the server console.
* **OneSync:** In **txAdmin** go to **Settings → FXServer** and set *OneSync* to **On**. If you start the server without txAdmin, put this line at the very top of `server.cfg`:

  ```cfg
  set onesync on
  ```

### Which framework do I have?

Look into your `resources` folder (including the sub-folders with square brackets):

| You find the folder … | Your framework is … | Enter later in the config |
| --------------------- | ------------------- | ------------------------- |
| `es_extended`         | ESX Legacy          | `'esx'`                   |
| `qb-core`             | QBCore              | `'qbcore'`                |
| `qbx_core`            | Qbox                | `'qbox'`                  |

{% hint style="warning" %}
**QBCore servers:** Many QBCore servers use `qb-inventory` and `qb-target`. Pepper Farmer however needs **ox\_inventory** and **ox\_target**. Switch your server to ox\_inventory first (see the [ox\_inventory documentation](https://github.com/CommunityOx/ox_inventory)) before installing Pepper Farmer. Qbox already uses ox\_inventory out of the box.
{% endhint %}

### Getting missing resources

The ox resources are maintained by **CommunityOx**. Always download the **finished release file**:

| Resource      | Download (releases page)                                                                              | Folder name in `resources` |
| ------------- | ----------------------------------------------------------------------------------------------------- | -------------------------- |
| oxmysql       | [github.com/CommunityOx/oxmysql/releases](https://github.com/CommunityOx/oxmysql/releases)            | `oxmysql`                  |
| ox\_lib       | [github.com/CommunityOx/ox\_lib/releases](https://github.com/CommunityOx/ox_lib/releases)             | `ox_lib`                   |
| ox\_inventory | [github.com/CommunityOx/ox\_inventory/releases](https://github.com/CommunityOx/ox_inventory/releases) | `ox_inventory`             |
| ox\_target    | [github.com/CommunityOx/ox\_target/releases](https://github.com/CommunityOx/ox_target/releases)       | `ox_target`                |

How to do it:

1. Open the releases page and take the top entry (**Latest**).
2. Expand **Assets** and download the file named after the resource, e.g. `ox_lib.zip`.
3. Extract it into your `resources` folder.

{% hint style="danger" %}
**Do not download "Source code (zip)"!** That is the unbuilt source code – for ox\_lib and ox\_inventory the built interface is missing, and the resource will not work.

**Keep the folder names exactly as they are:** `ox_lib`, not `ox_lib-main`, not `ox_lib-3.x` and not `ox_lib (1)`.
{% endhint %}

You can get the frameworks here: [ESX Legacy](https://github.com/esx-framework/esx_core), [QBCore](https://github.com/qbcore-framework/qb-core), [Qbox](https://github.com/Qbox-project/qbx_core). How to set up a framework from scratch is covered in their own documentation.

## Step 2 – Download Pepper Farmer

1. Open the [Cfx.re Portal → Assets → Granted Assets](https://portal.cfx.re/assets/granted-assets) and log in with the **Cfx.re account** you bought the script with.
2. Find **pepper\_farmer** and click **Download**. You get a ZIP file.

{% hint style="warning" %}
**Asset Escrow – important:** Pepper Farmer is partly encrypted. It only starts on a server whose **license key** (`sv_licenseKey` in `server.cfg`) belongs to the **same Cfx.re account** you bought the script with. Always use the file from the portal and never modify encrypted files. More: [Asset Escrow](file:///getting-started/asset-escrow.md).
{% endhint %}

{% hint style="success" %}
**Checkpoint:** You have a ZIP file with Pepper Farmer on your PC.
{% endhint %}

## Step 3 – Extract and copy to the right place

1. Create a folder named `[pepper]` (with the square brackets) inside your `resources` folder. If you already own other Pepper scripts, it already exists.
2. Extract the ZIP file and copy the `pepper_farmer` folder to `resources/[pepper]/`.

**This is correct:**

```
resources/
└── [pepper]/
    └── pepper_farmer/
        ├── bridge/
        ├── client/
        ├── config/
        │   ├── config.lua
        │   └── …
        ├── html/
        ├── install/
        │   ├── ox_containers.lua
        │   ├── ox_items_de.lua
        │   ├── ox_items_en.lua
        │   └── pepper_farmer.sql
        ├── locales/
        ├── modules/
        ├── server/
        ├── shared/
        └── fxmanifest.lua
```

**This is wrong:**

```
resources/[pepper]/pepper_farmer/pepper_farmer/fxmanifest.lua   ← folder twice
resources/[pepper]/pepper_farmer-1.0.0/fxmanifest.lua           ← folder renamed
resources/[pepper]/Pepper Farmer/fxmanifest.lua                 ← folder renamed
```

{% hint style="danger" %}
**Never rename the `pepper_farmer` folder.** The interface (the tablet) uses the resource name – with a different name the tablet will not open correctly.
{% endhint %}

{% hint style="success" %}
**Checkpoint:** The file `fxmanifest.lua` is located **directly** in `resources/[pepper]/pepper_farmer/` – not one level deeper.
{% endhint %}

## Step 4 – Set your framework in the config

1. Open `resources/[pepper]/pepper_farmer/config/config.lua` with your text editor.
2. Find the line with `Config.Framework` (near the top):

   ```lua
   Config.Framework = 'esx'
   ```
3. Enter your framework (see the table in step 1):

{% tabs %}
{% tab title="ESX Legacy" %}

```lua
Config.Framework = 'esx'
```

This is already the default – you don't need to change anything.
{% endtab %}

{% tab title="QBCore" %}

```lua
Config.Framework = 'qbcore'
```

{% endtab %}

{% tab title="Qbox" %}

```lua
Config.Framework = 'qbox'
```

{% endtab %}
{% endtabs %}

4. Set the language directly above it – `'en'` for English, `'de'` for German:

   ```lua
   Config.Locale = 'en'
   ```
5. Save the file.

{% hint style="info" %}
You can also enter `Config.Framework = 'auto'`. The script then looks for `qbx_core`, `es_extended` and `qb-core` in this order. A fixed setting is clearer, though, and is recommended.
{% endhint %}

{% hint style="warning" %}
Make sure the **quotation marks** stay (`'qbcore'`, not `qbcore`) and that there is **no comma** at the end of the line.
{% endhint %}

**If the setting is wrong**, the server console shows a red warning between two lines of `=` characters when the server starts. This warning is always printed in German, for example:

```
[pepper_farmer] Config.Framework = 'esx', aber die Ressource 'es_extended' läuft nicht (Status: missing).
[pepper_farmer] Prüfe server.cfg: 'ensure es_extended' muss VOR 'ensure pepper_farmer' stehen – oder Config.Framework anpassen ('auto').
[pepper_farmer] Ohne Framework fällt Pepper Farmer auf standalone zurück (Identität = Lizenz, Geld = Item) – Spielerdaten passen dann NICHT!
```

It means: *"Config.Framework = 'esx', but the resource 'es\_extended' is not running. Check server.cfg: 'ensure es\_extended' must come BEFORE 'ensure pepper\_farmer' – or change Config.Framework. Without a framework Pepper Farmer falls back to standalone – player data will NOT match!"* So either the wrong framework is set, or your framework starts **after** Pepper Farmer (see step 9).

{% hint style="success" %}
**Checkpoint:** `config/config.lua` contains your framework (`'esx'`, `'qbcore'` or `'qbox'`) in quotation marks, and the file is saved.
{% endhint %}

## Step 5 – Add the items to ox\_inventory

Pepper Farmer comes with **265 items** (seeds, crops, tools, feed, products …). ox\_inventory only knows these items once you add them to its item list. **Without this step the script does not work.**

You need two files:

| File                                                                                            | What you do with it             |
| ----------------------------------------------------------------------------------------------- | ------------------------------- |
| `pepper_farmer/install/ox_items_en.lua` (English names) **or** `ox_items_de.lua` (German names) | you **copy** its content        |
| `ox_inventory/data/items.lua`                                                                   | you **paste** the content there |

Use the language you set in `Config.Locale`.

### How to do it

1. First make a **backup** of `ox_inventory/data/items.lua` (e.g. copy it next to it as `items.lua.bak`). If something goes wrong, you can copy it back.
2. Open `pepper_farmer/install/ox_items_en.lua` in the editor, select **everything** (`Ctrl` + `A`) and copy it (`Ctrl` + `C`).
3. Open `ox_inventory/data/items.lua` and scroll **all the way down** (`Ctrl` + `End`).
4. The file ends with a single closing curly brace `}` on the last line. Put the cursor on the **empty line directly above** that last `}` (press `Enter` to create an empty line if needed).
5. Paste the copied text there (`Ctrl` + `V`).
6. Save the file.

### Before / after

**Before** – the end of `ox_inventory/data/items.lua` looks roughly like this (your last items may have other names):

```lua
	['scrapmetal'] = {
		label = 'Scrap Metal',
		weight = 80,
	},
}
```

**After** – the Pepper Farmer block sits **between** the last item and the last `}`:

```lua
	['scrapmetal'] = {
		label = 'Scrap Metal',
		weight = 80,
	},

-- Pepper Farmer – ox_inventory-Items (en), 265 Einträge
-- …
    ['alpaca_blanket'] = {
        label = 'Alpaca Blanket',
        weight = 1200,
        stack = true,
        close = true,
        description = 'Luxurious blanket made from alpaca yarn.',
    },

    -- … (all other Pepper Farmer items) …

    ['zucchini'] = {
        label = 'Zucchini',
        weight = 300,
        stack = true,
        close = true,
        description = 'Fresh harvest. Quality determines the price.',
    },
}
```

The very last `}` belongs to ox\_inventory and must **stay**.

### The three most common mistakes

{% hint style="danger" %}
**1. Do not add a second `return {`.** `items.lua` already starts with `return {`. The Pepper file intentionally only contains the item entries. If there is a second `return {` somewhere in the middle of the file after pasting, ox\_inventory will no longer start.

**2. Check the comma on the last old entry.** The item directly **above** the pasted block must end with `},` (with a comma). If it only ends with `}` without a comma, add the comma.

**3. Do not paste after the last `}`.** Anything after the very last `}` causes an error.
{% endhint %}

**This is wrong:**

```lua
	['scrapmetal'] = {
		label = 'Scrap Metal',
		weight = 80,
	}                          ← comma missing
return {                       ← second return { – do NOT add
    ['alpaca_blanket'] = {
```

### Remove duplicate items

Some servers already have items like `bread` or `fabric`. If a name exists twice, the lower entry wins – usually the one from Pepper Farmer. To avoid confusion, **delete the old entry** further up in `items.lua`.

How to find duplicates: press `Ctrl` + `F` in `items.lua` and search for `['bread']` and `['fabric']`. If you get **two** results, delete the upper entry completely – from `['bread'] = {` up to and including the matching `},`.

{% hint style="warning" %}
Other scripts that use `bread` or `fabric` keep working – the item name stays the same, only the display name and weight now come from Pepper Farmer.
{% endhint %}

{% hint style="success" %}
**Checkpoint:** On the next server start you see `Started resource ox_inventory` in the console and **no** red error from ox\_inventory. Other resources do **not** report `No such export RegisterStash in resource ox_inventory` (that would mean ox\_inventory did not start because of a typo in `items.lua` – check step 5 again or restore the backup).
{% endhint %}

## Step 6 – Add the harvest basket as a container

The **harvest basket** is a container you can put crops into (12 slots, up to 30 kg). For ox\_inventory to know it as a container, you add it to a second file.

| File                                        | What you do with it             |
| ------------------------------------------- | ------------------------------- |
| `pepper_farmer/install/ox_containers.lua`   | you **copy** its content        |
| `ox_inventory/modules/items/containers.lua` | you **paste** the content there |

1. Make a backup of `ox_inventory/modules/items/containers.lua`.
2. Open `pepper_farmer/install/ox_containers.lua`, select everything and copy it.
3. Open `ox_inventory/modules/items/containers.lua` and scroll all the way down. The last line reads:

   ```lua
   return containers
   ```
4. Put the cursor on the empty line **directly above** `return containers` and paste the text.
5. Save the file.

**Before:**

```lua
setContainerProperties('pizzabox', {
	slots = 5,
	maxWeight = 1000,
	whitelist = { 'pizza' }
})

return containers
```

**After:**

```lua
setContainerProperties('pizzabox', {
	slots = 5,
	maxWeight = 1000,
	whitelist = { 'pizza' }
})

-- Pepper Farmer – Container für ox_inventory/modules/items/containers.lua
-- …
setContainerProperties('harvest_basket', {
    slots = 12,
    maxWeight = 30000,
    whitelist = {
        'apple', 'asparagus', 'barley', …
    },
})

return containers
```

{% hint style="danger" %}
`return containers` must stay the **very last line** of the file. Anything below it is ignored or prevents ox\_inventory from starting.
{% endhint %}

{% hint style="success" %}
**Checkpoint:** The last line of `containers.lua` is `return containers`, and directly above it is the block `setContainerProperties('harvest_basket', { … })`.
{% endhint %}

## Step 7 – Item images (optional)

Pepper Farmer does **not** ship item images. Everything works without them; the inventory then shows an empty slot with the name. If you want images, place PNG files named after the **item name**:

```
ox_inventory/web/images/tomato.png
ox_inventory/web/images/seed_wheat.png
ox_inventory/web/images/harvest_basket.png
```

You find the item name in `install/ox_items_en.lua` inside the square brackets, e.g. `['tomato']` → `tomato.png`.

## Step 8 – Database

**Usually you don't need to do anything here.** Pepper Farmer creates all tables (29 of them, all starting with `farmer_`) **automatically** on first start.

Only if your database user is **not allowed to create tables** (the case with some hosting providers) do you import the tables manually beforehand from `pepper_farmer/install/pepper_farmer.sql`:

{% tabs %}
{% tab title="HeidiSQL" %}
{% stepper %}
{% step %}

### Connect

Open HeidiSQL and connect to your database.
{% endstep %}

{% step %}

### Select the database

Click your server's database on the left (the same one as in `mysql_connection_string` in your `server.cfg`).
{% endstep %}

{% step %}

### Load the SQL file

Menu **File → Load SQL file …** and select `pepper_farmer/install/pepper_farmer.sql`.
{% endstep %}

{% step %}

### Execute

Click the blue **Execute** arrow (or press `F9`).
{% endstep %}

{% step %}

### Check

Press `F5` (refresh). The tables `farmer_meta`, `farmer_players`, `farmer_farms` etc. appear on the left.
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="phpMyAdmin" %}
{% stepper %}
{% step %}

### Select the database

Open phpMyAdmin and click your server's database on the left.
{% endstep %}

{% step %}

### Import

Click the **Import** tab at the top.
{% endstep %}

{% step %}

### Choose the file

Under **File to import**, choose `pepper_farmer/install/pepper_farmer.sql`.
{% endstep %}

{% step %}

### Start

Scroll down and click **Import** (or **Go**).
{% endstep %}

{% step %}

### Check

The tables `farmer_meta`, `farmer_players`, `farmer_farms` etc. appear on the left.
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
The SQL file can safely be imported several times – existing tables and data are kept (`CREATE TABLE IF NOT EXISTS`).
{% endhint %}

## Step 9 – Add it to server.cfg

Now you tell the server to start Pepper Farmer. **The order matters**: a resource can only start once everything it needs has been started **before** it. That's why `pepper_farmer` goes **at the bottom**, below all its dependencies.

1. Open your `server.cfg` (in txAdmin: **Settings → CFG Editor**).
2. Find the lines that start your framework and the ox resources.
3. Add the line `ensure pepper_farmer` **below** them.

{% tabs %}
{% tab title="ESX Legacy" %}

```cfg
ensure oxmysql
ensure ox_lib
ensure es_extended
ensure ox_inventory
ensure ox_target

# … your other resources …

ensure pepper_farmer
```

{% endtab %}

{% tab title="QBCore" %}

```cfg
ensure oxmysql
ensure ox_lib
ensure qb-core
ensure ox_inventory
ensure ox_target

# … your other resources …

ensure pepper_farmer
```

{% endtab %}

{% tab title="Qbox" %}

```cfg
ensure oxmysql
ensure ox_lib
ensure qbx_core
ensure ox_inventory
ensure ox_target

# … your other resources …

ensure pepper_farmer
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
The order of oxmysql, ox\_lib, framework, ox\_inventory and ox\_target **among each other** follows their own guides – if your server already works, leave it as it is. For Pepper Farmer only one thing matters: **all five are above `ensure pepper_farmer`.**
{% endhint %}

{% hint style="warning" %}
**Only one start line.** If your `server.cfg` already contains `ensure [pepper]` (starts all Pepper scripts at once), do **not** add `ensure pepper_farmer` as well. In that case `ensure [pepper]` must be below the dependencies.
{% endhint %}

If not already there, OneSync belongs in it too (only if you start **without** txAdmin, see step 1):

```cfg
set onesync on
```

{% hint style="success" %}
**Checkpoint:** `server.cfg` contains exactly **one** `ensure pepper_farmer` line (or `ensure [pepper]`), and it is **below** oxmysql, ox\_lib, ox\_inventory, ox\_target and your framework.
{% endhint %}

## Step 10 – Grant admin rights

Admins can open the **Admin** tab in the tablet (move locations, manage players) and use the `/farmadmin` command. The script checks in this order:

1. Does the player have the ACE permission `pepper_farmer.admin`? → admin.
2. Otherwise: is the player in one of the framework groups from `Config.Admin.groups` (default: `admin`, `superadmin`, `god`)? → admin.

### Recommended: ACE permission (works with every framework)

Add this line to `server.cfg`:

```cfg
add_ace group.admin pepper_farmer.admin allow
```

Everyone in the ACE group `group.admin` now has admin rights. If you are not in this group yet, add yourself with your **license identifier**:

```cfg
add_principal identifier.license:YOUR_LICENSE group.admin
```

Replace `YOUR_LICENSE` with your own identifier. How to find it:

* **txAdmin:** menu **Players** → click your name → **IDs** tab. There is a line like `license:1a2b3c4d…`. Copy everything **after** `license:`.

**This is correct:**

```cfg
add_ace group.admin pepper_farmer.admin allow
add_principal identifier.license:1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b group.admin
```

**This is wrong:**

```cfg
add_principal license:1a2b3c4d… group.admin              ← "identifier." missing
add_principal identifier.license:license:1a2b3c4d… group.admin   ← "license:" twice
```

{% hint style="info" %}
**txAdmin admin ≠ server admin.** Being able to log into txAdmin does **not** automatically make you an admin in game. You need the `add_principal` line or the matching framework group.
{% endhint %}

### Alternative: framework group

If you are already an admin in your framework, Pepper Farmer usually works without further steps:

| Framework | How the script checks the group                            |
| --------- | ---------------------------------------------------------- |
| ESX       | the player's ESX group is `admin`, `superadmin` or `god`   |
| QBCore    | QBCore permission `admin`, `superadmin` or `god`           |
| Qbox      | ACE group `group.admin`, `group.superadmin` or `group.god` |

You change the list of groups in `config/config.lua` under `Config.Admin.groups`.

{% hint style="success" %}
**Checkpoint:** After the restart (step 11) you see the **Admin** tab on the left side of the tablet.
{% endhint %}

## Step 11 – First start

1. **Restart the whole server** (in txAdmin: **Restart**). An `ensure pepper_farmer` in the console is **not** enough the first time, because ox\_inventory only reads new items when it starts itself.
2. Look at the server console. **A successful start looks like this** (with `Config.Locale = 'en'` and ESX):

   ```
   Started resource ox_inventory
   …
   Started resource pepper_farmer
   [pepper_farmer] Pepper Farmer v1.0.0 started (framework: esx)
   ```

   Instead of `esx` it says `qbcore` or `qbox`, depending on your framework. If it says `standalone`, step 4 or the order from step 9 is wrong.
3. Connect to the server.
4. Press **`F6`** or type **`/farmer`** in chat – the farm tablet opens.
5. On the map you find the **farm HQ in Grapeseed**. The office there opens the tablet, the barn door opens the farm storage, and the starter beds are right next to it.

{% hint style="success" %}
**Checkpoint:** The console shows `Pepper Farmer v1.0.0 started (framework: …)` with **your** framework, `F6` opens the tablet, and items like "Tomato" are shown with their proper name in the inventory.
{% endhint %}

### First steps to test

1. Open the tablet (`F6`) → **Fields** tab → lease a free bed.
2. At the starter beds, buy tools (hoe, watering can) at **Grapeseed Garden Tools** and seeds at the **Grapeseed Seed Store**.
3. Use ox\_target on the bed (look at it + pick an option) to till, sow and water.
4. After the growing time, harvest and sell.

What comes next is described under [Gameplay](broken://pages/1a04aaa4dfdab4bad7bdce58d9c948945a770729).

## Step 12 – Check and adjust locations

**All locations of the script are approximations** – fields, lease boards, barns, machines, merchants, depot and farm HQ were placed from map data. Drive past them once before going live. If something floats in the air, sits in the ground or is inside a wall, the easiest fix is **in game**:

Tablet → **Admin** tab → **Locations** or **Fields** → stand at the right spot → **Set to my position**. The change applies to all players immediately, without a restart.

The detailed guide (including the field editor) is under [Admin Tab & Locations](broken://pages/52a88d6a724c08c0b288cd67655c2b029d8140c3).

## Installing updates

{% stepper %}
{% step %}

### Read the changelog

Read the [changelog](broken://pages/569a1a91524876ee54188bdaa5747bb75e6b3cae) of the new version. It tells you whether items or the harvest basket need to be added again.
{% endstep %}

{% step %}

### Back up your settings

Copy the `pepper_farmer/config/` folder to a safe place (e.g. your desktop).
{% endstep %}

{% step %}

### Delete the old folder

Stop the server and delete the folder `resources/[pepper]/pepper_farmer` completely. Don't just copy over it – old files would stay behind.
{% endstep %}

{% step %}

### Extract the new version

Download the new version from the [Cfx.re Portal](https://portal.cfx.re/assets/granted-assets) and extract it to `resources/[pepper]/pepper_farmer` as in step 3.
{% endstep %}

{% step %}

### Transfer your settings

Transfer your changes from the backed-up `config/config.lua` (at least `Config.Framework` and `Config.Locale`) into the new file. If you changed other config files, transfer those too. **Don't simply copy** the old files over the new ones – new versions can contain new settings.
{% endstep %}

{% step %}

### Items and container only when noted

Repeat steps 5 and 6 **only** if the changelog asks for it. In that case replace the old Pepper Farmer block in `items.lua` or `containers.lua` with the new one.
{% endstep %}

{% step %}

### Restart

Restart the whole server and look for `Pepper Farmer v… started` in the console.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Player data, farms and all positions you changed in the admin tab are stored in the **database** and are kept during an update.
{% endhint %}

## Troubleshooting

Look up the message from your server console (or F8 console) in the left column.

| Message / problem                                                                                                                                                                                               | Cause                                                                                                                                                                                                   | Solution                                                                                                                                                                                                                |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Could not find dependency ox_target for resource pepper_farmer.` (or `ox_lib`, `ox_inventory`, `oxmysql`)                                                                                                      | The named resource is missing, has a wrong folder name or starts after Pepper Farmer.                                                                                                                   | Install the resource as in step 1, check the folder name (no `-main`), put its `ensure` line **above** `ensure pepper_farmer`.                                                                                          |
| `Could not find dependency /onesync for resource pepper_farmer.`                                                                                                                                                | OneSync is off.                                                                                                                                                                                         | Enable OneSync (step 1).                                                                                                                                                                                                |
| `Could not find dependency /server:7290 …`                                                                                                                                                                      | Your server build is too old.                                                                                                                                                                           | Update FXServer to a current build (in txAdmin or by downloading new server files).                                                                                                                                     |
| `Couldn't start resource pepper_farmer.`                                                                                                                                                                        | Follow-up error – the actual cause is **directly above** it in the console.                                                                                                                             | Read the line above and look it up in this table.                                                                                                                                                                       |
| `No such export RegisterStash in resource ox_inventory` (or another `No such export … in resource ox_inventory`)                                                                                                | ox\_inventory did not start – almost always because of a typo in `data/items.lua` (second `return {`, missing comma, text after the last `}`) or in `containers.lua` (block after `return containers`). | Look further up in the console for the red ox\_inventory error (it names the line number). Check steps 5 and 6 or restore the backup and paste again.                                                                   |
| Red warning between `=====` lines: `Config.Framework = '…', aber die Ressource '…' läuft nicht`                                                                                                                 | Wrong framework set, or the framework starts after Pepper Farmer.                                                                                                                                       | Check `Config.Framework` (step 4) and the order in `server.cfg` (step 9).                                                                                                                                               |
| Console shows `started (framework: standalone)`                                                                                                                                                                 | No framework detected.                                                                                                                                                                                  | Same as above: check steps 4 and 9.                                                                                                                                                                                     |
| `Datenbank nicht erreichbar (Versuch 1/10) …` followed by `Pepper Farmer konnte die Datenbank nicht erreichen und bleibt inaktiv.` (printed in German: "database not reachable … Pepper Farmer stays inactive") | oxmysql cannot connect to the database.                                                                                                                                                                 | Check `mysql_connection_string` in `server.cfg` (user, password, database name) and whether the MySQL/MariaDB service is running. Once the oxmysql connection works, Pepper Farmer starts normally on the next restart. |
| `Mindestens ein Schema-Block ist fehlgeschlagen – bitte Konsole prüfen.` (German: "at least one schema block failed")                                                                                           | Tables could not be created (often missing permissions of the database user).                                                                                                                           | Import `install/pepper_farmer.sql` manually (step 8).                                                                                                                                                                   |
| Items show as `tomato` instead of "Tomato" in the inventory, or can't be given                                                                                                                                  | The items are missing in `ox_inventory/data/items.lua`.                                                                                                                                                 | Do step 5, then restart the **whole** server.                                                                                                                                                                           |
| Items have German names although you want English                                                                                                                                                               | The German item file was pasted.                                                                                                                                                                        | Replace the block in `items.lua` with the content of `install/ox_items_en.lua`.                                                                                                                                         |
| Harvest basket doesn't accept anything / is a normal item                                                                                                                                                       | The container block is missing.                                                                                                                                                                         | Do step 6, restart the server.                                                                                                                                                                                          |
| Tablet doesn't open (`F6` / `/farmer`)                                                                                                                                                                          | Pepper Farmer isn't running, the folder was renamed, or a framework error.                                                                                                                              | Check the console for `Pepper Farmer v… started`, check the folder name `pepper_farmer`, check the F8 console for red errors. Another script may use `F6` – try `/farmer` and change the key in the GTA settings.       |
| **Admin** tab missing in the tablet                                                                                                                                                                             | No admin rights.                                                                                                                                                                                        | Check step 10, then restart the server or reconnect.                                                                                                                                                                    |
| ox\_target options missing on crops, merchants or machines                                                                                                                                                      | ox\_target isn't running or starts after Pepper Farmer – or the location is somewhere else than expected.                                                                                               | Check the order (step 9). If the location is off: move it in the admin tab ([Admin Tab & Locations](broken://pages/52a88d6a724c08c0b288cd67655c2b029d8140c3)).                                                          |
| `You lack the required entitlement …` / `Failed to verify protected resource`                                                                                                                                   | Asset Escrow: the server license key doesn't belong to the account that bought the script – or encrypted files were modified.                                                                           | Use the `sv_licenseKey` of the buyer's account, download the resource again from the portal. See [Asset Escrow](file:///getting-started/asset-escrow.md).                                                               |
| Warning about `sv_endpointPrivacy`                                                                                                                                                                              | General FXServer notice, **not** from Pepper Farmer.                                                                                                                                                    | Harmless – you can ignore it.                                                                                                                                                                                           |
| Crops, lease boards or merchants float or are stuck in the ground                                                                                                                                               | The default coordinates are approximations.                                                                                                                                                             | Set them to the right spot in the admin tab ([Admin Tab & Locations](broken://pages/52a88d6a724c08c0b288cd67655c2b029d8140c3)).                                                                                         |
| Machine doesn't recognise the field                                                                                                                                                                             | The lanes of the large field are not where you drive.                                                                                                                                                   | Admin tab → **Fields**: drive the lanes again. For testing set `Config.Debug = true`.                                                                                                                                   |
| Money goes to the wrong account (cash instead of bank)                                                                                                                                                          | Setting `Config.Money`.                                                                                                                                                                                 | Change it in `config/config.lua` (see [Configuration](broken://pages/ddc58590b5875d0bc2c03bce7ed67c85dbbc72c5)).                                                                                                        |

{% hint style="success" %}
Still stuck? Open a ticket on our [Discord](https://discord.gg/6NaFJWKDYu) and send us a screenshot of the server console **from the server start** and your `ensure` lines from `server.cfg`.
{% endhint %}
