EverGrims WerksTHE CROSSPLAY WERKSHOP

Crops, cooking & fishing

Grims Crops

Public testing 0.16.2 · Admin guide · Paper 26.3

Seven base crops, 206 Stove recipes, farming and cooking skills. Optional expansions add hops and brewing, or Sativa, Indica and the Rolling Station.

Version 0.16.2 · Paper 26.3 · Java 25

Crossplay farming and cooking. Packforge hosts the Java resource pack; Geyser supplies the Bedrock pack and mappings. Neither edition needs a client mod.


Cannabis add-on (0.16.2)

EverGrims Werks (EGW). Install the base 0.16.2 jar and packs, then the Cannabis jar in plugins/GrimsCrops/extensions/. See installation and player instructions. Java 25 / Paper 26.3 build 194. Use Bedrock resource pack 0.16.3 for the empty/packed 3D Zong attachables; the plugin, Java pack and mappings remain 0.16.2. The optional Frame Overlay stays 0.16.0.

Use /gcrops extensions cannabis to check activation. /gcrops seeds includes both strains while loaded. /gcrops greenout add, list, and remove <n> require gcrops.admin; adding a spot does not enable relocation. Settings in extension-data/cannabis/cannabis-config.yml are written only on first run; restart after editing. The base /gcrops reload does not reload this extension's private config.

Growth uses crops.sativa / crops.indica in crops-config.yml: each has climate.biomes, climate.off-climate-growth-speed: 0.40, light.minimum-sky-light: 9, light.plant-height: 2, light.grow-light-reach: 3, and light.grow-lights (glowstone, shroomlight, sea lantern, all three froglights). The six lamp types must be directly above the crop. yield.optimal-moisture-bonus: false skips only that bonus. The cannabis-climate.off-climate-biomes list accounts for the remaining biomes; a datapack biome on no list grows at 40%. Natural seed-drop rows for both strains ship disabled. Agriculture, fertilizer, watering and normal growth rules otherwise apply, and harvest regrows from stage zero.

Greenhouses ship disabled. Until enabled, cannabis gets no greenhouse 2× yield bonus and remains subject to outdoor climate. A registered normal greenhouse ignores climate and gives 2×; the custom cannabis greenhouse and damp-only yield rule are on hold.

The Stoned Wanderer uses vanilla's increasing chances: approximately 2.6%, 5.1%, then 7.6% per in-game day per normal world, roughly one visit per fourteen in-game days. Each world's chance resets on restart. The reference is a player rather than a village bell because this implementation has no POI lookup. He is persistent across chunk unloads/restarts, with vanilla's 48,000 ticking-time despawn countdown (paused during trading). The ownership index survives ordinary unloads. After a restart an old trader in an unloaded chunk is unknown until that chunk loads, so the same player can temporarily receive a second one. WorldGuard-protected regions are refused unless every applicable non-global region is allowed; an unusable WorldGuard hook refuses spawning and logs the issue.

Trade payment templates use exact current Grims item components. Old food made before food-value config changes may not match new offers. Only unused Lighters match the seed purchase rows. No other vanilla trader is changed.

Smokables take two seconds to use; Doobies have six hits, Blunts twelve and Lighters 64 uses. These are fixed in base item components and Geyser mappings, so changing the extension config cannot change them. All smokes/gear are unstackable. Anvils and grindstones now refuse every Grims item: tools/pails can no longer be renamed, repaired, enchanted or cleaned there. The Rolling Station places only with the extension. A stray old tier-sprinkler block on unpowered note 12 now draws station art until broken; it is not a registered inventory.

Persistence: stations.yml stores cabinet slots/timestamps, stoned.yml stores exact meter/offline timing, and greenout-spots.yml stores locations. Traders are saved as world entities, not in a separate file. Back up the extension data folder with the worlds. Grids are handed back on close; cabinet aging pauses while any viewer is in it.

Grims Shop Dispensary

