> For the complete documentation index, see [llms.txt](https://docs.kuzquality.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kuzquality.com/resources/premium-resources/weed-production/config.md).

# Config

{% tabs %}
{% tab title="config.lua" %}

```lua
Config = {}

-- Enabling this will add additional prints and debug visuals
Config.debug = false
--
Config.locale = 'en'

Config.sql = {
    driver = 'oxmysql', -- oxmysql or ghmattimysql or mysql
    -- If you're using an older version of oxmysql set this to false
    newOxMysql = true,
}

-- Plant saving system
-- If you use short grow times (sub 10 minutes), we recommend turning this off, as it shouldn't be necessary and will save on some performance
Config.saving = {
    -- Whether to save and load the plant state
    enabled = true,

    -- Systems: 'sql', 'kvp'
    system = 'sql',

    -- Saving interval in seconds (The save also occurs when a plant gets planted, collected or dies)
    -- Recommended 180 (3min) - 1800 (30min)
    interval = 600, -- default = 600 (10min)

    -- Delete plants data from the database which have not been updated for more than X days
    -- Specified in days
    deletePlantsOlderThan = 7,
}

Config.items = {
    emptyBaggie = 'kq_weed_bag_empty',
    rollingPaper = 'kq_weed_paper',

    weedPot = 'kq_weed_pot',
    weedTable = 'kq_weed_table',
    weedPress = 'kq_weed_press',

    weedTent = 'kq_weed_tent',
    wateringSystem = 'kq_weed_watering_system',
}

-- Various miscellaneous options
Config.misc = {
    -- Whether players should always be able to destroy the plants. When disabled, players may only destroy them once the plants die
    alwaysAllowPlantDestroy = true,

    -- Whether the lockup/growop doors should be closed automatically after few seconds of inactivity
    autoCloseDoors = true,

    -- Whether players should be able to look around with the Grow Op security camera
    allowSecurityCameraMovement = true,

    -- Whether to display plant status in a UI box when standing near it
    showPlantStatusUI = false,

    blips = {
        growop = {
            enabled = true,

            label = 'Weed Grow-op',
            sprite = 496,
            color = 62,
            alpha = 255,
            scale = 0.9,
        },
        lockup = {
            enabled = true,

            label = 'Weed Lockup',
            sprite = 496,
            color = 39,
            alpha = 255,
            scale = 0.7,
        },
    },

    -- The time between player ability refresh (server -> client)
    -- Used to limit/allow client sided interactions.
    -- Time in ms
    abilityRefreshInterval = 60000,
}

-- Watering minigame options
Config.watering = {
    -- General speed of water application to the soil
    -- (5 - 50)
    wateringSpeed = 17,

    -- Water brush size (max radius applied at once)
    -- Larger = quicker watering, Lower = slower watering
    -- (3 - 16)
    brushSize = 7,
}

Config.placing = {
    checks = {
        -- Whether to only allow the placement of objects in routing buckets which are not `0`.
        -- This prevents players from placing the objects when not in a housing or other system utilizing routing buckets
        onlyInNonDefaultRoutingBucket = false,

        -- Whether to disallow placement on/near roads
        disallowPlacementNearRoads = true,

        housing = {
            -- Whether to enable a housing check. This will allow placement of objects, only when inside a house.
            enabled = false,

            -- Available systems:
            -- nolag_properties
            -- origen_housing
            -- bcs_housing

            -- If your system is not on the list. Chances are that the RoutingBucket detection will be sufficient.
            -- We still recommend implementing a housing integration if you know how to.
            -- Many popular systems are not pre-configured by us, as they lack the necessary exports/states or don't have any docs.
            system = 'nolag_properties',
        },

        -- You may also restrict the placement of objects to specific areas.
        -- When used with a housing check, it'll allow placement in houses as well as within the defined areas
        -- If you want greater customization, check the `IsAllowedToPlace` function in server/editable/editable.lua
        whitelistedAreas = {
            enabled = false,

            showBlips = true,
            areas = {
                { -- Grape Seed fields area
                    coords = vec3(1933.0, 4922.0, 46.0),
                    radius = 250.0
                },
                { -- Fields east of Grape Seed
                    coords = vec3(2880.0, 4624.0, 50.0),
                    radius = 150.0
                },
            }
        }
    },

    -- Whether only the player who has placed an object can pick it back up
    -- <!> Administrators can always pick them up. Check the editable server file for admin definition.
    onlyOwnerCanPickup = true,
}

-- You can utilize our debug placement commands to easily gather these coordinates
-- /kq_weed:potOffset
-- /kq_weed:tableOffset
-- /kq_weed:pressOffset
Config.prePlaced = {
    pots = {
        -- Barn up north
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(433.70, 6455.19, 27.75),   rotation = vec3(0, 0, 320) },
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(434.41, 6454.69, 27.75),   rotation = vec3(0, 0, 320) },
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(435.09, 6454.19, 27.75),   rotation = vec3(0, 0, 320) },
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(435.80, 6453.69, 27.75),   rotation = vec3(0, 0, 320) },
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(436.51, 6453.19, 27.75),   rotation = vec3(0, 0, 320) },
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(437.22, 6452.69, 27.75),   rotation = vec3(0, 0, 320) },

        -- Trevor's beach house
        { optimal = true,  showTent = true,  autoWatering = false, coords = vec3(-1150.66, -1513.53, 9.63), rotation = vec3(0, 0, 290) },

        -- Franklin's Mansion
        { optimal = true,  showTent = true,  autoWatering = false, coords = vec3(5.74, 530.42, 174.34),       rotation = vec3(0, 0, 331) },
        { optimal = true,  showTent = true,  autoWatering = false, coords = vec3(4.94, 530.86, 174.34),      rotation = vec3(0, 0, 331) },
        { optimal = true,  showTent = true,  autoWatering = false, coords = vec3(4.14, 531.3, 174.34),      rotation = vec3(0, 0, 331) },
        { optimal = true,  showTent = true,  autoWatering = false, coords = vec3(3.34, 531.74, 174.34),      rotation = vec3(0, 0, 331) },

        -- Lost MC HQ
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(985.14, -90.25, 73.84), rotation = vec3(0, 0, 133) },
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(985.58, -90.73, 73.84), rotation = vec3(0, 0, 133) },
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(986.02, -91.21, 73.84), rotation = vec3(0, 0, 133) },
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(986.46, -91.69, 73.84), rotation = vec3(0, 0, 133) },
        { optimal = false, showTent = false, autoWatering = false, coords = vec3(986.90, -92.17, 73.84), rotation = vec3(0, 0, 133) },

        -- Train cart in LS near Legion
        { optimal = true, showTent = true, autoWatering = false, coords = vec3(563.98, -510.97, 24.89), rotation = vec3(0, 0, 82) },
        { optimal = true, showTent = true, autoWatering = false, coords = vec3(564.11, -510.08, 24.89), rotation = vec3(0, 0, 82) },
        { optimal = true, showTent = true, autoWatering = false, coords = vec3(564.24, -509.19, 24.89), rotation = vec3(0, 0, 82) },
        { optimal = true, showTent = true, autoWatering = false, coords = vec3(564.37, -508.30, 24.89), rotation = vec3(0, 0, 82) },
        { optimal = true, showTent = true, autoWatering = false, coords = vec3(564.50, -507.41, 24.89), rotation = vec3(0, 0, 82) },

    },
    tables = {
        -- Barn up north
        { coords = vec3(439.45, 6453.96, 27.77), rotation = vec3(0, 0, 51) },

        -- Franklin's Mansion
        { coords = vec3(-2.15, 528.62, 173.99), rotation = vec3(0, 0, 59) },

        -- Lost MC HQ
        { coords = vec3(983.52, -91.41, 73.85), rotation = vec3(0, 0, 222) },

        -- Train cart in LS near Legion
        { coords = vec3(565.26, -501.37, 24.89), rotation = vec3(0, 0, 82) },
    },
    presses = {
        -- Barn up north
        { coords = vec3(435.37, 6457.92, 27.82), rotation = vec3(0, 0, 225) },

        -- Train cart in LS near Legion
        { coords = vec3(565.52, -499.61, 24.89), rotation = vec3(0, 0, 82) },
    },
}

-- Simple item shop system
-- We highly recommend adding these items to your shops, heists, robberies etc. instead
Config.vendors = {
    ["fertilizer_store"] = {
        coords = vec3(1976.11, 4636.80, 39.95),
        heading = 80.0,
        model = "a_m_m_hillbilly_01",
        idleAnim = {
            dict = "timetable@ron@ig_3_couch",
            anim = "base"
        },
        items = {
            ['kq_weed_fertilizer_speed'] = { label = "Fertilizer [Growth speed]", price = 200 },
            ['kq_weed_fertilizer_yield'] = { label = "Fertilizer [Yield amount]", price = 200 },
            ['kq_weed_fertilizer_resistance'] = { label = "Fertilizer [Resistance booster]", price = 200 },
            ['kq_weed_fertilizer_blackmarket'] = { label = "Fertilizer [Blackmarket]", price = 400 },
        },
        blip = {
            enabled = true,

            label = 'Fertilizer dealer',
            sprite = 622,
            color = 62,
            alpha = 255,
            scale = 0.7,
        },
    },
    ["seed_store"] = {
        coords = vec3(-1174.68, -1570.62, 3.35),
        heading = 124.0,
        model = "g_m_y_famdnf_01",
        idleAnim = {
            dict = "amb@world_human_leaning@male@wall@back@foot_up@idle_a",
            anim = "idle_a"
        },
        items = {
            ['kq_weed_seed_og_kush'] = { label = "Weed seed [OG Kush]", price = 100 },
            ['kq_weed_seed_purple_haze'] = { label = "Weed seed [Purple Haze]", price = 250 },
            ['kq_weed_seed_white_widow'] = { label = "Weed seed [White Widow]", price = 750 },
            ['kq_weed_bag_empty'] = { label = "Empty baggie", price = 30, amount = 5 },
        },
        blip = {
            enabled = true,

            label = 'Weed seed dealer',
            sprite = 140,
            color = 62,
            alpha = 255,
            scale = 0.7,
        },
    },
    ["tools_store"] = {
        coords = vec3(-197.64, -1711.25, 31.66),
        heading = 124.0,
        model = "g_m_y_famfor_01",
        idleAnim = {
            dict = "amb@world_human_leaning@male@wall@back@foot_up@idle_a",
            anim = "idle_a"
        },
        items = {
            ['kq_weed_paper'] = { label = "Rolling paper", price = 15, amount = 5 },
            ['kq_weed_pot'] = { label = "Weed Pot", price = 1000 },
            ['kq_weed_table'] = { label = "Weed workbench", price = 5000 },
            ['kq_weed_press'] = { label = "Weed press", price = 15000 },
            ['kq_weed_tent'] = { label = "Grow tent", price = 6000 },
            ['kq_weed_watering_system'] = { label = "Automatic watering system", price = 7000 },
        },
        blip = {
            enabled = true,

            label = 'Weed Paraphernalia dealer',
            sprite = 784,
            color = 62,
            alpha = 255,
            scale = 0.7,
        },
    },
}

-- Item quality metadata (ONLY FOR ox_inventory !)
-- The weed quality depends on the plant conditions, how well it has been watered, and how quickly it has been collected since finishing its growing process
Config.qualityMetadata = {
    -- Whether to enable the quality in the metadata for product. (Buds, bricks, baggies, joints)
    -- If you do not know how to setup your selling systems to work with the quality metadata, there is no point in enabling it.
    -- This is purely an option for advanced usage
    enabled = false,

    -- Whether to use the quality metadata for seeds as well. The quality of the seed will be the maximum quality of the weed buds collected
    seedQuality = false,
}
```

{% endtab %}

{% tab title="config.lockups.lua" %}

```lua
-- Colors of Lockups containers
-- 0 = white/default
-- 1 = blue
-- 2 = green
-- 3 = orange
-- 4 = red
-- 5 = black
-- 6 = Cyan
-- 7 = lime
-- 8 = dark green
-- 9 = maroon
-- 10 = dark red
-- 11 = dark purple
-- 12 = gray
-- 13 = dark gray
-- 14 = light gray
-- 15 = yellow

Config.lockups = {
    ['container_1'] = {
        -- Model name of the container
        model = 'kq_weed_container_01',

        -- All the locations at which this lockup will spawn
        locations = {
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, -0.5, -25.6),
                color = 9,

                -- Limit players of specific jobs to be able to access the lockups
                jobs = { 'mafia', 'police' },
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 90),
                color = 3,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 65),
                color = 1,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 269),
                color = 0,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 269),
                color = 0,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, -0.06, 267),
                color = 0,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 200),
                color = 4,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0.95, 0, 223),
                color = 7,
            },
        },

        -- Information about the door of the lockup. No need to modify this
        door = {
            model = 'kq_weed_container_door',
            coords = vec3(-2.61, -3.4, -0.0),
            rotation = vec3(0, 0, 0)
        },
        -- The relative position of the interactions
        interactions = {
            lights = vec3(-2.15, 3.21, 1.56),
        },
        -- The relative placement of the tables
        tables = {
            {
                coords = vec3(-2.1, 0.4, 0.07),
                rotation = vec3(0, 0, 90),
            },
        },
        -- The relative placement of the presses
        presses = {
            {
                coords = vec3(-2.2, -1.3, 0.07),
                rotation = vec3(0, 0, 90),
            },
        },
        -- The relative placement of the pots
        pots = {
            -- Row A
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2, 2.5, 0.07),    rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2, 1.75, 0.07),   rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2, 1, 0.07),      rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2, 0.25, 0.07),   rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2, -0.5, 0.07),   rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2, -1.25, 0.07),  rotation = vec3(0, 0, 180) },
            -- Row B
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.2, 2.5, 0.07),  rotation = vec3(0, 0, 0) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.2, 1.75, 0.07), rotation = vec3(0, 0, 0) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.2, 1, 0.07),    rotation = vec3(0, 0, 0) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.2, 0.25, 0.07), rotation = vec3(0, 0, 0) },
        },
        -- Randomized props which may spawn inside the lockup
        props = {
            {
                -- Chance of the prop spawning inside a location (seeded by its location)
                chance = 60,
                -- Possible models of the prop
                models = {
                    'hei_prop_hei_skid_chair',
                    'bkr_prop_weed_chair_01a',
                    'prop_chair_02',
                    'v_serv_abox_1',
                },
                -- Relative coordinates of the prop
                coords = vec3(1.85, -2.6, 0.07),
                rotation = vec3(0, 0, 210),
            },
            {
                chance = 65,
                models = {
                    'prop_rub_couch03',
                    'prop_rub_couch01',
                    'v_res_tre_sofa_mess_b',
                    'v_tre_sofa_mess_c_s',
                    'v_res_tre_sofa_s',
                    'v_res_d_sofa',
                    'v_res_j_sofa',
                    'v_ind_meatbench',
                    'v_ret_ml_beerlog2',
                },
                coords = vec3(0.1, -2.85, 0.07),
                rotation = vec3(0, 0, 181),
            },
            {
                chance = 60,
                model = 'prop_barrel_02b',
                coords = vec3(-2.25, 2.95, 0.07),
                rotation = vec3(0, 0, 240),
            },
            {
                chance = 60,
                model = 'prop_barrel_02b',
                coords = vec3(-2.25, 2.4, 0.07),
                rotation = vec3(0, 0, 30),
            },
            {
                chance = 30,
                model = 'prop_rub_binbag_04',
                coords = vec3(-1.5, 2.79, 0.02),
                rotation = vec3(20, 0, 140),
            },
            {
                chance = 50,
                models = {
                    'v_ind_cf_chckbox1',
                    'v_ind_meatboxsml_02',
                    'v_ind_cs_box02',
                },
                coords = vec3(-2.15, -0.13, 0.07),
                rotation = vec3(0, 0, 9),
            },
            {
                chance = 50,
                model = 'v_ind_cfbox2',
                coords = vec3(1.99, 3.0, 0.08),
                rotation = vec3(0, 0, 354),
            },
        },
    },
    ['container_2'] = {
        model = 'kq_weed_container_02',
        locations = {
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 270),
                color = 14,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 148),
                color = 3,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 90),
                color = 1,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 220),
                color = 2,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 181),
                color = 13,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 88),
                color = 10,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 67),
                color = 6,
            },
        },

        door = {
            model = 'kq_weed_container_door',
            coords = vec3(-2.61, -3.4, -0.0),
            rotation = vec3(0, 0, 0)
        },
        interactions = {
            lights = vec3(-2.15, 3.21, 1.56),
        },
        tables = {
            {
                coords = vec3(-2.1, 0.4, 0.07),
                rotation = vec3(0, 0, 90),
            }
        },
        presses = {
            {
                coords = vec3(-2.2, -1.3, 0.07),
                rotation = vec3(0, 0, 90),
            },
        },
        props = {
            {
                chance = 60,
                model = 'prop_barrel_02b',
                coords = vec3(-2.25, 2.95, 0.07),
                rotation = vec3(0, 0, 240),
            },
            {
                chance = 60,
                model = 'prop_barrel_02b',
                coords = vec3(-2.25, 2.4, 0.07),
                rotation = vec3(0, 0, 30),
            },
            {
                chance = 30,
                model = 'prop_rub_binbag_04',
                coords = vec3(-1.5, 2.79, 0.02),
                rotation = vec3(20, 0, 140),
            },
            {
                chance = 60,
                models = {
                    'prop_barrel_02b',
                    'v_corp_sidechair',
                    'bkr_prop_weed_chair_01a',
                },
                coords = vec3(-1.0, -2.95, 0.07),
                rotation = vec3(0, 0, 181),
            },
            {
                chance = 50,
                models = {
                    'v_ind_cf_chckbox1',
                    'v_ind_meatboxsml_02',
                    'v_ind_cs_box02',
                },
                coords = vec3(-2.15, -0.13, 0.07),
                rotation = vec3(0, 0, 9),
            },
        },
        pots = {
            -- Row A
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2.1, 3.5, 0.07),    rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(1.35, 3.5, 0.07),   rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.6, 3.5, 0.07),    rotation = vec3(0, 0, 270) },
            -- Row B
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2.1, 1.85, 0.07),   rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(1.35, 1.85, 0.07),  rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.6, 1.85, 0.07),   rotation = vec3(0, 0, 270) },
            -- Row C
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2.1, 0.2, 0.07),    rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(1.35, 0.2, 0.07),   rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.6, 0.2, 0.07),    rotation = vec3(0, 0, 270) },
            -- Row D
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2.1, -1.45, 0.07),  rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(1.35, -1.45, 0.07), rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.6, -1.45, 0.07),  rotation = vec3(0, 0, 270) },
        },
    },
    ['container_3'] = {
        model = 'kq_weed_container_03',
        locations = {
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 270),
                color = 0,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 110),
                color = 6,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 271),
                color = 7,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 176),
                color = 4,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 60),
                color = 8,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 174),
                color = 1,
            },
            {
                coords = vec3(REDACTED6),
                rotation = vec3(0, 0, 85),
                color = 13,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(-0.5, 1.8, 270),
                color = 14,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 111),
                color = 5,
            },
        },

        door = {
            model = 'kq_weed_container_door',
            coords = vec3(-2.61, -3.4, -0.0),
            rotation = vec3(0, 0, 0)
        },
        interactions = {
            lights = vec3(-2.5, -1.4, 1.57),
        },
        tables = {
            {
                coords = vec3(2.1, -1.4, 0.07),
                rotation = vec3(0, 0, 270),
            }
        },
        presses = {
            {
                coords = vec3(0.055, -2.95, 0.07),
                rotation = vec3(0, 0, 182),
            },
        },
        props = {
            {
                chance = 60,
                models = {
                    'prop_barrel_02b',
                    'bkr_prop_weed_chair_01a',
                },
                coords = vec3(-1.05, -2.95, 0.07),
                rotation = vec3(0, 0, 185),
            },
            {
                chance = 30,
                model = 'prop_rub_binbag_04',
                coords = vec3(-1.5, 2.78, 0.02),
                rotation = vec3(20, 0, 140),
            },
            {
                chance = 50,
                model = 'v_ind_cfbox2',
                coords = vec3(1.99, 3.0, 0.08),
                rotation = vec3(0, 0, 354),
            },
        },
        pots = {
            -- Row A
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2, 2.5, 0.07),      rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2, 1.75, 0.07),     rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(2, 1, 0.07),        rotation = vec3(0, 0, 180) },
            -- Row B
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.35, 2.5, 0.07),   rotation = vec3(0, 0, 0) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.35, 1.75, 0.07),  rotation = vec3(0, 0, 0) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(0.35, 1, 0.07),     rotation = vec3(0, 0, 0) },
            -- Row C
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(-0.35, 2.5, 0.07),  rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(-0.35, 1.75, 0.07), rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(-0.35, 1, 0.08),    rotation = vec3(0, 0, 180) },
            -- Row D
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(-2, 2.5, 0.07),     rotation = vec3(0, 0, 0) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(-2, 1.75, 0.07),    rotation = vec3(0, 0, 0) },
            { optimal = true, showTent = false, autoWatering = false, coords = vec3(-2, 1, 0.07),       rotation = vec3(0, 0, 0) },
        },
    },
}
```

{% endtab %}

{% tab title="config.growops.lua" %}

```lua

-- Colors of GrowOps containers
-- 0 = white/default
-- 1 = blue
-- 2 = green
-- 3 = orange
-- 4 = red
-- 5 = black
-- 6 = Cyan
-- 7 = lime
-- 8 = dark green
-- 9 = maroon
-- 10 = dark red
-- 11 = dark purple
-- 12 = gray
-- 13 = dark gray
-- 14 = light gray
-- 15 = yellow

Config.growops = {
    ['main'] = {
        interior = {
            model = 'kq_weed_growop_int',
            offset = vec3(0.3, 4.78, -4.3),
            rotation = vec3(0, 0, 0)
        },

        -- The Z offset of the shell (interior) entity
        shellZOffset = 1400.0,

        -- All the locations at which this grow op will spawn
        locations = {
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 57),

                -- Limit players of specific jobs to be able to access the grow ops
                jobs = { 'mafia', 'police' },
                color = 12,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 170),
                color = 2,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 270),
                color = 4,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0.5, -0.25, 148),
                color = 12,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 0),
                color = 15,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 141),
                color = 0,
            },
            {
                coords = vec3(REDACTED9),
                rotation = vec3(-1.9, -0.7, 350),
                color = 6,
            },
            {
                coords = vec3(REDACTED),
                rotation = vec3(0, 0, 43),
                color = 3,
            },
        },

        -- The relative placement of the tables
        tables = {
            {
                coords = vec3(-7.35, 5.1, -5.23),
                rotation = vec3(0, 0, 90),
            },
            {
                coords = vec3(-6.2, 9.17, -5.23),
                rotation = vec3(0, 0, 0),
            },
        },

        -- The relative placement of the presses
        presses = {
            {
                coords = vec3(-3.27, 4.2, -5.23),
                rotation = vec3(0, 0, 183),
            },
            {
                coords = vec3(-4.9, 4.16, -5.23),
                rotation = vec3(0, 0, 179),
            },
        },
        -- The relative position of the interactions
        interactions = {
            cctv = vec3(2.15, 4.3, -4.2),
        },
        pots = {
            -- Row 1A
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(-3.25, 21.0, -5.25), rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(-2.4, 21.0, -5.25),  rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(-1.55, 21.0, -5.25), rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(-0.7, 21.0, -5.25),  rotation = vec3(0, 0, 270) },
            -- Row 1B
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(-3.25, 18.5, -5.25), rotation = vec3(0, 0, 90) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(-2.4, 18.5, -5.25),  rotation = vec3(0, 0, 90) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(-1.55, 18.5, -5.25), rotation = vec3(0, 0, 90) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(-0.7, 18.5, -5.25),  rotation = vec3(0, 0, 90) },

            -- Row 2A
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(3.75, 20.8, -5.25),  rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(2.9, 20.8, -5.25),   rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(2.05, 20.8, -5.25),  rotation = vec3(0, 0, 270) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(1.2, 20.8, -5.25),   rotation = vec3(0, 0, 270) },
            -- Row 2B
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(3.75, 18.3, -5.25),  rotation = vec3(0, 0, 90) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(2.9, 18.3, -5.25),   rotation = vec3(0, 0, 90) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(2.05, 18.3, -5.25),  rotation = vec3(0, 0, 90) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(1.2, 18.3, -5.25),   rotation = vec3(0, 0, 90) },

            -- Row 3A
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(3.65, 15.25, -5.23), rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(3.7, 14.45, -5.23),  rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(3.75, 13.65, -5.23), rotation = vec3(0, 0, 180) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(3.8, 12.85, -5.23),  rotation = vec3(0, 0, 180) },
            -- Row 3B
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(1, 15.25, -5.23),    rotation = vec3(0, 0, 0) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(1.05, 14.45, -5.23), rotation = vec3(0, 0, 0) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(1.1, 13.65, -5.23),  rotation = vec3(0, 0, 0) },
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(1.15, 12.85, -5.23), rotation = vec3(0, 0, 0) },
        },
        props = {
            {
                model = 'prop_cctv_01_sm',
                coords = vec3(2.7, 4.18, -4.36),
                rotation = vec3(0, 0, 200),
            },
            {
                model = 'prop_cctv_unit_03',
                coords = vec3(2.05, 4.2, -4.36),
                rotation = vec3(0, 0, 177),
            },
            {
                model = 'prop_cctv_cont_04',
                coords = vec3(2.15, 4.2, -4.74),
                rotation = vec3(0, 0, 182),
            },
            {
                model = 'bkr_prop_weed_fan_floor_01a',
                coords = vec3(-3.5, 19.8, -5.24),
                rotation = vec3(0, 0, 85),
            },
            {
                model = 'bkr_prop_weed_fan_floor_01a',
                coords = vec3(2.54, 11.56, -5.24),
                rotation = vec3(0, 0, 172),
            },
            {
                model = 'bkr_prop_weed_fan_floor_01a',
                coords = vec3(4.01, 19.8, -5.24),
                rotation = vec3(0, 0, 273),
            },
            {
                model = 'xm3_prop_xm3_tank_water_01a',
                coords = vec3(-2.6, 14.1, -5.43),
                rotation = vec3(0, 0, 88),
            },
            {
                model = 'xm3_prop_xm3_tank_water_01a',
                coords = vec3(-2.62, 12.1, -5.43),
                rotation = vec3(0, 0, 91),
            },
            {
                chance = 45,
                models = {
                    'prop_generator_01a',
                },
                coords = vec3(-1.18, 4.46, -5.25),
                rotation = vec3(0, 0, 91),
            },
            {
                chance = 65,
                models = {
                    'prop_generator_01a',
                },
                coords = vec3(3.39, 16.64, -5.25),
                rotation = vec3(0, 0, 273),
            },
            {
                chance = 60,
                models = {
                    'hei_prop_hei_skid_chair',
                    'bkr_prop_weed_chair_01a',
                    'prop_chair_02',
                },
                coords = vec3(-1.8, 13.1, -5.25),
                rotation = vec3(0, 0, 110),
            },
            {
                chance = 40,
                models = {
                    'hei_prop_hei_skid_chair',
                    'bkr_prop_weed_chair_01a',
                    'prop_chair_02',
                },
                coords = vec3(-1.04, 10.68, -5.25),
                rotation = vec3(0, 0, 188),
            },
            {
                chance = 75,
                models = {
                    'xm3_prop_xm3_box_wood_01a',
                    'xm3_prop_xm3_rub_matress_01a',
                    'xm3_prop_xm3_crate_phac_01b',
                    'v_res_tre_sofa_mess_b',
                    'xm3_prop_xm3_tarp_roll_01a',
                    'xm3_prop_xm3_crate_01a',
                    'prop_portaloo_01a',
                },
                coords = vec3(3.3, 7.4, -5.25),
                rotation = vec3(0, 0, 265),
            },
            {
                chance = 75,
                models = {
                    'xm3_prop_xm3_box_wood_01a',
                    'xm3_prop_xm3_rub_matress_01a',
                    'xm3_prop_xm3_crate_phac_01b',
                    'xm3_prop_xm3_tarp_roll_01a',
                    'xm3_prop_xm3_crate_01a',
                },
                coords = vec3(-1.60, 16.12, -5.25),
                rotation = vec3(0, 0, 182),
            },
            {
                models = {
                    'hei_prop_hei_skid_chair',
                    'bkr_prop_weed_chair_01a',
                    'prop_chair_02',
                },
                coords = vec3(-7.45, 6.86, -5.26),
                rotation = vec3(0, 0, 91),
            },
            {
                models = {
                    'hei_prop_hei_skid_chair',
                    'bkr_prop_weed_chair_01a',
                    'prop_chair_02',
                },
                coords = vec3(2.7, 5.0, -5.26),
                rotation = vec3(0, 0, 335),
            },
            {
                chance = 80,
                models = {
                    'bkr_prop_weed_bucket_01c', 'bkr_prop_weed_bucket_open_01a', 'ng_proc_leaves07',
                    'p_ld_cable_tie_01_s', 'ng_proc_cigpak01c', 'ng_proc_cigbuts02a', 'gr_prop_gr_pliers_01',
                },
                coords = vec3(-2.99, 10.77, -5.25),
                rotation = vec3(0, 0, 41),
            },
            {
                chance = 80,
                models = {
                    'bkr_prop_weed_bucket_01c', 'bkr_prop_weed_bucket_open_01a', 'ng_proc_leaves07',
                    'p_ld_cable_tie_01_s', 'ng_proc_cigpak01c', 'ng_proc_cigbuts02a', 'gr_prop_gr_pliers_01',
                },
                coords = vec3(-2.95, 15.82, -5.25),
                rotation = vec3(0, 0, 144),
            },
            {
                chance = 80,
                models = {
                    'bkr_prop_weed_bucket_01c', 'bkr_prop_weed_bucket_open_01a', 'ng_proc_leaves07',
                    'p_ld_cable_tie_01_s', 'ng_proc_cigpak01c', 'ng_proc_cigbuts02a', 'gr_prop_gr_pliers_01',
                },
                coords = vec3(3.04, 15.55, -5.25),
                rotation = vec3(0, 0, 32),
            },
            {
                chance = 80,
                models = {
                    'bkr_prop_weed_bucket_01c', 'bkr_prop_weed_bucket_open_01a', 'ng_proc_leaves07',
                    'p_ld_cable_tie_01_s', 'ng_proc_cigpak01c', 'ng_proc_cigbuts02a', 'gr_prop_gr_pliers_01',
                },
                coords = vec3(2.52, 21.55, -5.25),
                rotation = vec3(0, 0, 231),
            },
            {
                chance = 80,
                models = {
                    'bkr_prop_weed_bucket_01c', 'bkr_prop_weed_bucket_open_01a', 'ng_proc_leaves07',
                    'p_ld_cable_tie_01_s', 'ng_proc_cigpak01c', 'ng_proc_cigbuts02a', 'gr_prop_gr_pliers_01',
                },
                coords = vec3(-0.9, 18.96, -5.25),
                rotation = vec3(0, 0, 83),
            },
            {
                chance = 80,
                models = {
                    'bkr_prop_weed_bucket_01c', 'bkr_prop_weed_bucket_open_01a', 'ng_proc_leaves07',
                    'p_ld_cable_tie_01_s', 'ng_proc_cigpak01c', 'ng_proc_cigbuts02a', 'gr_prop_gr_pliers_01',
                },
                coords = vec3(-2.87, 21.77, -5.25),
                rotation = vec3(0, 0, 55),
            },
            {
                chance = 80,
                models = {
                    'bkr_prop_weed_bucket_01c', 'bkr_prop_weed_bucket_open_01a', 'ng_proc_leaves07',
                    'p_ld_cable_tie_01_s', 'ng_proc_cigpak01c', 'ng_proc_cigbuts02a', 'gr_prop_gr_pliers_01',
                },
                coords = vec3(3.67, 10.29, -5.25),
                rotation = vec3(0, 0, 32),
            },
            {
                models = {
                    'bkr_prop_weed_pallet', 'xm3_prop_xm3_crate_01b',
                },
                coords = vec3(-3.56, 8.8, -5.24),
                rotation = vec3(0, 0, 184),
            },
        },
    },


    ['kq_sbx_shell_64'] = {
        interior = {
            model = 'kq_sbx_shell_64',
            offset = vec3(2.0, -2.0, 4.0),
            rotation = vec3(0, 0, 180.0)
        },

        shellZOffset = 1400.0,

        locations = {
            {
                coords = vec3(1111.07, 3020.13, 39.53), -- CHANGE ME
                rotation = vec3(0, 0, 195.97), -- CHANGE ME
                color = 9,
            },
            -- ADD MORE LOCATIONS HERE AS NEEDED
        },

        tables = {
            {
                coords = vec3(-2.1, 5.32, -5.24), -- CHANGE ME
                rotation = vec3(0, 0, 89.62),
            },
            -- ADD MORE TABLES HERE AS NEEDED
        },
        presses = {
            {
                coords = vec3(2.79, 8.24, -5.24), -- CHANGE ME
                rotation = vec3(0, 0, 270.9),
            },
            -- ADD MORE PRESSES HERE AS NEEDED
        },
        -- use `/kq_weed:potOffset` while inside the grow op to easily retrieve the offset coordinates
        pots = {
            { optimal = true, showTent = false, autoWatering = true, coords = vec3(2.77, 6.2, -5.24), rotation = vec3(0, 0, 180.46) }
            -- ADD MORE POTS HERE AS NEEDED
        },
    },

    --['kq_sbx_shell_64'] = {
    --    interior = {
    --        model = 'kq_sbx_shell_64',
    --        offset = vec3(2.0, -2.0, 4.0),
    --        rotation = vec3(0, 0, 180.0)
    --    },
    --
    --    shellZOffset = 1400.0,
    --
    --    locations = {
    --        {
    --            coords = vec3(2515.96, 4220.33, 38.93),
    --            rotation = vec3(0, 0, 57),
    --            color = 9,
    --        },
    --    },
    --
    --    tables = {
    --        {
    --            coords = vec3(-2.12, 6.28, -5.24),
    --            rotation = vec3(0, 0, 90),
    --        },
    --        {
    --            coords = vec3(-1.47, 11.2, -5.24),
    --            rotation = vec3(0, 0, 0),
    --        },
    --    },
    --    presses = {
    --        {
    --            coords = vec3(2.94, 4.93, -5.24),
    --            rotation = vec3(0, 0, 270),
    --        },
    --        {
    --            coords = vec3(2.94, 6.43, -5.24),
    --            rotation = vec3(0, 0, 270),
    --        },
    --    },
    --    -- use `/kq_weed:potOffset` while inside the grow op to easily retrieve the offset coordinates
    --    pots = {
    --        -- ROW A
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-3.75, 10.86, -8.29), rotation = vec3(0, 0, 270) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-2.75, 10.86, -8.29), rotation = vec3(0, 0, 270) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-1.75, 10.86, -8.29), rotation = vec3(0, 0, 270) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-0.75, 10.86, -8.29), rotation = vec3(0, 0, 270) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(0.25, 10.86, -8.29), rotation = vec3(0, 0, 270) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(1.25, 10.86, -8.29), rotation = vec3(0, 0, 270) },
    --
    --        -- ROW B
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-3.75, 8.65, -8.29), rotation = vec3(0, 0, 90) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-2.75, 8.65, -8.29), rotation = vec3(0, 0, 90) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-1.75, 8.65, -8.29), rotation = vec3(0, 0, 90) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-0.75, 8.65, -8.29), rotation = vec3(0, 0, 90) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(0.25, 8.65, -8.29), rotation = vec3(0, 0, 90) },
    --
    --        -- ROW C
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-3.75, 7.86, -8.29), rotation = vec3(0, 0, 270) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-2.75, 7.86, -8.29), rotation = vec3(0, 0, 270) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-1.75, 7.86, -8.29), rotation = vec3(0, 0, 270) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(-0.75, 7.86, -8.29), rotation = vec3(0, 0, 270) },
    --        { optimal = true, showTent = false, autoWatering = true, coords = vec3(0.25, 7.86, -8.29), rotation = vec3(0, 0, 270) },
    --    },
    --},
}
```

{% endtab %}

{% tab title="config.fertilizers.lua" %}

```lua
-- Define your fertilizer types here

Config.fertilizerTypes = {
    ['growth_speed'] = {
        label = 'Growth speed',
        item = 'kq_weed_fertilizer_speed',

        -- 0 = Blue -- 1 = Yellow -- 2 = White -- 3 = Red -- 4 = Black -- 5 = Brown -- 6 = Purple -- 7 = Green
        color = 0,
        multipliers = {
            -- General growth speed
            growthSpeed = 1.3,
            -- Water consumption multiplier
            waterConsumption = 1.4,
            -- Plant resistance to dryness and decay(collection) lifespan
            resistance = 0.9,
            -- Amount of weed received from the plant
            yield = 0.9,
        },
    },
    ['yield_amount'] = {
        label = 'Yield amount',
        item = 'kq_weed_fertilizer_yield',

        -- 0 = Blue -- 1 = Yellow -- 2 = White -- 3 = Red -- 4 = Black -- 5 = Brown -- 6 = Purple -- 7 = Green
        color = 1,
        multipliers = {
            -- General growth speed
            growthSpeed = 0.75,
            -- Water consumption multiplier
            waterConsumption = 1.2,
            -- Plant resistance to dryness and decay(collection) lifespan
            resistance = 1.0,
            -- Amount of weed received from the plant
            yield = 1.45,
        },
    },
    ['resistance_booster'] = {
        label = 'Resistance booster',
        item = 'kq_weed_fertilizer_resistance',

        -- 0 = Blue -- 1 = Yellow -- 2 = White -- 3 = Red -- 4 = Black -- 5 = Brown -- 6 = Purple -- 7 = Green
        color = 7,
        multipliers = {
            -- General growth speed
            growthSpeed = 0.95,
            -- Water consumption multiplier
            waterConsumption = 1.1,
            -- Plant resistance to dryness and decay(collection) lifespan
            resistance = 2.5,
            -- Amount of weed received from the plant
            yield = 1.0,
        },
    },
    ['blackmarket_fertilizer'] = {
        label = 'Blackmarket',
        item = 'kq_weed_fertilizer_blackmarket',

        -- 0 = Blue -- 1 = Yellow -- 2 = White -- 3 = Red -- 4 = Black -- 5 = Brown -- 6 = Purple -- 7 = Green
        color = 6,
        multipliers = {
            -- General growth speed
            growthSpeed = 1.3,
            -- Water consumption multiplier
            waterConsumption = 1.5,
            -- Plant resistance to dryness and decay(collection) lifespan
            resistance = 0.75,
            -- Amount of weed received from the plant
            yield = 1.1,
        },
    },

    -- You can add as many different types of fertilizers as you want
}
```

{% endtab %}

{% tab title="config.strains.lua" %}

```lua
Config.weedTypes = {
    ['og_kush'] = {
        -- Display name of the breed
        label = 'OG Kush',

        seedItem = 'kq_weed_seed_og_kush',
        baggieItem = 'kq_weed_bag_og_kush',
        jointItem = 'kq_weed_joint_og_kush',
        brickItem = 'kq_weed_brick_og_kush',

        -- Base growth time in minutes (Excluding any multipliers, think optimal conditions, fertilizer etc.)
        -- Recommended minimum of 4 minutes
        baseGrowTime = 13,

        -- The yield of the plant
        yield = {
            -- Amount of buds the plant should give (excluding any multipliers)
            buds = {
                item = 'kq_weed_bud_og_kush',
                min = 6,
                max = 8,
            },
            seeds = {
                -- The chances of receiving any seeds back
                chance = 50,
                -- Min/max amounts of seed once the random chance hits
                min = 1,
                max = 2,

                -- Chances of receiving a different seed after plant collection
                mutations = {
                    {
                        item = 'kq_weed_seed_purple_haze',
                        chance = 15,
                    },
                    {
                        item = 'kq_weed_seed_white_widow',
                        chance = 5,
                    },
                }
            }
        },
        -- Re-water time in minutes (How often does the plant need watering)
        -- (Players are able to add water as soon as the level drops below 50%)
        -- After this time, the plant will immediately start losing health. Treat this as the max time between watering
        -- Recommended minimum of 3 minutes
        wateringTime = 9,

        -- The amount of health plants will lose per second when the soil fully dries out (max health = 100)
        -- Plants will also halt growing without any water
        dryHealthLoss = 0.83, -- (0.83) By default plants will survive for 2 minutes without any water

        -- Full growth lifespan in minutes
        -- The time players have between the plant fully growing and it dying after not being picked
        -- Recommended minimum of 4 minutes
        collectionLifespan = 25,

        -- Requires "optimal conditions" to grow
        -- Optimal conditions are defined in the config where pots are created, or by a player placed pot with a grow tent
        -- The plant will die (at +-20% of growth process) if its not grown in optimal conditions (Lockups, Grow Ops or a grow tent)
        needsConditions = false,

        growthMultipliers = {
            -- The growth speed multiplier of the plant when planted in a pot with optimal conditions
            optimalConditions = 1.2,
        },

        -- Color of the leaves
        -- 0 = Green (classic) -- 1 = Light purple -- 2 = Red -- 3 = Blue -- 4 = Yellow -- 5 = Bright pink -- 6 = White -- 7 = Black/dark
        plantColor = 0,

        -- Amount of buds needed for a brick
        -- Recommended 10 - 40 buds per brick
        budsPerBrick = 20,
    },
    ['purple_haze'] = {
        -- Display name of the breed
        label = 'Purple Haze',

        seedItem = 'kq_weed_seed_purple_haze',
        baggieItem = 'kq_weed_bag_purple_haze',
        jointItem = 'kq_weed_joint_purple_haze',
        brickItem = 'kq_weed_brick_purple_haze',

        -- Base growth time in minutes (Excluding any multipliers, think optimal conditions, fertilizer etc.)
        -- Recommended minimum of 4 minutes
        baseGrowTime = 20,

        -- The yield of the plant
        yield = {
            -- Amount of buds the plant should give (excluding any multipliers)
            buds = {
                item = 'kq_weed_bud_purple_haze',
                min = 5,
                max = 6,
            },
            seeds = {
                -- The chances of receiving any seeds back
                chance = 30,
                -- Min/max amounts of seed once the random chance hits
                min = 1,
                max = 2,

                -- Chances of receiving a different seed after plant collection
                mutations = {
                    {
                        item = 'kq_weed_seed_og_kush',
                        chance = 15,
                    },
                    {
                        item = 'kq_weed_seed_white_widow',
                        chance = 15,
                    },
                    {
                        item = 'kq_weed_seed_blue_dream',
                        chance = 5,
                    },
                }
            }
        },
        -- Re-water time in minutes (How often does the plant need watering)
        -- (Players are able to add water as soon as the level drops below 50%)
        -- After this time, the plant will immediately start losing health. Treat this as the max time between watering
        -- Recommended minimum of 3 minutes
        wateringTime = 12,

        -- The amount of health plants will lose per second when the soil fully dries out (max health = 100)
        -- Plants will also halt growing without any water
        dryHealthLoss = 0.83, -- (0.83) By default plants will survive for 2 minutes without any water

        -- Full growth lifespan in minutes
        -- The time players have between the plant fully growing and it dying after not being picked
        -- Recommended minimum of 4 minutes
        collectionLifespan = 30,

        -- Requires "optimal conditions" to grow
        -- Optimal conditions are defined in the config where pots are created, or by a player placed pot with a grow tent
        -- The plant will die if its not grown in optimal conditions (Lockups, Grow Ops or a grow tent)
        needsConditions = false,

        growthMultipliers = {
            -- The growth speed multiplier of the plant when planted in a pot with optimal conditions
            optimalConditions = 1.2,
        },

        -- Color of the leaves
        -- 0 = Green (classic) -- 1 = Light purple -- 2 = Red -- 3 = Blue -- 4 = Yellow -- 5 = Bright pink -- 6 = White -- 7 = Black/dark
        plantColor = 1,

        -- Amount of buds needed for a brick
        -- Recommended 10 - 40 buds per brick
        budsPerBrick = 20,
    },
    ['white_widow'] = {
        -- Display name of the breed
        label = 'White widow',

        seedItem = 'kq_weed_seed_white_widow',
        baggieItem = 'kq_weed_bag_white_widow',
        jointItem = 'kq_weed_joint_white_widow',
        brickItem = 'kq_weed_brick_white_widow',

        -- Base growth time in minutes (Excluding any multipliers, think optimal conditions, fertilizer etc.)
        -- Recommended minimum of 4 minutes
        baseGrowTime = 30,

        -- The yield of the plant
        yield = {
            -- Amount of buds the plant should give (excluding any multipliers)
            buds = {
                item = 'kq_weed_bud_white_widow',
                min = 5,
                max = 6,
            },
            seeds = {
                -- The chances of receiving any seeds back
                chance = 35,
                -- Min/max amounts of seed once the random chance hits
                min = 1,
                max = 2,

                -- Chances of receiving a different seed after plant collection
                mutations = {
                    {
                        item = 'kq_weed_seed_purple_haze',
                        chance = 10,
                    }
                }
            }
        },
        -- Re-water time in minutes (How often does the plant need watering)
        -- (Players are able to add water as soon as the level drops below 50%)
        -- After this time, the plant will immediately start losing health. Treat this as the max time between watering
        -- Recommended minimum of 3 minutes
        wateringTime = 15,

        -- The amount of health plants will lose per second when the soil fully dries out (max health = 100)
        -- Plants will also halt growing without any water
        dryHealthLoss = 0.83, -- (0.83) By default plants will survive for ~2 minutes without any water

        -- Full growth lifespan in minutes
        -- The time players have between the plant fully growing and it dying after not being picked
        -- Recommended minimum of 4 minutes
        collectionLifespan = 20,

        -- Requires "optimal conditions" to grow
        -- Optimal conditions are defined in the config where pots are created, or by a player placed pot with a grow tent
        -- The plant will die if its not grown in optimal conditions (Lockups, Grow Ops or a grow tent)
        needsConditions = true,

        growthMultipliers = {
            -- The growth speed multiplier of the plant when planted in a pot with optimal conditions
            optimalConditions = 1.0,
        },

        -- Color of the leaves
        -- 0 = Green (classic) -- 1 = Light purple -- 2 = Red -- 3 = Blue -- 4 = Yellow -- 5 = Bright pink -- 6 = White -- 7 = Black/dark
        plantColor = 6,

        -- Amount of buds needed for a brick
        -- Recommended 10 - 40 buds per brick
        budsPerBrick = 20,
    },
    ['blue_dream'] = {
        -- Display name of the breed
        label = 'Blue dream',

        seedItem = 'kq_weed_seed_blue_dream',
        baggieItem = 'kq_weed_bag_blue_dream',
        jointItem = 'kq_weed_joint_blue_dream',
        brickItem = 'kq_weed_brick_blue_dream',

        -- Base growth time in minutes (Excluding any multipliers, think optimal conditions, fertilizer etc.)
        -- Recommended minimum of 4 minutes
        baseGrowTime = 45,

        -- The yield of the plant
        yield = {
            -- Amount of buds the plant should give (excluding any multipliers)
            buds = {
                item = 'kq_weed_bud_blue_dream',
                min = 5,
                max = 7,
            },
            seeds = {
                -- The chances of receiving any seeds back
                chance = 35,
                -- Min/max amounts of seed once the random chance hits
                min = 1,
                max = 3,

                -- Chances of receiving a different seed after plant collection
                mutations = {
                    {
                        item = 'kq_weed_seed_purple_haze',
                        chance = 15,
                    }
                }
            }
        },
        -- Re-water time in minutes (How often does the plant need watering)
        -- (Players are able to add water as soon as the level drops below 50%)
        -- After this time, the plant will immediately start losing health. Treat this as the max time between watering
        -- Recommended minimum of 3 minutes
        wateringTime = 18,

        -- The amount of health plants will lose per second when the soil fully dries out (max health = 100)
        -- Plants will also halt growing without any water
        dryHealthLoss = 0.83, -- (0.83) By default plants will survive for ~2 minutes without any water

        -- Full growth lifespan in minutes
        -- The time players have between the plant fully growing and it dying after not being picked
        -- Recommended minimum of 4 minutes
        collectionLifespan = 60,

        -- Requires "optimal conditions" to grow
        -- Optimal conditions are defined in the config where pots are created, or by a player placed pot with a grow tent
        -- The plant will die if its not grown in optimal conditions (Lockups, Grow Ops or a grow tent)
        needsConditions = true,

        growthMultipliers = {
            -- The growth speed multiplier of the plant when planted in a pot with optimal conditions
            optimalConditions = 1.0,
        },

        -- Color of the leaves
        -- 0 = Green (classic) -- 1 = Light purple -- 2 = Red -- 3 = Blue -- 4 = Yellow -- 5 = Bright pink -- 6 = White -- 7 = Black/dark
        plantColor = 3,

        -- Amount of buds needed for a brick
        -- Recommended 10 - 40 buds per brick
        budsPerBrick = 20,
    },

    -- You can add as many different strains of weed as you want
}
```

{% endtab %}
{% endtabs %}
