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

# Installation

{% hint style="danger" %}
Do not skim the instructions. You need to follow every step of the Install Guide to make sure you're installing the script correctly
{% endhint %}

## <sub>Dependency Installation</sub>

### <sub>Jim\_Bridge</sub>

{% hint style="info" %}
This is required for the script to function, it won't work without it
{% endhint %}

{% stepper %}
{% step %}

### <sub>Download</sub>

Get it free from github - <https://github.com/jimathy/jim_bridge>
{% endstep %}

{% step %}

### Extract

Extract `jim_bridge` and make sure `-main` is removed from the script folder name
{% endstep %}

{% step %}

### Install

Place the extracted `jim_bridge` folder into `/resources/[standalone]`&#x20;
{% endstep %}

{% step %}

### Done

{% endstep %}
{% endstepper %}

***

## <sub>Framework Installation</sub>

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

### Add the script to the server resources

* It is highly recommend to put this script folder in a new folder called `[jim]`
* Then add `ensure [jim]` **AFTER** your other scripts in your server.cfg

***

### Ensure List

GO TO YOUR `server.cfg`

{% hint style="warning" %}
The ORDER of the load order is important, check information [here](https://jixelpatterns.gitbook.io/docs/troubleshooting/common-issues#load-order)
{% endhint %}

### Resources (EXAMPLE)

```markdown
# Default & Standalone Resources
# ------------------------------
ensure chat
ensure hardcap
ensure oxmysql
start ox_lib

# ESX Legacy Core
# ----------
ensure [core]
ensure [esx_addons]
start ox_inventory
start ox_target
ensure [standalone] # Place `jim_bridge` here

# ESX Addons
# ----------

# Other
ensure [jimextras]  # Place `jim-payments` / `jim-consumables` / `jim-jobgarage` / `jim-djbooth` here
ensure [jim]        # Place all other jim scripts here
```

{% hint style="warning" %}
**IF YOU ALREADY HAVE A \[jim] FOLDER, PUT IT IN THAT FOLDER YOU DO NOT NEED TO CREATE A NEW ONE.**
{% endhint %}

***

### [Jim-Payments](https://github.com/jimathy/jim-payments) (Required/Optional)

* This is the default system for payments in the script but can easily be changed in `client.lua`
* When triggered gets a list of the nearest players and lets you choose which one to charge
* I class it as `optional` because you don't specifically need it if you have another you want to use.

***

### [Jim-Consumables](https://github.com/jimathy/jim-consumables) (Optional)

* If `jim-consumables` is installed, the script will attempt to reroute consumables
* The server side will automatically add the items to `jim-consumables` (edit any values you wish there)
* When used the item will trigger the `jim-script:client:consume` event which detects wether to use built in event's or `jim-consuambles` (if found)
  {% endtab %}

{% tab title="QBCore" %}

### Add the script to the server resources

* It is highly recommend to put this script folder in a new folder called `[jim]`
* Then add `ensure [jim]` **AFTER** your other scripts in your server.cfg

***

### Ensure List

GO TO YOUR `server.cfg`

{% hint style="warning" %}
The ORDER of the load order is important, check information here
{% endhint %}

### Resources (EXAMPLE)

```markdown
# QBCore & Extra stuff
ensure qb-core
ensure [qb]
ensure [standalone] # Place `jim_bridge` here
ensure [voice]
ensure [defaultmaps]


# Extra Jim Stuff
ensure [jimextras]  # Place `jim-payments` / `jim-consumables` / `jim-jobgarage` / `jim-djbooth` here
ensure [jim]        # Place all other jim scripts here
```

{% hint style="warning" %}
**IF YOU ALREADY HAVE A \[jim] FOLDER, PUT IT IN THAT FOLDER YOU DO NOT NEED TO CREATE A NEW ONE.**
{% endhint %}

***

### [Jim-Payments](https://github.com/jimathy/jim-payments) (Required/Optional)

* This is the default system for payments in the script but can easily be changed in `client.lua`
* When triggered gets a list of the nearest players and lets you choose which one to charge
* I class it as `optional` because you don't specifically need it if you have another you want to use.

***

### [Jim-Consumables](https://github.com/jimathy/jim-consumables) (Optional)

* If `jim-consumables` is installed, the script will attempt to reroute consumables
* The server side will automatically add the items to `jim-consumables` (edit any values you wish there)
* When used the item will trigger the `jim-script:client:consume` event which detects wether to use built in event's or `jim-consuambles` (if found)

***

{% endtab %}

{% tab title="QBOX" %}

### Add the script to the server resources

* It is highly recommend to put this script folder in a new folder called `[jim]`
* Then add `ensure [jim]` **AFTER** your other scripts in your server.cfg

***

### Ensure List

GO TO YOUR `server.cfg`

{% hint style="warning" %}
The ORDER of the load order is important, check information here
{% endhint %}

### Resources (EXAMPLE)

```markdown
# Qbox & Extra stuff
ensure ox_lib
ensure qbx_core
ensure ox_target
ensure [ox]
ensure [qbx]
ensure [standalone] # Place `jim_bridge` here
ensure [voice]

ensure [npwd-apps]
ensure qbx_npwd
ensure npwd

# Extra Jim Stuff
ensure [jimextras]  # Place `jim-payments` / `jim-consumables` / `jim-jobgarage` / `jim-djbooth` here
ensure [jim]        # Place all other jim scripts here
```

{% hint style="warning" %}
**IF YOU ALREADY HAVE A \[jim] FOLDER, PUT IT IN THAT FOLDER YOU DO NOT NEED TO CREATE A NEW ONE.**
{% endhint %}

***

### [Jim-Payments](https://github.com/jimathy/jim-payments) (Required/Optional)

* This is the default system for payments in the script but can easily be changed in `client.lua`
* When triggered gets a list of the nearest players and lets you choose which one to charge
* I class it as `optional` because you don't specifically need it if you have another you want to use.

***

### [Jim-Consumables](https://github.com/jimathy/jim-consumables) (Optional)

* If `jim-consumables` is installed, the script will attempt to reroute consumables
* The server side will automatically add the items to `jim-consumables` (edit any values you wish there)
* When used the item will trigger the `jim-script:client:consume` event which detects wether to use built in event's or `jim-consuambles` (if found)

***

{% endtab %}

{% tab title="OX\_Core" %}

### Add the script to the server resources

* It is highly recommend to put this script folder in a new folder called `[jim]`
* Then add `ensure [jim]` **AFTER** your other scripts in your server.cfg

***

### Ensure List

GO TO YOUR `server.cfg`&#x20;

{% hint style="warning" %}
The ORDER of the load order is important, check information here
{% endhint %}

### Resources (EXAMPLE)

```markdown
start chat
start sessionmanager
start pe-basicloading
start bob74_ipl
start pma-voice
start oxmysql
start ox_lib
start ox_core
start ox_target
start illenium-appearance
start ox_inventory
ensure [standalone] # Place `jim_bridge` here

# Extra Jim Stuff
ensure [jimextras]  # Place `jim-payments` / `jim-consumables` / `jim-jobgarage` / `jim-djbooth` here
ensure [jim]        # Place all other jim scripts here

# Extra Other Scripts Here
```

{% hint style="warning" %}
**IF YOU ALREADY HAVE A \[jim] FOLDER, PUT IT IN THAT FOLDER YOU DO NOT NEED TO CREATE A NEW ONE.**
{% endhint %}

***

### [Jim-Payments](https://github.com/jimathy/jim-payments) (Required/Optional)

* This is the default system for payments in the script but can easily be changed in `client.lua`
* When triggered gets a list of the nearest players and lets you choose which one to charge
* I class it as `optional` because you don't specifically need it if you have another you want to use.

***

### [Jim-Consumables](https://github.com/jimathy/jim-consumables) (Optional)

* If `jim-consumables` is installed, the script will attempt to reroute consumables
* The server side will automatically add the items to `jim-consumables` (edit any values you wish there)
* When used the item will trigger the `jim-script:client:consume` event which detects wether to use built in event's or `jim-consuambles` (if found)
  {% endtab %}
  {% endtabs %}

## Job Installation

{% tabs %}
{% tab title="ESX" %}
Import the `esx_jobs.sql` into your database to add the jobs and their grades

```sql
INSERT IGNORE INTO `account_roles` (`name`) VALUES
('novice'),
('experienced'),
('advanced'),
('manager'),
('owner');

INSERT IGNORE INTO `ox_groups` ( `name`, `label`, `colour`, `hasAccount`) VALUES
( 'catcafe', 'Cat Cafe', NULL, 1 );

INSERT IGNORE INTO `ox_group_grades` (`group`, `grade`, `label`, `accountRole`) VALUES
('catcafe', 0, 'Recruit', NULL),
('catcafe', 1, 'Novice', 'novice'),
('catcafe', 2, 'Experienced', 'experienced'),
('catcafe', 3, 'Advanced', 'advanced'),
('catcafe', 4, 'Manager', 'manager'),
('catcafe', 5, 'Owner', 'owner');
```

{% endtab %}

{% tab title="QBCore" %}
Add the lines from `qb_jobs.txt` to your `qb-core > shared > jobs.lua`

```lua
['catcafe'] = {
    label = 'Cat Cafe',
    defaultDuty = true,
    grades = {
        ['0'] = { name = 'Recruit', payment = 50 },
        ['1'] = { name = 'Novice', payment = 75 },
        ['2'] = { name = 'Experienced', payment = 100 },
        ['3'] = { name = 'Advanced', payment = 125 },
        ['4'] = { name = 'Manager', isboss = true, payment = 150 },
    },
},
```

{% endtab %}

{% tab title="QBOX" %}
Add the lines from `qb_jobs.txt` to your `qbx_core > shared > jobs.lua`

```lua
['catcafe'] = {
    label = 'Cat Cafe',
    defaultDuty = true,
    grades = {
        [0] = { name = 'Recruit', payment = 50 },
        [1] = { name = 'Novice', payment = 75 },
        [2] = { name = 'Experienced', payment = 100 },
        [3] = { name = 'Advanced', payment = 125 },
        [4] = { name = 'Manager', isboss = true, payment = 150 },
    },
},
```

{% endtab %}

{% tab title="OX\_Core" %}
Import the `ox_jobs.sql` into your database to add the jobs and their grades

```sql
INSERT INTO `ox_groups` ( `name`, `label`, `grades`, `hasAccount`, `adminGrade`, `colour` ) VALUES
    ( 'catcafe', 'Cat Cafe', '["Recruit", "Novice", "Experienced", "Advanced", "Manager"]', '0', 1, NULL )
;
```

{% endtab %}
{% endtabs %}

## Item Installation

{% tabs %}
{% tab title="QB-Inv" %}
{% hint style="warning" %}
These items work for both old and new `qb-inventory`
{% endhint %}

### Item Images

Add the images from `_install > images` to your inventory folder&#x20;

* eg. `qb-inventory > html > images`

### Item Data

If using `qb-inventory` or similar, add the lines from `qb_items.txt` to your `qb-core > shared > items.lua`

```lua
-- JIM-CATCAFE --
    bmochi    = { name = "bmochi", label = "Blue Mochi", weight = 100, type = "item", image = "mochiblue.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A soft blue mochi treat" },
    pmochi    = { name = "pmochi", label = "Pink Mochi", weight = 100, type = "item", image = "mochipink.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A soft pink mochi treat" },
    gmochi    = { name = "gmochi", label = "Green Mochi", weight = 100, type = "item", image = "mochigreen.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A soft green mochi treat" },
    omochi    = { name = "omochi", label = "Orange Mochi", weight = 100, type = "item", image = "mochiorange.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A soft orange mochi treat" },

    --Drinks
    bobatea    = { name = "bobatea", label = "Boba Tea", weight = 100, type = "item", image = "bubbletea.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Classic boba tea with chewy tapioca" },
    bbobatea    = { name = "bbobatea", label = "Blue Boba Tea", weight = 100, type = "item", image = "bubbleteablue.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Boba tea with a blue fruity twist" },
    gbobatea    = { name = "gbobatea", label = "Green Boba Tea", weight = 100, type = "item", image = "bubbleteagreen.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Green tea flavored boba" },
    pbobatea    = { name = "pbobatea", label = "Pink Boba Tea", weight = 100, type = "item", image = "bubbleteapink.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Strawberry pink boba tea" },
    obobatea    = { name = "obobatea", label = "Orange Boba Tea", weight = 100, type = "item", image = "bubbleteaorange.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Citrus-flavored orange boba" },

    nekolatte    = { name = "nekolatte", label = "Neko Latte", weight = 100, type = "item", image = "latte.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Creamy latte with cat art" },
    catcoffee    = { name = "catcoffee", label = "Cat Coffee", weight = 100, type = "item", image = "catcoffee.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Coffee served with a smiley cat" },

    sake    = { name = "sake", label = "Sake", weight = 100, type = "item", image = "sake.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Traditional Japanese rice wine" },

    miso    = { name = "miso", label = "Miso Soup", weight = 100, type = "item", image = "miso.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Warm bowl of miso soup" },
    cake    = { name = "cake", label = "Strawberry Cake", weight = 100, type = "item", image = "cake.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Strawberry frosted cake slice" },
    bento    = { name = "bento", label = "Bento Box", weight = 500, type = "item", image = "bento.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Boxed meal with rice and sides" },

    riceball    = { name = "riceball", label = "Neko Onigiri", weight = 100, type = "item", image = "catrice.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Rice ball shaped like a cat" },

    nekocookie    = { name = "nekocookie", label = "Neko Cookie", weight = 100, type = "item", image = "catcookie.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Sweet cookie shaped like a cat" },
    nekodonut    = { name = "nekodonut", label = "Neko Donut", weight = 100, type = "item", image = "catdonut.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Cat-themed donut" },

    --Ingredients
    boba    = { name = "boba", label = "Boba", weight = 100, type = "item", image = "boba.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Tapioca pearls for bubble tea" },
    flour    = { name = "flour", label = "Flour", weight = 100, type = "item", image = "flour.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Baking flour" },
    rice    = { name = "rice", label = "Bowl of Rice", weight = 100, type = "item", image = "rice.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Plain white rice" },
    sugar    = { name = "sugar", label = "Sugar", weight = 100, type = "item", image = "sugar.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Sweet granulated sugar" },
    nori    = { name = "nori", label = "Nori", weight = 100, type = "item", image = "nori.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Dried seaweed sheet" },
    blueberry    = { name = "blueberry", label = "Blueberry", weight = 100, type = "item", image = "blueberry.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "A handful of blueberries" },
    strawberry    = { name = "strawberry", label = "Strawberry", weight = 100, type = "item", image = "strawberry.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Fresh strawberry" },
    orange    = { name = "orange", label = "Orange", weight = 200, type = "item", image = "orange.png", unique = false, useable = false, shouldClose = false, combinable = nil, description = "An orange." },
    mint    = { name = "mint", label = "Matcha", weight = 100, type = "item", image = "matcha.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Finely ground green tea" },
    tofu    = { name = "tofu", label = "Tofu", weight = 100, type = "item", image = "tofu.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Soft block of tofu" },

    mocha    = { name = "mocha", label = "Mocha Meow", weight = 100, type = "item", image = "mochameow.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Chocolate coffee delight" },

    cakepop    = { name = "cakepop", label = "Cat Cake-Pop", weight = 100, type = "item", image = "cakepop.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Small cake on a stick" },
    pancake    = { name = "pancake", label = "PawCake", weight = 100, type = "item", image = "pawcakes.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Paw-print shaped pancake" },
    pizza    = { name = "pizza", label = "Kitty Pizza", weight = 100, type = "item", image = "catpizza.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Cheesy pizza with a cute design" },
    purrito    = { name = "purrito", label = "Purrito", weight = 100, type = "item", image = "purrito.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Burrito with feline charm" },

    noodlebowl    = { name = "noodlebowl", label = "Bowl of Noodles", weight = 100, type = "item", image = "noodlebowl.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Hot bowl of noodles" },
    noodles    = { name = "noodles", label = "Instant Noodles", weight = 100, type = "item", image = "noodles.png", unique = false, useable = false, shouldClose = true, combinable = nil, description = "Uncooked packet of noodles" },
    ramen    = { name = "ramen", label = "Bowl of Ramen", weight = 100, type = "item", image = "ramen.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Savory ramen bowl" },

    milk    = { name = "milk", label = "Milk", weight = 300, type = "item", image = "burger-milk.png", unique = false, useable = true, shouldClose = true, combinable = nil, description = "Carton of Milk" },
    onion    = { name = "onion", label = "Onion", weight = 500, type = "item", image = "burger-onion.png", unique = false, useable = false, shouldClose = false, combinable = nil, description = "An onion" },

```

{% endtab %}

{% tab title="OX\_Inv" %}
{% hint style="warning" %}
This applies to any framework using `ox_inventory`
{% endhint %}

{% hint style="warning" %}
Currently while using `ESX` my scripts only support `ox_inventory`
{% endhint %}

### Item Images

Copy and paste the images from `_install > images` to your inventory folder&#x20;

* eg. `ox_inventory > web > images`

### Item Data

Add the `ox_items.txt` to your `ox_inventory > data > items.lua`

```lua
 --JIM-CATCAFE
    bmochi = { label = "Blue Mochi", weight = 100, stack = true, close = true, description = "A soft blue mochi treat",
        client = { image = "mochiblue.png",  event = "jim-catcafe:client:Consume", }
    },
    pmochi = { label = "Pink Mochi", weight = 100, stack = true, close = true, description = "A soft pink mochi treat",
        client = { image = "mochipink.png",  event = "jim-catcafe:client:Consume", }
    },
    gmochi = { label = "Green Mochi", weight = 100, stack = true, close = true, description = "A soft green mochi treat",
        client = { image = "mochigreen.png",  event = "jim-catcafe:client:Consume", }
    },
    omochi = { label = "Orange Mochi", weight = 100, stack = true, close = true, description = "A soft orange mochi treat",
        client = { image = "mochiorange.png",  event = "jim-catcafe:client:Consume", }
    },

    bobatea = { label = "Boba Tea", weight = 100, stack = true, close = true, description = "Classic boba tea with chewy tapioca",
        client = { image = "bubbletea.png",  event = "jim-catcafe:client:Consume", }
    },
    bbobatea = { label = "Blue Boba Tea", weight = 100, stack = true, close = true, description = "Boba tea with a blue fruity twist",
        client = { image = "bubbleteablue.png",  event = "jim-catcafe:client:Consume", }
    },
    gbobatea = { label = "Green Boba Tea", weight = 100, stack = true, close = true, description = "Green tea flavored boba",
        client = { image = "bubbleteagreen.png",  event = "jim-catcafe:client:Consume", }
    },
    pbobatea = { label = "Pink Boba Tea", weight = 100, stack = true, close = true, description = "Strawberry pink boba tea",
        client = { image = "bubbleteapink.png",  event = "jim-catcafe:client:Consume", }
    },
    obobatea = { label = "Orange Boba Tea", weight = 100, stack = true, close = true, description = "Citrus-flavored orange boba",
        client = { image = "bubbleteaorange.png",  event = "jim-catcafe:client:Consume", }
    },

    nekolatte = { label = "Neko Latte", weight = 100, stack = true, close = true, description = "Creamy latte with cat art",
        client = { image = "latte.png",  event = "jim-catcafe:client:Consume", }
    },
    catcoffee = { label = "Cat Coffee", weight = 100, stack = true, close = true, description = "Coffee served with a smiley cat",
        client = { image = "catcoffee.png",  event = "jim-catcafe:client:Consume", }
    },

    sake = { label = "Sake", weight = 100, stack = true, close = true, description = "Traditional Japanese rice wine",
        client = { image = "sake.png",  event = "jim-catcafe:client:Consume", }
    },

    miso = { label = "Miso Soup", weight = 100, stack = true, close = true, description = "Warm bowl of miso soup",
        client = { image = "miso.png",  event = "jim-catcafe:client:Consume", }
    },
    cake = { label = "Strawberry Cake", weight = 100, stack = true, close = true, description = "Strawberry frosted cake slice",
        client = { image = "cake.png",  event = "jim-catcafe:client:Consume", }
    },
    bento = { label = "Bento Box", weight = 500, stack = true, close = true, description = "Boxed meal with rice and sides",
        client = { image = "bento.png",  event = "jim-catcafe:client:Consume", }
    },

    riceball = { label = "Neko Onigiri", weight = 100, stack = true, close = true, description = "Rice ball shaped like a cat",
        client = { image = "catrice.png",  event = "jim-catcafe:client:Consume", }
    },

    nekocookie = { label = "Neko Cookie", weight = 100, stack = true, close = true, description = "Sweet cookie shaped like a cat",
        client = { image = "catcookie.png",  event = "jim-catcafe:client:Consume", }
    },
    nekodonut = { label = "Neko Donut", weight = 100, stack = true, close = true, description = "Cat-themed donut",
        client = { image = "catdonut.png",  event = "jim-catcafe:client:Consume", }
    },

    boba = { label = "Boba", weight = 100, stack = true, close = true, description = "Tapioca pearls for bubble tea",
        client = { image = "boba.png",  event = "jim-catcafe:client:Consume", }
    },
    flour = { label = "Flour", weight = 100, stack = true, close = true, description = "Baking flour",
        client = { image = "flour.png",  event = "jim-catcafe:client:Consume", }
    },
    rice = { label = "Bowl of Rice", weight = 100, stack = true, close = true, description = "Plain white rice",
        client = { image = "rice.png",  event = "jim-catcafe:client:Consume", }
    },
    sugar = { label = "Sugar", weight = 100, stack = true, close = true, description = "Sweet granulated sugar",
        client = { image = "sugar.png",  event = "jim-catcafe:client:Consume", }
    },
    nori = { label = "Nori", weight = 100, stack = true, close = true, description = "Dried seaweed sheet",
        client = { image = "nori.png", }
    },
    blueberry = { label = "Blueberry", weight = 100, stack = true, close = true, description = "A handful of blueberries",
        client = { image = "blueberry.png",  event = "jim-catcafe:client:Consume", }
    },
    strawberry = { label = "Strawberry", weight = 100, stack = true, close = true, description = "Fresh strawberry",
        client = { image = "strawberry.png",  event = "jim-catcafe:client:Consume", }
    },
    orange = { label = "Orange", weight = 200, stack = true, close = true, description = "An orange.",
        client = { image = "orange.png", }
    },
    mint = { label = "Matcha", weight = 100, stack = true, close = true, description = "Finely ground green tea",
        client = { image = "matcha.png", }
    },
    tofu = { label = "Tofu", weight = 100, stack = true, close = true, description = "Soft block of tofu",
        client = { image = "tofu.png",  event = "jim-catcafe:client:Consume", }
    },

    mocha = { label = "Mocha Meow", weight = 100, stack = true, close = true, description = "Chocolate coffee delight",
        client = { image = "mochameow.png",  event = "jim-catcafe:client:Consume", }
    },

    cakepop = { label = "Cat Cake-Pop", weight = 100, stack = true, close = true, description = "Small cake on a stick",
        client = { image = "cakepop.png",  event = "jim-catcafe:client:Consume", }
    },
    pancake = { label = "PawCake", weight = 100, stack = true, close = true, description = "Paw-print shaped pancake",
        client = { image = "pawcakes.png",  event = "jim-catcafe:client:Consume", }
    },
    pizza = { label = "Kitty Pizza", weight = 100, stack = true, close = true, description = "Cheesy pizza with a cute design",
        client = { image = "catpizza.png", event = "jim-catcafe:client:Consume", }
    },
    purrito = { label = "Purrito", weight = 100, stack = true, close = true, description = "Burrito with feline charm",
        client = { image = "purrito.png", event = "jim-catcafe:client:Consume", }
    },

    noodlebowl = { label = "Bowl of Noodles", weight = 100, stack = true, close = true, description = "Hot bowl of noodles",
        client = { image = "noodlebowl.png", event = "jim-catcafe:client:Consume", }
    },
    noodles = { label = "Instant Noodles", weight = 100, stack = true, close = true, description = "Uncooked packet of noodles",
        client = { image = "noodles.png", }
    },
    ramen = { label = "Bowl of Ramen", weight = 100, stack = true, close = true, description = "Savory ramen bowl",
        client = { image = "ramen.png", event = "jim-catcafe:client:Consume", }
    },

    milk = { label = "Milk", weight = 300, stack = true, close = true, description = "Carton of Milk",
        client = { image = "burger-milk.png", event = "jim-catcafe:client:Consume", }
    },
    onion = { label = "Onion", weight = 500, stack = true, close = true, description = "An onion",
        client = { image = "burger-onion.png", }
    },
```

{% endtab %}
{% endtabs %}