Grims Shop 0.4.2 implements the crops: item provider. The included grimsshop/ drop-in supplies a standalone Dispensary section and all nineteen Cannabis items, with buy=1, sell=1 and bundle size=1 for testing. Install its sections/dispensary.yml and shops/dispensary.yml into the corresponding GrimsShop data folders after first startup and any defaults/import operation, then /shop validate and /shop reload. Open it with /shop dispensary. Keep the Cannabis extension enabled for its crop/mechanics availability. Use the drop-in INSTALL.md for currency setup and the Shop’s configured sell-matching behavior.

Cannabis settings and shipped defaults

All keys below are relative to cannabis-config.yml. Invalid numeric values are bounded in memory; stage/rung thresholds remain ordered. The file itself is preserved. Effects use Bukkit zero-based amplifiers.

KeyDefault
meter.drain-per-step0.1
meter.drain-step-seconds3
meter.food-reduction0.5
meter.milk-reduction5.0
stages.buzzed1.5
stages.stoned4.0
stages.couch-locked7.0
stages.greening-out9.0
grinder.capacity9
grinder.portions-per-bud5
grinder.hand-pipe-load1
grinder.zilly-zong-load2
grinder.zilly-zong-hits-per-load2
grinder.half-look-from1
grinder.full-look-from6
grinder.mix-confirm-seconds5
display.action-bar-seconds5
greenout.blackout-ends-at9.0
greenout.movement-speed0.3
greenout.relocate.enabledfalse
greenout.relocate.delay-ticks20
greenout.chat-line""
aging.dry-after-minutes60
aging.premium-after-dry-hours72
aging.stale-after-dry-hours96
smoke.view-distance24
smoke.tip-particle"SMOKE"
smoke.exhale-particle"WHITE_SMOKE"
smoke.exhale-ticks15
smoke.cone-half-angle18.0
smoke.cone-start0.9
smoke.cone-length2.0
smoke.idle-particle"SMOKE"
smoke.idle-min-ticks10
smoke.idle-max-ticks20
smoke.idle-max-alive4
smoke.idle-window-ticks40
trader.enabledtrue
trader.name"Stoned Wanderer"
trader.worlds[]
trader.tick-delay1200
trader.spawn-delay24000
trader.chance-min25
trader.chance-increment25
trader.chance-max75
trader.one-in10
trader.attempts10
trader.search-radius48
trader.despawn-ticks48000
trader.daylight-onlyfalse
trader.allowed-regions[]
trader.offers.minimum3
trader.offers.maximum5
trader.seeds-per-flower.minimum1
trader.seeds-per-flower.maximum3
trader.seeds-per-lighter6
trader.flowers["DANDELION", "POPPY", "BLUE_ORCHID", "ALLIUM", "AZURE_BLUET", "RED_TULIP", "ORANGE_TULIP", "WHITE_TULIP", "PINK_TULIP", "OXEYE_DAISY", "CORNFLOWER", "LILY_OF_THE_VALLEY"]
effects.stoned.hunger-amplifier.sativa0
effects.stoned.hunger-amplifier.indica1
effects.stumble.min-seconds8
effects.stumble.max-seconds15
effects.stumble.strength0.3
effects.couch-locked.slowness-amplifier2
effects.hit.sativa.speed-amplifier0
effects.hit.sativa.haste-amplifier0
effects.hit.sativa.duration-ticks200
effects.hit.indica.regeneration-amplifier0
effects.hit.indica.regeneration-ticks80
effects.hit.indica.slowness-amplifier0
effects.hit.indica.slowness-ticks200
hits.doobie.regular0.3
hits.doobie.premium0.5
hits.hand-pipe.regular0.3
hits.hand-pipe.premium0.5
hits.blunt.regular0.4
hits.blunt.premium0.6
hits.zilly-zong.regular2.0
hits.zilly-zong.premium3.0
trader.rows.A1.max-uses12
trader.rows.A1.weight1.0
trader.rows.A2.max-uses12
trader.rows.A2.weight1.0
trader.rows.A3.max-uses2
trader.rows.A3.weight1.0
trader.rows.A4.max-uses6
trader.rows.A4.weight1.0
trader.rows.A5.max-uses6
trader.rows.A5.weight1.0
trader.rows.A6.max-uses6
trader.rows.A6.weight1.0
trader.rows.A7.max-uses6
trader.rows.A7.weight1.0
trader.rows.A8.max-uses3
trader.rows.A8.weight1.0
trader.rows.A9.max-uses4
trader.rows.A9.weight0.5
trader.rows.B3.max-uses2
trader.rows.B3.weight1.0
trader.rows.B4.max-uses2
trader.rows.B4.weight1.0

