# 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 %}


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://docs.kuzquality.com/resources/premium-resources/weed-production/config.md?ask=<question>
```

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

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