Plant definitions
Every plant is a JSON file in the datapack registry plantations:plant: data/<namespace>/plantations/plant/<plant>.json. Datapacks and KubeJS can override the built-in files (data/plantations/plantations/plant/) or add new ones. The registry is synced to clients.
Blocks and items are referenced by id and resolved when they are used. All crops have eight growth stages (0–7), like vanilla crops; stages are block states, so a datapack can't change their number.
Fields
| Field | Required | Default | Meaning |
|---|---|---|---|
crop | yes | Crop block this definition drives. | |
seed | yes | Item that plants it (seed, cutting or spore print). | |
ticks_per_stage | yes | Average game ticks per stage under ideal conditions (20–1 000 000). Growth happens on random ticks, so this is an average. | |
climate.temperature | yes | Preferred biome temperature [min, max] (vanilla scale: snowy 0, plains 0.8, desert 2.0). | |
climate.downfall | yes | Preferred biome downfall [min, max], 0–1. | |
altitude | no | none | Preferred Y range [min, max]; outside it the plant grows slower. |
light.min | no | 9 | Minimum light level to grow. |
light.max | no | 15 | Maximum light level; shade plants (salvia) stall above it. |
light.photoperiod | no | false | Flowering stages need short days (or a 12/12 lamp timer). |
soil | no | plantations:growing_media | Block tag the crop can stand on. |
nutrients.vegetative | no | none | {n, p, k} taken from managed soil per stage before flowering. |
nutrients.flowering | no | none | Same, from flowering_stage on. |
nutrients.flowering_stage | no | 7 | First flowering stage. |
propagation | no | seed | seed, cutting or spore. |
harvest.mode | no | destructive | destructive (annuals) or repeatable (shrubs keep growing). |
harvest.reset_stage | for repeatable | Stage a repeatable plant drops back to after harvest (below 7). | |
bone_meal | no | 0 | Stages per bone meal; 0 = vanilla (2–5), -1 = bone meal does nothing. |
quality | no | {climate: 0.35, soil: 0.45, light: 0.2} | Weights of the harvest quality factors; only the ratios matter. |
genetics | no | vigor | full (genome with traits, sex and autoflower) or vigor (one trait). |
Ranges accept [min, max] or {"min": .., "max": ..}. Broken files are rejected with a message that names the field, for example Range min 1.0 is greater than max 0.5 or Plant with a repeatable harvest needs 'harvest.reset_stage'.
Example
{
"crop": "plantations:cannabis",
"seed": "plantations:cannabis_seeds",
"ticks_per_stage": 3600,
"climate": { "temperature": [0.5, 1.0], "downfall": [0.3, 0.9] },
"nutrients": {
"vegetative": { "n": 3, "p": 1, "k": 2 },
"flowering": { "n": 1, "p": 3, "k": 3 },
"flowering_stage": 5
},
"bone_meal": 1,
"genetics": "full"
}
Quality
Every harvest gets a quality, 0–100 %, stored on the item (plantations:quality, shown in the tooltip). It is computed when the crop is broken, from:
- climate: how well the biome matches
climate, - soil: how well the growing medium met the plant's N/P/K and water demand over its whole growth,
- light: 60 % at
light.min, 100 % in full daylight, - genetics,
weighted by quality and capped by the soil: plain farmland 60 %, a lifeless salty bed about 80 %, living soil 100 %. Quality also scales the yield of the main product (half at 0 %, normal at 50 %, 1.5× at 100 %). It is rounded to 5 % steps so items still stack, and drying keeps it, minus 5 % in very humid biomes and 15 % if rain fell on the rack. Curing, grinding and crafting carry it on (see PROCESSING.md); curing in a jar raises it.
Loot tables apply it with the plantations:apply_quality function ("yield": true also scales the count):
{ "function": "plantations:apply_quality", "yield": true }
Genetics
Plants with "genetics": "full" (cannabis) carry a genome on their seeds (plantations:genome) and in the crop's block entity:
| Trait | Effect |
|---|---|
| potency | quality ×0.8 … ×1.2 |
| yield | main product ×0.75 … ×1.25 |
| flowering | flowering stages grow ×0.8 … ×1.2 as fast |
| hardiness | halves the climate penalty at most |
| thc | THC:CBD ratio (used by the substance system) |
| sex | males make no buds; while flowering they pollinate females within 6 blocks |
| autoflower | recessive gene (two alleles); autoflowering plants ignore day length |
Crossing: every child trait lies between the parents' values, widened by a quarter of their gap on both sides, plus a small mutation (σ 0.03); sex is 50/50; each parent passes one autoflower allele. Pollinated females drop 2–5 seeds, each with its own crossed genome, and their buds lose 15 % quality. Unpollinated females (sinsemilla) drop no seeds and gain 10 %. Seeds without a genome (from grass) grow into a random wild plant.
Plants with "genetics": "vigor" have a vigor level 0–3 (+5 % quality per level), kept on the seeds (plantations:vigor). Replanting seeds from a harvest of 75 % or better can raise it; harvests below 40 % may lower it.
Loot tables use plantations:apply_genetics with "mode": "self" (the plant's own genetics) or "mode": "offspring" (crossed or vigor-adjusted seeds; nothing from unpollinated plants).
Seed Bank
A wooden seed cabinet (planks around a chest, paper below) with 27 slots that only take seeds (c:seeds, anything with genetics, and the planting items of this mod's crops). Hover a seed to see its traits as bars. Hoppers and pipes can use it; it gives a comparator signal.
Wild plants
Wild plants generate as small patches of mature-ish plants on grass and dirt. They carry a wild block state, which lets them stand on plain dirt; replanted seeds need farmland or a growing medium again. Each plant has a biome tag plantations:has_wild/<plant>, a configured and placed feature plantations:wild_<plant> and a biome modifier. The placed feature starts with the plantations:wild_plant placement modifier, which reads plants.<plant>.wild and wildRarity from the config, so disabled plants never generate.
| Plant | Biomes |
|---|---|
| Cannabis | #c:is_plains, #c:is_savanna, forest, birch forest, flower forest, meadow |
Cannabis
- Photoperiod. Cannabis only enters its flowering stages on short days. Outdoors (sky light 10+, glass counts) the natural day is short enough, but a lamp lighting the plant at night interrupts the dark period and that growth step is lost. Indoors under constant lamp light it stays vegetative; a grow light on a 12/12 Photoperiod Timer gives it the long nights it needs (see INDOOR.md), and autoflowering genomes ignore day length. With Serene Seasons the outdoor days are only short from late summer on (always in tropical biomes), so outdoor cannabis sown in spring flowers in autumn (see INTEGRATIONS.md). A datapack can turn it off with
"light": {"photoperiod": false}. - Landraces (datapack registry
plantations:landrace, biome tagsplantations:landrace/<name>): wild plants and seeds from grass get the genome and name of the landrace that grows where they are found.
| Landrace | Biomes | Character |
|---|---|---|
| Mountain Kush | mountains, windswept | potent, hardy, flowers early |
| Jungle Haze | jungles | high yield, slow to finish |
| Savanna Gold | savannas | tough and steady |
| Steppe Ruderalis | cold biomes | weak and mostly CBD, but autoflowering and frost-hardy |
| Meadow Wildling | everywhere else | an average wild plant |
- Strains. Seeds, cuttings and plants carry a strain name (
plantations:strain). Crossing two named plants gives "A × B", deeper crosses "Hybrid", and an inbred line keeps its name. Seeds renamed in an anvil found a new line: the name becomes the strain of the plant and of everything bred from it. - Cuttings. Use the Harvest Knife on a plant in its vegetative stages: it drops a cutting with the mother's genome, strain and sex (so clones of a female are female) and loses one stage.
- Products. Females: fresh buds, fan leaves, 0–2 hemp fiber, seeds when pollinated. Buds dry on the rack, cure in a Curing Jar and grind in the Mortar & Pestle. Males: fan leaves and 2–4 hemp fiber. 2 hemp fiber craft into string.
Opium poppy
A temperate annual that wants full sun (light 12+). It grows leaves (stages 0–4), flowers red, purple or white (5), sets a green seed pod (6) and dries (7). Wild patches grow on plains, meadows and in flower forests.
- Petals: break a flowering poppy for petals of its colour; they craft into red, purple or white dye.
- Latex: score a green pod with the Harvest Knife. Latex gathers on it over a few minutes; collect it with a glass bottle (Poppy Latex, with the plant's quality). A scored pod only dries once its latex was collected. Poppy Latex dries on the Drying Rack into Poppy Resin.
- Seeds: a dry pod drops a Dried Poppy Pod and 1–3 seeds (vigor genetics); a dried pod crafts into 3 seeds. Poppy seeds are a food ingredient: 2 wheat, sugar, an egg and poppy seeds bake into 2 Poppy Seed Cakes.
- Breaking a green pod gives it as an item; young plants give their seed back.
Coca
A perennial shrub of warm mountain slopes: it prefers warm, wet biomes at Y 80–180 and grows slowly. Wild bushes grow in jungles and on windswept savannas.
- Harvest: right-click a fruiting bush (red drupes) to pick 2–4 Fresh Coca Leaves and 0–2 Coca Drupes (the seeds). The bush drops back to its mature stage with bare branches and leafs out again. Breaking an unripe bush gives its drupe back.
- Products: fresh leaves dry on the Drying Rack; 2 dried leaves and a water bottle brew Coca Tea (the bottle comes back). Llipta, a pressed plant-ash lump, is made from charcoal and bone meal. Their effects arrive with the substance system.
- Shrubs use
ShrubCropBlock(also for khat): a bush-shaped crop with apickedstate.
Khat
An evergreen shrub of dry highland savanna (warm, dry, Y 85–200), very slow, grown from cuttings only: use the Harvest Knife on a shrub from stage 2 on (it loses a stage). Wild shrubs grow on savanna plateaus and windswept savannas; breaking an unripe shrub gives a cutting.
- Harvest: right-click a mature shrub (reddish young shoots) for 1–3 Khat Bundles.
- Freshness: bundles remember when they were picked (
plantations:harvested_at) and wilt over two in-game days (tooltip and model: fresh → wilting → wilted). Their potency, and so their black market price, falls with freshness. An
Ice Box (planks around packed ice, 27 slots, hopper-friendly) slows wilting to a quarter, and carrying them in a cold biome halves it.
Salvia
A shade-loving herb of humid cloud forest: it needs very humid biomes and light between 5 and 11, so it stalls in full sun. It can't be grown from seed: take a Salvia Cutting from a plant with the Harvest Knife, put it into a
Water Jar (glass panes around a water bucket), and after a few minutes it has rooted; take the Rooted Salvia Cutting out and plant it. Mature plants are picked again and again for Fresh Salvia Leaves, which dry on the Drying Rack. Wild salvia grows on the jungle floor and in lush caves; breaking an unripe wild plant gives a cutting. Extract tiers follow with the Extractor.
Datura and weed pressure
Datura (thorn apple) is a fast, undemanding annual weed of disturbed ground: plains, savannas and deserts. Unlike the other plants it also takes root on plain dirt and grass (soil tag plantations:weed_soil).
- Spreading: a fruiting datura (spiny pods) tries to self-seed on random ticks into an empty spot within 3 blocks. It only takes on farmland and growing media, never on grass, so wild patches stay put. On plain farmland it always takes; on a managed bed the chance falls with organic matter (mulch, cover crops) and soil life: a fresh garden bed is still open, a mulched living bed resists. Config:
plants.datura.spreads.
Herbicide (the mineral answer): spraying a bed kills the weeds in the 3×3 around it and keeps those beds weed-free for three days, but costs 15 soil life per spray.- Products: seeds, leaves, the flower, Thorn Apples (crafted into 4 seeds). Datura Poison (2 seeds, a leaf and a water bottle) tips 8 arrows into Datura Arrows (poison, nausea and slowness on hit). Datura has no upside when consumed.