Previous installation baseline (0.16.1)

For 0.16.2 use the Cannabis installation instructions above, including both updated pack mappings.

0.16.1 is the sprinkler fix. The pad under a placed Grims Sprinkler shows the Planting Soil top (soil_wet, the look of Moist soil) instead of vanilla farmland, mapped so a row of planters runs straight on under it; the sprinkler is one block state, so the pad shows the Planting Soil top on vanilla Farmland too. And a sprinkler waters a 4-tall block of soil, from one block above it to two below (see The single Grims Sprinkler). The jar also fixes three Stove clicks for touch and Bedrock players, with nothing to configure: a tapped instant dish lands merged in the inventory, Stored output tops up a held stack (on Java too), and the cooking switch reopens the Stove. None of them has been tried in a live Bedrock client yet. Everything below is in dist/0.16.1/: the jar, the Java pack, the Bedrock pack, both Geyser mapping files and the Fermentation jar are 0.16.1; the optional Frame Overlay did not change and is still the 0.16.0 file. Coming from 0.16.0, install everything but the Frame Overlay and fully restart. No config change is needed and nothing is migrated. Coming from 0.15.9 or older, also do what 0.16.0 needs, below.

0.16.0 is our own art and one sprinkler. Every Crop & Kettle texture that was left, the ExtraCrops gauge and fertilizer icons and the three crop-shape models are Grims Crops' own now: EverGrims Werks (EGW) is the author of all of it, the five Harvest Scythe textures (Akswel's "Hoe Reimagined" hoes, used unmodified with credit; no licence was stated, and they come out if the author asks) are the one third-party art in CREDITS.md, and the terms of use, all rights reserved, ship as LICENSE.txt beside each artifact; the three tier sprinklers are one upgradeable Grims Sprinkler (see The single Grims Sprinkler); Planting Soil is a wooden planter; the Stove is design B with our own fire; the colour candies are named for their art; and the Skills Book command is /cropskills (alias /gskills). In 0.16.0 the jar, the Java pack, the Bedrock pack, both Geyser mapping files, the Fermentation jar and the optional Frame Overlay moved to 0.16.0 (the overlay changed only its credits and gained LICENSE.txt). Coming from 0.15.9 or older, install everything in the table and fully restart, the Frame Overlay too if you use it, then tidy the configs (see The single Grims Sprinkler). Coming from 0.15.7 or older, also set the 128 crops per player planting cap that 0.15.8 made the default (see Configuration).

ArtifactGoes whereRequired?
GrimsCrops-0.16.1.jarplugins/Yes
The matching Grims Crops Java ZIPInstall with Packforge and build with /pf zipFor Java players
GrimsCrops-Geyser-Mappings-0.16.1.zipboth files into plugins/Geyser-Spigot/custom_mappings/ (0.16.1 changed gcrops_blocks.json)For Bedrock players
GrimsCrops-Bedrock-0.16.1.mcpackplugins/Geyser-Spigot/packs/For Bedrock players
GrimsCrops-Bedrock-Frame-Overlay-0.16.0.mcpacksame folder (unchanged in 0.16.1)Optional overlay
fermentation-extension/GrimsCropsFermentation-0.16.1.jarplugins/GrimsCrops/extensions/Optional — the still, the cask, and hops
GrimsCrops-0.16.1-api.jarnot for the serverCompile-time contract for extension and plugin authors

Install order

  1. Stop the server.
  2. Drop the jar in plugins/, replacing any older one.
  3. Replace both files in plugins/Geyser-Spigot/custom_mappings/ with the 0.16.1 ones: gcrops_blocks.json

draws the one sprinkler (its pad on the Planting Soil top since 0.16.1) and the planter, and gcrops_items.json has the sprinkler, the Skills Book and the candy names.

  1. Delete the old Grims Crops .mcpack from plugins/Geyser-Spigot/packs/, then add the new one.
  2. Install the matching Java pack with Packforge and run /pf zip.
  3. If you want distilling, put GrimsCropsFermentation-0.16.1.jar in plugins/GrimsCrops/extensions/.

Its own guide is dist/0.16.1/fermentation-extension/INSTALL.md.

  1. Full restart. Not /geyser reload.

The jar, the Java pack, the Bedrock .mcpack and the Geyser mappings move together — a new jar against old packs renders wrong. The 0.16.1 jar goes with the 0.16.1 Java pack, Bedrock pack and mappings: with the 0.16.0 packs or mappings a placed sprinkler stands on vanilla farmland again, and with anything older the Grims Sprinkler and Skills Book items have no picture of their own, a placed sprinkler keeps the old tier look, and Planting Soil keeps the old pot. The Fermentation jar has its own rule: 0.16.1 runs GrimsCropsFermentation-0.16.1.jar, and one older than 0.15.3 never detects a still. The Frame Overlay pack is optional and only needed for the rendering.mode: frames fallback.

Before you start

NeededFor
Vault plus an economy providerThe Crops Store. Without it /cropshop does not run
Geyser and FloodgateBedrock players at all
GrimsClientCheckerMobile menu layouts and Bedrock detection
PackforgeHosting the resource pack
block-updates.disable-tripwire-updates: trueCrops are tripwire carriers — without this they break on block updates

CHECKSUMS.txt in the release folder covers every file.


Add-ons

plugins/GrimsCrops/extensions/ is created automatically on boot and logged. Drop extension jars in and restart. Extensions are not Bukkit plugins and are never registered with the plugin manager.

/gcrops extensions lists what loaded and what did not, with a reason.

Extensions carry the plugin's version — Grims Crops 0.16.2 means its add-ons are 0.16.2 too. 0.15.5 was the exception: it changed nothing an add-on uses, so it ran the 0.15.4 add-ons. The API contract version is separate and is still 1; an extension built against the 0.14.3 API jar still loads.

Other plugins (not extensions) can read Grims Crops through its GrimsCropsApi Bukkit service, and since 0.15.5 can make Grims Crops items through it. Grims BladeFX's Snack-a-Pult is the first: its crouch shot gives the player it hits a Pink Donut. BladeFX only softdepends on Grims Crops, so without it there is no donut and everything else works. Items made that way are real Grims Crops items, and the Store buys them back, so a plugin that hands them out for free has to limit itself; Grims Crops does not limit it.

Fermentation and Aging is one of the two shipped add-ons. It adds a still and a cask, makes the sixteen drinks reachable, and switches on hops.

Cannabis switches on Sativa and Indica and adds Rolling Stations, curing, smoking and the Stoned Wanderer. It works independently of Fermentation; see the Cannabis section above for installation and defaults.

To be precise about hops, because two things are true at once: hops is base content — the crop, its art and its growth cycle all ship in the base plugin and the base packs — and the add-on is what makes it available. The base owns how hops grows; the add-on owns whether it exists for players at all.

Its install steps, its tunables and its troubleshooting live in its own INSTALL.md, beside its jar.

Without it, hops is dormant: no seeds, no Store entry, nothing plantable. Anything already planted survives untouched and resumes if the add-on returns.


Configuration

Config files live in plugins/GrimsCrops/. Edit and run /gcrops reload for most changes; anything structural wants a restart.

FileCovers
config.ymlGrowth worker, autosave, water reach, planting limits, seed drops
crops-config.ymlPer-crop growth and yields, greenhouses, sprinklers, planting soil, tools
dishes-config.ymlNutrition and saturation for every dish
shop-config.ymlStore prices and rate tiers
skills-config.ymlSkill curves and bonuses

The single Grims Sprinkler (0.16.0)

The three tier sprinklers (Basic 5x5, Quality 7x7, Modern 9x9) are one item now, sprinkler, the Grims Sprinkler, at Level I, II or III. The level rides in the item (persistent data, name and lore) and in the placed sprinkler's row in sprinklers.yml, never in the block. A player upgrades a placed sprinkler by using another sprinkler on it: the held level is added, up to III, and the held item is used up (refused, and kept, past III). Breaking one drops a single sprinkler of the same level. Supply works as before.

Reach (0.16.1). A sprinkler waters a 4-tall block of soil: its level's square on every layer from one block above the sprinkler to two blocks below it (sprinkler Y minus soil Y of -1, 0, 1 and 2). Until 0.16.1 it was only the layer the sprinkler sits on. Placement did not change: it still goes directly on Farmland or Planting Soil, and only the Farmland it stands on is wetted. Planting Soil on the four layers shows Moist and grows as watered while a supplied sprinkler covers it; placing, upgrading or breaking a sprinkler redraws it and wakes the crops a supplied one now covers. A Grower's Gauge on a crop names the covering sprinkler and where it is ("supplied, 2 blocks above the soil"). There is no setting for the reach.

The pad (0.16.1). A placed sprinkler draws its own floor, because the client culls the top of the block under it. That pad is Planting Soil's wet top (soil_wet; Bedrock terrain key gcrops.soil_wet, the one the Moist planter uses), mapped exactly as the planter maps its top on each edition. It was vanilla farmland. The sprinkler is one block state whatever it stands on and however it is linked, so the pad shows the Planting Soil top on vanilla Farmland too, and under an unlinked sprinkler.

# crops-config.yml
sprinklers:
  enabled: true
  water-source-scan-radius: 10
  levels:                            # was tiers: basic / quality / modern
    level-1: {coverage: 5x5}
    level-2: {coverage: 7x7}
    level-3: {coverage: 9x9}         # odd squares only, 1x1 to 15x15
  spray-particles:
    enabled: true                    # false: no spray task is scheduled at all
    view-distance: 24                # blocks, 4-64; only players this close are sent it

The spray is a stream of water particles that sweeps round a supplied sprinkler; watering never depends on it. One shared task (every 2 ticks) serves every loaded, supplied sprinkler with a player in range. /gcrops reload picks up the sizes and the spray switch.

# shop-config.yml
catalog:
  sprinkler: {category: tools, order: 430, ..., store-sells: true, player-pays: 300.00}

One Store row, sold at Level I: Level II costs 600.00 and Level III 900.00 in sprinklers (was 150.00, 400.00 and 900.00 for the three tiers). Nothing is migrated. An existing crops-config.yml gains the levels and spray-particles keys and keeps its old tiers block, which nothing reads: delete it. An existing shop-config.yml gains the sprinkler row and keeps the three sprinkler_tier_* rows, which log "Ignoring unknown Crops Store item" on every load until you delete them. Test-server tier sprinklers stop working: their items can no longer be placed, and their sprinklers.yml rows are skipped with one warning at start and dropped on the next save. Break those blocks (notes 12-16 no longer have art) and place Grims Sprinklers. To start clean instead, stop the server, move shop-config.yml and crops-config.yml out of plugins/GrimsCrops/ and start it: the plugin writes the shipped files, with only the one sprinkler row and no tiers block (any prices or settings you had changed in those two files are lost, so copy them back by hand).

One default changed in 0.15.8

The planting cap. Like the 0.15.0 changes below it is only the value a new server starts with: an existing config.yml is never rewritten, so a server that started before 0.15.8 keeps the 256 in its file.

# config.yml
planting:
  limits:
    per-player-per-crop: 64          # unchanged
    per-player-total: 128            # was 256

128 crops per player in total is the owner's design for a server of 8 to 12 players, 15 at most; 256 was never approved. To use it on an existing server, set planting.limits.per-player-total: 128 in plugins/GrimsCrops/config.yml and run /gcrops reload. Players at or over the cap keep what they have planted; they just cannot plant more until they are under it. bypass-permission (default gcrops.admin) skips both limits, and frozen or dormant crops do not count.

Two defaults changed in 0.15.0

Both are the value a new server starts with. An existing config file is never rewritten, so on an upgrade you keep whatever you had — change these by hand if you want the new behaviour.

# config.yml
growth:
  plants-checked-per-second: 10      # was 6

One shared worker handles every loaded crop. Mature crops and crops in unloaded chunks are not polled, so this is throughput against actively growing crops, not total crops. Raise it if crops feel sluggish on a busy farm server; lower it if the worker shows up in timings.

# crops-config.yml
natural-seed-drops:
  chance-percent: 5.0                # was 2.0

Chance for grass to drop a seed. Each crop is also restricted to its own biomes and vegetation types, configured per crop underneath.

Other things worth knowing

  • Greenhouses are off by default. crops-config.yml → greenhouses.enabled. Default limit is 4

per player, hard cap 32.

  • Sprinklers scan for water once when placed and never again. Their square is per level, on four layers, one

block above the sprinkler to two below (see above).

  • Planting Soil has no ticking task — moisture changes only on a pail use or when the crop

worker completes a maturity check.


Commands and permissions

CommandPermissionDefault
/gcrops seedsgcrops.adminop
/gcrops givegcrops.adminop
/gcrops guidegcrops.adminop
/gcrops skillsbookgcrops.adminop
/gcrops skillxpgcrops.adminop
/gcrops adjustgcrops.adminop
/gcrops debuggcrops.adminop
/gcrops extensionsgcrops.adminop
/gcrops reloadgcrops.adminop
/gcrops greenoutgcrops.adminop
/cropshop (/gshop, /cropstore)gcrops.shop.useeveryone
/cookbook (/gcookbook)—everyone
/cropskills (/gskills)—everyone
PermissionDefaultEffect
gcrops.shop.rate.2falseSecond Store rate tier
gcrops.shop.rate.3falseThird Store rate tier
gcrops.greenhouses.limit.8falseGreenhouse limit 8
gcrops.greenhouses.limit.16falseGreenhouse limit 16
gcrops.greenhouses.limit.32falseGreenhouse limit 32

Rate and limit permissions are highest-wins — assign them to LuckPerms groups freely. The greenhouse hard cap is 32 and cannot be exceeded by permission.


Troubleshooting

Crops render as tripwire, machines as note blocks. The Java pack is not applied. Re-run /pf zip, and check no other pack overwrites tripwire.json or note_block.json.

Bedrock players see nothing, or wrong models. The .mcpack is missing from plugins/Geyser-Spigot/packs/, or the mappings in custom_mappings/ are stale. Both must come from the same release. Full restart — /geyser reload is not enough.

Nine seafood dishes are missing from the cookbook. Expected. They need Grims Nilla Fishin' and hide without it.

Hops seeds cannot be obtained. The Fermentation and Aging add-on is not loaded. Check /gcrops extensions.

Extensions folder is missing. It is created on boot and logged. If absent, the plugin could not write to its data folder — check permissions on plugins/GrimsCrops/.

Seeds never drop from grass. Check natural-seed-drops.enabled, the chance, and the per-crop biome list — each crop only drops in its own biomes.


Console and monitoring

Warnings and errors use a structured envelope for log watchers:

[EGW-WATCH][plugin=GrimsCrops][rank=1-4][severity=NOTICE|WARNING|ERROR|CRITICAL][code=X][version=Y] Error: text

Ranks 1–2 log at WARNING, ranks 3–4 at SEVERE. Nothing at INFO carries the envelope.


Upgrading to 0.15.0

This is a full update — the packs changed, so a jar swap alone is not enough.

  1. All five base artifacts move together.
  2. Delete the old GrimsCropsHops extension jar and all of its art. Hops shipped into the base

The old separate Hops content was folded into the base packs. Remove its obsolete separate Java content, Bedrock pack and gcropsext_hops_* mappings to avoid duplicate resources.

  1. Your existing config.yml and crops-config.yml keep whatever values you have. The new

defaults — plants-checked-per-second: 10 and chance-percent: 5.0 — only apply to a config file the plugin writes fresh. Change them by hand if you want them.

  1. Saved data carries over. Planted crops, stoves, sprinklers, stills and casks all survive.