Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
LetItGrow
Full farming overhaul: configurable growth speed/conditions, hover grow-timers, and Scarecrow + Farm Silo auto-harvest/replant automation that keeps tending farms nobody is near. Server-synced.
CHANGELOG
Changelog
[0.2.9] — Valheim 1.0.16 — 2026-09-25
Rebuilt against Valheim 1.0.16 and re-verified: static reference check on both the client and the
dedicated server, plus a headless 1.0.16 dedicated-server boot. MinimumRequiredVersion stays 0.1.2;
nothing on the wire changed.
Changed
- The duplicate-terrain-compiler warning now describes Valheim 1.0.16's rule (the game keeps whichever compiler holds more terrain operations) and logs both operation counts. The same-ZDO protection is unchanged.
[0.2.8]
Server-side. Clients on 0.1.2 or later keep joining (MinimumRequiredVersion unchanged); the one
client-side change (the grid tool's new occupancy rule) and the new admin command simply need a
0.2.8 client to exist on that machine.
Fixed
- A farm could stack crops without limit, and away tending then leaked the server to death.
Two holes lined up. (1) A mature crop does not count as occupying its cell: the Scarecrow's
scan tests vanilla's
Plant.m_spaceMasklayers, and a grown Jotun Puff or Magecap carries its collider on theitemlayer, which is not among them - so once the sapling grew, its cell read as empty and got another sapling. (2) Replanting never checked the Silos. Harvest has held ripe crops back on full Silos since 0.1.5, but the replant pass kept planting anyway: harvest 0, plant 10, every tick, forever. On the Wonderland server one mushroom farm reached 39,354 standing crops in a 40 m radius (~5,000 cells), and force-loading it for away tending - nine times an hour, every object instantiated and destroyed each visit - cost ~1 GB of memory a visit that Unity never gave back: OOM-killed two nights running with nobody online. Now:- Standing crops occupy their cell. Every mature or regrowing crop the scan tracks blocks planting within the assigned crop's own grow radius (the sphere vanilla would test if the crop were on a blocking layer - always less than the grid spacing, so neighbours never block each other). The scan's debug line reports them as under a standing crop. Indexed on a spatial grid, so a huge field costs one bucket lookup per cell, and the scan's own de-duplication is now a set instead of a list (39k crops made the old one ~1.5 billion comparisons a rescan).
- The replant pass stops when the Silos are full for that crop. A crop whose harvest this tick's harvest pass already left standing for want of room, or that would not fit one more harvest, is not planted; the seed-loop partner is judged on its harvest the same way. Logged as not replanting - the Silo(s) in range are full for 'X' - mature crops are already standing in wait for space, so no more are planted. A ground-drop farm (vacuum off, or no Silo) is untouched.
- The grid tool follows the same rule (client-side): a cell with a mature crop standing in it shows red and is skipped, where vanilla would happily plant on top of it.
- The harvest pass no longer localizes the held item's name once per waiting crop - 39k times a tick on that farm.
Added
Max Objects Per Site(10 - Automation - Away Tending, default 10,000) - the hard guard. Before force-loading a Scarecrow's zones, the keeper counts every object in them straight off the server's ZDO table (nothing is instantiated to find out). Over the cap, the visit is refused and a warning is logged at most every 10 minutes: NOT tending the Scarecrow at P headless - its zones hold N objects (cap M).... The site stays in the rotation and is re-counted every lap, so it resumes the moment the field is cleared or the cap raised. This is what makes the leak impossible to re-create however a field got big. A normal 3x3-zone site holds a few thousand objects; raise the cap if a legitimately huge base trips it.Max Tracked Crops Per Scarecrow(6 - Automation - Scarecrow, default 6,000) - the backstop behind the occupancy rule: above it a Scarecrow keeps harvesting but refuses to plant more, whatever put the crops there.Idle Site Skip Laps(10 - Automation - Away Tending, default 6) - a farm that can do nothing until a player intervenes (every ripe crop held by full Silos and replanting blocked; or nothing in the ground and no seeds; or its Scarecrow switched off) is skipped for the next 6 rotations (~40 minutes at the default pacing) before being looked at again. A player arriving at the farm ends the skip on the next lap. A field of growing saplings or regrowing bushes is quiet, not idle, and is still visited every lap.letitgrow count <radius> [keep]/letitgrow purge <radius> [keep]- the cleanup path for a field that stacked before this version. Admin only, from the console (F5) or chat (/letitgrow ...) while standing at the farm.countis a dry run: how many crop pickables are within the radius and how many are stacked beyondkeepper spot (default 1).purgeremoves exactly those, working from the server's ZDO table - the zone is never loaded, so it works on the very farm the object cap refuses - in batches of 500 a frame, dropping nothing, and reports what it removed by prefab. It never runs on its own: no config toggle, no automatic trigger. A lone wild mushroom near the farm is never "stacked" and is never touched atkeep1.- Telemetry (
barrkbot_farming.json): per farm,crops_standing,plants_growing,replant_note,harvest_note,away_tending_note,objects_in_zones,objects_cap,idle_laps_left,away_tending_checked_at. A row now also exists for a site the keeper has evaluated but never tended (reported_atisnulluntil its first tick) - a refused site never ticks, and that is exactly the one BarrkBOT most needs to see.BARRKBOT_CONTRACT.mdupdated.
[0.2.7]
Fixed
- Cultivator remove click fired while held and could mow neighbours: the remove handler accepted the button being held (and the raw middle mouse button), so keeping MMB down re-removed a plant every 0.25 s, a quick click could fire twice, and a rebound Remove key was ignored. It now fires once per release exactly like vanilla's own remove, honours Shift+MMB copy-piece blocking and the open build menu, and no longer stamps the tool-use timer when the click hit nothing (which had been delaying the next planting by 0.4 s).
- Grid mode + remove on the same button: grid placement confirms on the press of its confirm key (default middle mouse) and the release of that same press could then remove the plant under the crosshair - possibly the one just planted. The release frame of the grid confirm key is now the grid's alone.
[0.2.6]
Fixed
- Cultivator removal of planted wild pickables: every remove click on a planted mushroom/bush/thistle threw
ArgumentException: The Object you want to instantiate is nullinsideItemDrop.DropItemand removed nothing. The refund handedDropItemthe prefab's ownItemData, whosem_dropPrefabis only ever filled on a live item. The refund now follows vanilla'sPiece.DropResourcespattern (clone the data, point it at the prefab, then drop), one stack per max stack size. The Hammer's remove click on a planted pickable went through the same code and is fixed by the same change. - Cultivator removal of planted crops and saplings: every vanilla sapling piece ships with
m_canBeRemoved = false(it is how vanilla keeps the Hammer off crops), so the Cultivator was refused with "Can't remove now" on carrots, turnips, onions, barley, flax, mushrooms-as-crops, vines and every tree sapling. The Cultivator now removes them; a container-with-items / ship check (CanBeRemoved()) still applies. The seed refund is dropped by hand, because each sapling's seed requirement also ships withm_recover = falseand vanilla'sDropResourceswould have returned nothing. Honours the free-build global key (nothing paid, nothing refunded). - Scarecrow and Farm Silo models rendered as shredded triangle strips on Valheim 1.0: 1.0 gave both donor pieces a snow-cap child as their first renderer, wearing the new
Valheim/Snow Meshshader (which extrudes geometry into a snow shell), and the model dresser cloned "the first renderer's material". It now picks the donor'sCustom/Piecesurface material by shader - the WearNTear "new" visual first - and never the snow one. Same fix covers the models sitting under the wrong hammer-menu tabs: 1.0 sorts by the newm_usagetag, which the clones inherited from their donors (Silo under Storage, Scarecrow under Building). Silo is now under Misc, Scarecrow under Crafting. - Away-tending harvest on a dedicated server (all 1.0 servers): Valheim 1.0 changed
Pickable.RPC_Pickto passPlayer.m_localPlayer.GetZDOID()to the pick effect - null on a dedicated server - so every Scarecrow harvest of a pickable the server owned (anything nobody was standing near) threw aNullReferenceExceptionbefore anything dropped. One session on the live server logged 3,778 failed harvest ticks and zero harvests. A transpiler now makes that one expression null-safe (ZDOID.Nonewhen there is no local player), leaving vanilla's body and every other mod's patch onRPC_Pickintact; it is a no-op if the pattern is already gone. Drop-in file (Patches/HeadlessPickPatches.cs) shared with AwayFromHome.
[0.2.5]
Fixed
- Removal Localization: Fixed removal prompt showing raw unlocalized tokens (
[$KEY_Remove] $piece_remove). Replaced with properLocalization.instance.Localizeevaluation and vanilla's$hud_removetoken, properly displaying the bound key (e.g.[Mouse 2] Removeor[MMB] Remove). - Cultivator Removal Reliability: Resolved an issue where
IsCultivatorTableActivecould fail due to clonedPieceTableinstance reference inequality, preventing removal input from running. Now checks tool name and piece table name prefix directly. - Direct Hover Target Removal:
HandleCultivatorRemovalnow directly removesplayer.m_hoveringif already highlighted, guaranteeing 100% removal hit rate when clicking on targeted plants, and accepts button down, held, or mouse 2 events.
[0.2.4]
Fixed
- Removal on the Cultivator: In 0.2.3, middle-click removal was hooked through
Player.RemovePiece, which vanilla only calls when holding a Hammer (since the Cultivator'sPieceTable.m_canRemovePiecesis false). Middle-click removal is now fully supported on the Cultivator for both planted wild pickables and planted crops/saplings (recovering planting costs/seeds, playing tool animations, draining stamina/durability). Cultivator removal is strictly gated to farming pieces and cannot damage player structures (walls, chests, etc.). - Targeting Overhaul: Replaced the previous 0-radius single camera raycast with a 35cm SphereCast sweep and terrain proximity check (
FarmingTargeting), explicitly skipping the player character collider and scoring candidates by proximity to the crosshair. Small mushrooms and 50%-scale bare sprouts can now be targeted comfortably without pixel-hunting. - Visual Hover & Reticle Feedback: When aiming at a removable planted pickable or crop in place mode with the Cultivator or Hammer, the reticle turns yellow and displays the plant name, grow/regrow timer, and removal prompt (
[MMB] Remove). - Hammer Safety: Hammer removal of planted pickables now cleanly bypasses vanilla's
UpdatePlacementGhosteffect evaluation on null hovering pieces, preventing potentialNullReferenceExceptions.
[0.2.3]
Fixed
- Planted pickables can be removed with the normal remove click. A planted mushroom, thistle or bush is the vanilla object and carries no build piece, so the hammer's, cultivator's and hoe's middle-click walked straight past it - one in the wrong spot could only be picked, and a bare sprout not even that. The remove action now takes a planted pickable out under the same no-build and ward rules as any piece, drops the planting cost back at its feet, and plays the usual remove effect. Wild pickables are untouched.
[0.2.2] — Valheim 1.0.7
- Requires BepInExPack Valheim 5.4.2350 or newer (the Valheim 1.0 pack; older packs can take the chainloader down on 1.0's Unity 6). The manifest dependency was raised to match.
Compatibility release for Valheim 1.0.7 (client build 25185596, dedicated server build 25185644,
network version 39). Nothing on the mod's own wire changed; MinimumRequiredVersion stays 0.1.2 -
but note that no earlier build of this mod can run on a 1.0.7 game at all (see below), so every
machine should move to 0.2.2 together with the game update.
Fixed
- The sector API. Valheim 1.0 retyped zone coordinates from
Vector2itoVector2s, foldedZDOMan.FindSectorObjects' two distance ints into aSimulationDistancestruct, and deletedZoneSystem.m_activeArea/m_activeDistantArea. Every sector site inFarming/(the zone anchor's per-zone feed and poke loop, the settle check, the ownership claim pass, andCollectPlanted's scan for planted pickables) now goes through one smallFarming/ZoneCompat.csthat binds to the 1.0.7 signatures. Sweeps passclassic: true, which reproduces the pre-1.0 full square ring exactly - without it 1.0 filters a ring to a disc and everyRingcount in the mod would silently change meaning. Inventory grid positions (m_gridPos) are stillVector2iand were deliberately left alone. Piece.SetCreatorgained a platform-user-id parameter. A Scarecrow's automated planting now passes the platform id vanilla recorded for whoever built that Scarecrow (looked up through the world's player history,PlatformUserID.Nonewhen there is no record), so an automated plant carries the same creator identity a hand-placed one does.HoverablegainedGetHoverOffset(). The Scarecrow implements it (returning 0, the stock value: no extra interact reach), otherwise the class would fail to load on 1.0.7.- The
afh-style diagnostics were unaffected; every one of the mod's 25 Harmony targets resolves on both the 1.0.7 client and the 1.0.7 dedicated server (checked by exact signature).
Changed
- The anchor's "already inside the player's area" back-off grows with the game's simulation
distance. Before 1.0 the anchor stopped feeding a farm's zones once the farm's ring came within
m_activeArea + Ringzones of the reference position, where that field was 1 in code (2 on the shipped ZoneSystem prefab). On 1.0 the same test reads the live near simulation distance, which defaults to 2 and can be raised by the player, so the back-off distance is 2 + Ring by default and larger on a server whose players run a higher setting. The intent is unchanged - vanilla is already carrying those sectors, and the duplicate-listing guard behind it still runs either way.
[0.2.1]
Changed
- Planted pickables start bare, and you can see them. "Start Bare" is on by default again: a
planted pickable has to regrow before its first harvest, like a sapling has to grow. Vanilla hides
a bare thistle, mushroom, dandelion or fiddlehead completely - which looked like nothing was
planted - so a planted one now shows as a small sprout (half size,
Sprout Scale) that hovers with its regrow timer and grows to full size when ready. Bare bushes show the bush, as they always did. Wild pickables are untouched.
[0.2.0]
Clients on 0.1.2 or later keep joining. What a planted pickable puts in the world is the vanilla object, so an older client sees a world it already understands - it just cannot plant them, and shows no regrow timer, until it updates.
Added
- Plant the wild. Berry bushes, the four regrowing mushrooms (common, yellow, blue, Smokepuff), thistle, dandelions and fiddleheads are now Cultivator pieces. Each costs one of its own item to plant (a Raspberries plants a raspberry bush), and what you place is the real vanilla object, exactly as the world grows it - it regrows on its own clock, sped up by the same Growth Speed Multiplier as every other crop (18× by default), with wild ones untouched. Planted ones are crops to the Scarecrow: it picks them every time they come back, the Silo banks the produce, and the replant pass plants more from that produce, so a berry farm is self-sustaining from the first harvest. Hover a picked bush and it reads "Regrows in 17m". They come out the way the wild one would: chop a bush, pick a mushroom or thistle.
- Grid planting works for them too. The grid floors its spacing at one bush per cell and judges cells by the pickable's real footprint, so a 1 m grid of bushes lays out a hedge instead of a pile.
- New config section
13 - Nature Pickables: master switch, the prefab list (add any regrowing pickable by name), planting cost, start bare, cultivated ground only. Regrow pace follows the existing Growth Speed Multiplier - one dial for the whole farm.
Fixed
- The farm stops when the Silo is full. A mature crop is now picked only when the Farm Silos in range can actually take what it will drop. Before, a full Silo meant the Scarecrow kept picking and the sweep kept failing, so produce piled up on the ground while the field replanted on top of it. Crops that would not fit are left standing - still tracked, still safe - and harvested the first tick a Silo has room again. Room is judged per pass against the Silos' real contents and debited as each crop is committed, so a single free slot is never promised to ten pickings. Farms with no Silo in range, or with "Vacuum Harvest Into Silo" off, still drop to the ground as before.
- The Scarecrow's hover text and panel show "FULL, harvest paused" while crops are held, and the server log says which produce the Silos are full for (once a minute, not every tick).
- BarrkBOT export: two new per-farm fields,
silo_fullandcrops_waiting_on_silo. Schema version unchanged (additive).
[0.1.5]
Server-side only. Clients on 0.1.2 or later keep joining; nothing on the wire changed.
Fixed
- The farm stops when the Silo is full. A mature crop is now picked only when the Farm Silos in range can actually take what it will drop. Before, a full Silo meant the Scarecrow kept picking and the sweep kept failing, so produce piled up on the ground while the field replanted on top of it. Crops that would not fit are left standing - still tracked, still growing nothing further, still safe - and harvested the first tick a Silo has room again, so the backlog clears itself the moment you empty a Silo or place another one. Room is judged per pass against the Silos' real contents (free space in existing stacks plus empty slots) and debited as each crop is committed, so a single free slot never gets promised to ten pickings. Farms with no Silo in range, or with "Vacuum Harvest Into Silo" off, still drop to the ground exactly as before - that is the farm you built on purpose.
Added
- The Scarecrow's hover text and panel show "FULL, harvest paused" while crops are being held, and the server log says which produce the Silos are full for (once a minute, not every tick).
- BarrkBOT export: two new per-farm fields,
silo_fullandcrops_waiting_on_silo. Schema version unchanged (additive).
[0.1.4]
Server-side only. Clients on 0.1.2 or later keep joining; nothing on the wire changed.
Fixed
- Away tending no longer rebuilds a farm's ring every other tick when a dungeon or a delayed-spawn location sits in it - which was leaking the live server to death. Since 0.1.2 the anchor only handed the game's object streamer zones the game reported as "loaded", so nothing would be built over ground that did not exist yet. But "loaded" in the game's vocabulary also means "nothing in here is still streaming assets in", and a crypt, a cave or a delayed-spawn location switches that flag off the instant it is instantiated and back on when it is destroyed. So the ring was built, torn down and built again for the whole visit: one 24-hour session logged 19,682 dungeon loads against 315 that ever finished, and the server climbed about a gigabyte an hour from boot with nobody online until the kernel killed it. The anchor now gates on "this zone's terrain exists", which is what the gate was ever for; objects in a zone that is mid-stream stay listed, exactly as they do around a player, and the game's own priority ordering finishes the dungeon the vanilla way.
Changed
- Server-friendlier away-tending defaults. A farm's throughput is bounded by how long its crops take to grow, not by how often the keeper drops in, so the rotation floor goes 120 s → 300 s (2.5× fewer load/unload cycles per farm) and the dwell 15 s → 30 s so each visit lands a rescan and several full harvest/replant ticks. Settle timeout 20 s → 40 s, so a busy server skips fewer visits; Scarecrow world re-scan 60 s → 120 s. Existing config files keep their values; these are the numbers a fresh install gets.
[0.1.3]
Fixed
- Away tending can no longer wipe a zone's terrain. When a Scarecrow farm and an AwayFromHome Keeper Stone shared a zone, both mods anchored it at once and each handed the game's object streamer the same objects. The game instantiated every one of them twice, and the zone's terrain compiler reconciled the pair the vanilla way: by destroying the "other" one - which was its own ZDO, the only record of every levelled floor, raised path and cultivated bed in that zone. Three zones of one base went that way in a single tick on a live server. The anchor now never lists an object that is already listed (whoever listed it), sweeps the list once more after every other mod has added to it, never takes server ownership of a terrain compiler, and a guard under the compiler's own start-up makes a double-instantiated compiler drop a stray GameObject instead of its data. A real two-compiler zone is now logged loudly, with which of the pair holds data.
- The seal: the two keepers never hold the same ground. Before a Scarecrow visit begins, the anchor asks whether AwayFromHome's keeper is already holding an overlapping ring; if so, the visit is skipped this round ("already there? skipping this round") and the rotation moves on. AwayFromHome 1.0.7 does the same in reverse. With the seal the two anchors are never in one zone at all; the four guards above are defence in depth behind it. Neither mod needs the other installed.
- 0.1.2 clients can still join a 0.1.3 server: the fix is server-side, so the version wall stays at 0.1.2 for this release.
[0.1.2]
Fixed
- Scarecrow ticks no longer abort on a terrain-compiler repair when HearthBelow (or any mod
patching
TerrainComp.Awake) is installed. The away-tending terrain repair used to re-run the compiler'sAwakewholesale, which also re-ran every other mod's hooks on it; HearthBelow's registers an RPC there, and the second registration threw "An item with the same key has already been added", killing that whole tick (2,970 aborted ticks in one day on a live server). The repair now performs exactly the vanilla steps itself and touches nothing anyone else hooked. - Away-tending no longer wakes a farm's objects before the ground under them exists. The zone anchor handed the whole ring of objects to the scene the instant a visit began, while terrain was still being built one zone at a time - so every visit briefly had crops, chests and terrain compilers standing on nothing (the source of "Terrain compiler could not find hmap", the 1.4-million-a-day null-derefs AwayFromHome was suppressing, and HearthBelow's "heightmap never became ready" give-ups). Objects now stream in zone by zone, only once that zone's terrain is loaded - the same order the game uses around a player.
- Away-tending no longer takes ownership of creatures. Owning a creature makes the server run its AI for the length of the visit, and monster AI does not stop for "nobody is here"; a farm's pieces (a Farm Silo is a 100-health wood chest) were fair game. The claim pass now covers only what the farm needs - Scarecrow, silos, crops, loose drops - and leaves creatures frozen, exactly as vanilla leaves them where no player stands.
Added
- A one-line explanation whenever a Farm Silo or Scarecrow is destroyed. Logged (warning level) by whichever machine ran the destroy, naming the attacker and damage for a hit, or the structural-support reading for a collapse, plus health, ownership and whether the terrain under it was present. If a silo "explodes", the log now says why.
[0.1.1]
Fixed
- Deposits can no longer be erased by the automation - the item-loss guard. A container's visible inventory is a cache of its saved network data, and the game only refreshes that cache on certain paths. The Scarecrow's write pattern (claim the silo, write, save) could therefore save a PRE-DEPOSIT snapshot over items a player had just put in - put a stack in the silo, walk to the Scarecrow, and the next automation write could wipe it (field report: 70 Barley). Every silo read and write now reloads from the saved data first whenever it has moved (the game's own revision check, free when nothing changed), so automation always builds on what is actually in the chest.
- Seed debits now actually persist while someone is at the farm. Withdrawing seeds for replanting never claimed ownership, so with a player nearby (whose game owns the chest) the debit only existed in server memory - the seeds quietly came back while the plants stayed. Seed withdrawal now uses the same write discipline as deposits: reload, skip any silo a player is browsing, claim, then remove.
- Grid planting's chest seed-source got the same two guards: the chest is reloaded before counting and claimed before debiting, and a chest someone is browsing is refused with a message instead of being yanked out from under them.
[0.1.0]
Added
- Grid planting now shows a live preview. With grid mode on, every cell of the grid renders
as a ghost of the selected crop, tinted green where it will plant and red where it is
blocked (occupied, uncultivated, or too close to a neighbour). The preview tracks your aim and
updates as you resize the grid or change spacing, so what you see is exactly what you plant.
Local toggle:
Show Grid Preview(on by default). - Left-click plants the grid. With grid mode on, the normal place click confirms the whole grid - no separate confirm key needed (middle mouse still works as an alternate). One click, one use of Cultivator durability, the entire preview goes in the ground.
- Sectioned seed planting. With a Seed Ratio set, the Scarecrow used to interleave seed-loop
plants and regular crops wherever the next open spot happened to be, which scattered the two
through each other. Now seed-loop plants always take the open spots closest to the
Scarecrow and regular crops the ones farthest, so the field settles into a tidy seed band
around the post with unbroken crop rows outside it - on any field shape, at any ratio. Synced
toggle:
Sectioned Seed Planting(on by default; turn it off for the old scattered behaviour).
[0.0.14]
Changed
- Shipped defaults promoted from live field testing (existing config files keep their own values): growth speed multiplier 18x, Scarecrow rescan every 15s, new Scarecrows start at a 12m radius (server cap stays 40m). Together with 0.0.12's defaults, a fresh install now farms the way the testbed does out of the box.
- README rewritten to match the mod as it actually is: proximity multi-silo (linking is long gone), keeper parking and the empty-server clock, the radius ring, live silo sizing, the seed ratio loop, and the full current config table.
[0.0.13]
Fixed
- Silo size now applies live and identically everywhere - and your "missing" crops come back. Silo size used to be baked into the piece when the game started, from each machine's own config file - so a client whose file lagged the server drew a smaller grid over the same chest: the automation kept tidying produce into the far slots (bottom-right), which existed but rendered nowhere. Nothing was ever lost - it was invisible. Every placed silo now sizes itself from the server-synced setting the moment it loads, resizes live if the setting changes (including the moment a joining client receives the server's config), and never shrinks below an occupied slot.
- Removed the temporary once-a-second cursor diagnostic (the remote-play cursor fix is confirmed).
[0.0.12]
Added
- Radius ring. While a Scarecrow's panel is open, a soft green ground ring shows exactly how far its scan reaches, redrawing live as you step the radius. Purely visual, purely local, and can be turned off (Visual Tuning > Show Radius Ring).
Changed
- Dialed-in defaults (existing config files keep their values - these apply to fresh installs): crops grow 2x vanilla speed; grow anywhere - the biome, heat, cold, and roof/sun requirements are ignored out of the box (crowding, cultivated-ground, and vine-attach rules stay vanilla); new Scarecrows start at a 20m radius (server cap 40m); harvest and replant budgets doubled to 10 per tick so big farms actually fill; the Farm Silo defaults to its full 8x8 = 64 slots.
[0.0.11]
Fixed
- The Farm Silo opens again. 0.0.10's watched-farm fix pinned the Silo server-owned, which silently broke vanilla's chest-open handshake (the game hands a chest to whoever opens it). The Silo is no longer pinned; instead the automation takes ownership only at the moment it deposits, and politely skips any silo a player is actually browsing until they close it.
- The farm now runs continuously while you stand at it. A dedicated server never simulates the world around players - your own game does - so the server-run automation only existed during its brief away-visits (~15s out of every ~2min) even with you at the farm: the field never filled and harvested crops sat on the ground between visits. The away-tending keeper now parks on a farm while a player is within ~64m, ticking it every few seconds the whole time you are there, and resumes its normal rotation when you leave.
- Another swing at the remote-play cursor. While the Scarecrow panel or picker is open, vanilla's per-frame cursor lock is now skipped outright instead of being undone after the fact - the within-frame lock/unlock flip-flop is what a game-streaming host can latch onto to keep the pointer captured. Also logs a once-a-second cursor diagnostic while the panel is open (temporary) so the next report pinpoints whatever is left.
[0.0.10]
Fixed
- A watched farm no longer freezes. Vanilla hands everything near a player to that player's machine every 2 seconds, which silently knocked the server-run automation off its own Scarecrow and Silos the moment anyone walked up - harvest, sweep, and replant all stopped exactly while you stood there watching (growth itself kept working, which made it look half-alive). The Scarecrow and Farm Silo now stay server-owned, and the drop sweep claims-and-collects in the same tick, so the farm runs identically whether it is being watched or not.
- The Scarecrow panel's cursor can no longer stay locked to the center of the screen. Cursor freeing while the panel or picker is open is now unconditional (vanilla's "only when the mouse is the active device" rule leaked gamepad-mode's no-cursor behavior into the panel - a plugged controller or a streaming client's virtual pad was enough) and is re-asserted after every other mod has had its say each frame.
[0.0.9]
Fixed
- Away-tended crops never matured on an empty dedicated server - the actual root cause of "everything ticks but nothing grows". Vanilla freezes the world clock the moment the last player logs out, and a plant's age is measured against that clock - so a crop planted or tended with nobody online stayed seconds old forever, no matter how many hours the server sat running. New synced setting Time Flows While Empty (Away Tending group, default on) keeps the clock running on an empty server: crops age, pickables respawn, and away tending finally has something to harvest. Turn it off to restore the vanilla freeze.
[0.0.8]
Changed
- Automation is now server-authoritative, the Away From Home model. Only the server runs the Scarecrow's harvest/replant/sweep passes (in singleplayer, your own game is the server) and it claims ownership of every Scarecrow, every crop it picks, and every drop it sweeps. Setting changes from the panel travel to the server as a routed RPC, where the real rules bind: only the Scarecrow's builder or an admin may change settings, every value is re-clamped against the server's own synced config, and the server answers with an on-screen confirmation. A patched client gains nothing.
- Silos are now automatic and plural - no more linking. A Scarecrow simply uses every Farm Silo within range (new synced setting, default 10m): draws seeds from the nearest with stock, deposits into the nearest with room. This also permanently fixes "the silo link is forgotten on relog" - the old stored link was wiped by a self-heal race during zone load; now there is nothing stored to lose. Existing Scarecrows pick their nearby silos up automatically.
- Bigger Farm Silo - new silos default to 48 slots (8x6, was 24). Configurable up to 8x8.
- The crop picker now shows ONLY what is stocked in a Silo in range, with the live count per row. An empty list explains itself in the title (no silo in range vs. nothing stocked) instead of dead-ending.
- Silos keep themselves organized - seeds fill from the top-left, produce from the bottom-right, so the two ends never interleave in pickup order.
Fixed
- Harvested crops no longer get left on the ground (Barley especially). Two real causes: the old vacuum only looked 1.5m around a plant in the same instant it was picked (drops that bounced, rolled, or spawned late were missed forever), and its silo check refused a deposit when the only free space was room on an existing stack. The Scarecrow now sweeps every loose farm item in its whole radius every tick, stack-aware - which also collects crops left over from switching crops mid-harvest. Only farm items are swept; a dropped sword is safe.
- Harvesting a crop owned by another player's machine silently did nothing while still counting as harvested. Picks are now routed to whoever owns the crop, so they always land.
- Away-tending could scan a fully-cultivated farm as "not cultivated" - root cause found and fixed. A vanilla race: when a zone is force-loaded, the terrain data holder can wake before the terrain itself and then never applies the zone's cultivation - for the whole visit the ground reads as bare dirt. The Scarecrow now detects and repairs that in place (doing exactly what vanilla would have done had the pieces woken in the right order), and defers its scan until the terrain data is genuinely applied.
- The farm no longer needs anyone logged in, for anything. Replanting used to borrow a connected player's presence to place plants and quietly paused on an empty server - "log in occasionally" was a hidden requirement. Plants are now placed by the server directly (recorded as built by the Scarecrow's builder), so the full loop - harvest, collect, replant, seed loop - runs unattended on an empty server via away-tending.
- Crops actually finish growing during unattended visits. Vanilla growth is opportunistic in ways a brief force-load visit can't rely on: only the machine that "owns" a plant may grow it (a crop you planted still belongs to your machine after you log off), checks are throttled, and a freshly-loaded plant refuses to grow for its first 10 seconds - all racing a visit window of about 15. Observed live: 8 overdue barley sat as saplings through 17 visits. The Scarecrow now completes overdue growth itself during its pass - claims the plant, runs the same health rules (your "Ignore ..." settings still apply), grows it, and harvests it in the same visit.
- Tooltips float at the cursor like real tooltips, sized to their text, instead of clipping in a fixed footer strip.
- Using the Scarecrow panel no longer throws items out of your inventory. The panel secretly depended on the inventory being open for a usable cursor, and clicks on it fell straight through into the inventory UI stacked beneath - grabbing items and dropping them on the ground. The panel and picker are now proper modal windows: they free the cursor themselves, block movement/attacks/ camera while open, and dismiss instantly when any vanilla menu opens. Esc and Tab still close them.
Added
- Farming telemetry for BarrkBOT (schema v4): the server writes per-farm statistics - crop,
stock levels, plantable spots, harvests/plantings/sweeps since session start - to
BepInEx/config/LetItGrow/barrkbot_farming.jsononce a minute.Telemetry Exportconfig (default on) switches it off. See BARRKBOT_CONTRACT.md.
[0.0.7]
Fixed
- Auto-planting burned seeds on plants that silently died. Crops in Valheim self-delete at grow time if anything about their spot is wrong - under a roof, wrong biome, too hot/cold, or a neighbour's collider inside their grow sphere - and the Scarecrow checked none of that before spending a seed. It now pre-checks every candidate spot against the exact conditions the mature plant will be judged on (each one honoring the matching "Ignore ..." growing-condition setting), so a seed is only spent where the plant will actually survive. With Debug Logging on, each scan reports how many spots were rejected for which reason.
- Field spacing is now measured, not guessed. The old grid assumed every sapling's collider fits in a 0.4m margin; a crop with a bigger collider got planted in a grid where every plant choked its neighbours and the whole field withered away. Spacing is now computed from the crop prefab's actual collider size, and each placement additionally verifies it won't push an existing healthy plant over its space limit.
- Seeds are debited after placement, not before, so a failed placement can no longer eat the seed.
Added
- Seed Ratio - full self-sustaining farming. Crops like carrots come as a pair: seeds grow the vegetable, and replanting a vegetable grows new seeds. The Scarecrow panel now shows this seed loop for the assigned crop and offers a Seed Ratio stepper: at ratio N it plants 1 seed-making plant for every N regular ones (the panel tells you the break-even N - for carrots, 3). When seeds run out entirely and the loop is on, it automatically replants harvest stock for seeds instead of stalling. 0 (default) turns the loop off. Crops that are their own seed (barley, flax) don't need this and don't show the stepper.
- The crop picker now shows live Silo stock. Every row reads
[42 in Silo]or[not in Silo], and stocked crops sort to the top - so what the farm can run on right now is the first thing you see. Unstocked crops still list (assigning the crop first, then stocking, stays possible), and the Scarecrow panel's own "Crop:" line shows the current seed count too.
[0.0.6]
Fixed
- The crop list looked empty because it was being drawn in the wrong place. The list itself was fully populated the whole time - its contents were rendering at the top-left corner of the screen, tucked behind the Scarecrow panel, while its frame drew correctly where it belonged. The picker is drawn directly rather than as a game window, so it has no window-local coordinate space to position against, and the rows were being placed relative to a window that wasn't there. Now positioned in absolute screen coordinates, so the rows appear inside their own frame.
- Tooltip line sat too high, riding up into the Close button. Nudged down into its own strip.
Added
- The crop picker now answers "will this farm run itself?" for you. Vanilla offers two ways to
plant most crops - the vegetable itself or a dedicated seed item - and only one of them harvests
back into what it cost, which is the entire difference between a farm you stock once and a farm you
keep topping up. Every entry now shows its real seed-to-harvest ratio, read from the crop's own
prefabs (
Carrot - 1 seed -> 3 back, self-sustainingvsCarrot Seeds - 1 seed -> 3 Carrot, needs restocking), tree saplings are flagged as unharvestable by a Scarecrow, and the self-sustaining choices sort to the top of the list. The Scarecrow panel repeats the chosen crop's ratio underneath it, and picking one confirms in the corner whether it will sustain itself. - Picker widened to fit a crop name and its ratio on one line.
[0.0.5]
Fixed
- The Scarecrow never planted anything, anywhere - root cause found. Its "is this spot free?" test was a physics check with no layer filter, so it tested against every collider in the world including the terrain itself. Every candidate spot is placed exactly on the ground by design, so the ground was hit every single time, every spot was rejected, and the Scarecrow reported "no empty cultivated ground" while standing in the middle of a perfectly good empty field. It now uses the exact layer set and rule vanilla's own plants use to decide whether they have room to grow - including vanilla's rule that a withered plant does not block, so dead crops get replanted over instead of holding a spot forever. The Cultivator's grid-planting tool had the identical bug and is fixed the same way.
- Field spacing is now taken from the crop itself. Plant spacing was a fixed 1m guess for everything; it's now read from each crop's own grow radius, so a field packs as tightly as that crop actually tolerates instead of overcrowding one crop and wasting half the field on another. Every spot is also re-checked immediately before planting, so plants placed earlier in the same pass are accounted for and a row can't stack on top of itself.
- Crop picker was empty even with a Silo linked. 0.0.4 widened it to "every crop the Cultivator can plant", but it still sourced that list from the Cultivator's piece table, which came back empty in-game and took the whole picker down with it. A piece table is the wrong authority anyway - the list is now built from the crops themselves (anything that actually grows), which doesn't depend on any tool's table being populated. It also no longer caches an empty result, so a list built too early can recover instead of staying blank until you relog.
- Scarecrow model sat about a meter too high. Now correct out of the box - the measured offset is the new default, no config change needed. (The Farm Silo was already correct and is unchanged.)
- Scarecrow panel: heading was clipped, and nothing was explained. The window was narrower than the frame's own title band allows, cutting off the heading. Widened, and every control now has a hover tooltip explaining what it does, shown along the bottom of the panel.
- Scan detail in the log. With Debug Logging on, each scan now reports the crop, its grow radius, the resulting spacing, and how many spots were found vs. rejected and why - so an idle Scarecrow can be diagnosed from the log instead of by guesswork.
Notes
- For a genuinely self-sustaining field, assign the crop whose seed is the thing it harvests into
(planting
Carrotyields Carrots). Crops planted from a dedicated seed item (Carrot Seeds) do not harvest back into that seed, so the Silo will need restocking - the picker names the exact item to stock either way.
[0.0.4]
Fixed
- Couldn't assign a crop even with a Silo linked ("nothing to pick"). The crop picker only ever listed seeds you were ALREADY holding in your inventory or the linked Silo - on a freshly-linked, still-empty Silo that meant an empty list with nothing to click. Assigning a target crop is normally the first step, before any seeds are stocked. The picker now lists every crop the Cultivator can plant, regardless of what's currently in stock.
- Raw
$item_...tokens leaking into the debug log. The Scarecrow's replant-blocked/replant-success diagnostics logged the seed item's raw internal name instead of its localized display name. Purely a log-readability fix - actual seed lookups were never affected by this. - Scarecrow's model still floated above ground after the 0.0.3 placement fix; Farm Silo is correct.
The bounds-based auto-fit that fixed the Silo is a geometric guess at where "the ground" is on a
model, and it guessed wrong for the Scarecrow specifically - a tall, pole-shaped model whose lowest
vertices are a buried-post tip rather than the point that should sit level with the terrain, unlike
the Silo's squat, self-contained shape where the two happen to coincide. Rather than hardcode another
blind correction, added a live-tunable manual Y-offset per piece (
Scarecrow Visual Y Offset/Farm Silo Visual Y Offset, config section 11) on top of the auto-fit, plus a debug-log line reporting the exact numbers behind it - takes effect immediately on newly-placed pieces, no rebuild or relog required to test a new value.
[0.0.3]
Fixed
- Scarecrow/Farm Silo config panel used the bare default Unity look. Restyled with the same shared "gilt picture-frame" theme the rest of this mod stable uses (Fatty's Feast Ledger, etc.), instead of an unstyled grey box.
- The crop picker showed raw, untranslated text (
$item_carrotseedsinstead of "Carrot Seeds"). Vanilla genuinely has two separate ways to plant some crops (the raw vegetable itself, or a dedicated seed item), so an unreadable label made it easy to assign the wrong one relative to what was actually stocked - which line up as the likely reason nothing got planted in testing. Now localized. - Silent no-op when replanting was blocked. The Scarecrow now logs specifically why it isn't replanting (no crop assigned, no silo linked, no empty cultivated ground, not enough seeds stocked, or no connected player to place through) instead of doing nothing with no trace in the log.
- Farm Silo still sat too low after the 0.0.2 placement fix; the Scarecrow now sat too high. The first fix repositioned the donor's own mesh transform in place, but that transform's height depends on its FULL ancestor chain, not just its immediate parent - one donor's chain undercorrected, the other's overcorrected. Rewritten to add one fresh visual object parented directly to the piece's root instead, which removes the ancestor chain from the equation entirely.
[0.0.2]
Changed
- Dropped the Jotunn dependency entirely. The Scarecrow and Farm Silo pieces now register by hand
against
ZNetScene/ObjectDBinstead of through Jotunn'sCustomPiece, fixing a bug report where the Farm Silo never appeared in the Hammer build menu.
Fixed
- Scarecrow/Farm Silo models looked flat and the Farm Silo sat too low. First in-game test found real problems in the art pipeline: the mesh swap never lifted the model to the piece's ground origin (Meshy meshes are centred on their own pivot), a donor's multi-LOD renderer meant only the closest LOD actually got the new mesh, and the bundle shipped albedo only — the normal map that carries almost all of the surface detail was never extracted or bound, and the mesh had no tangents to make one work even if it had been. All fixed: every LOD level is now dressed and lifted to the correct ground height, and the bundle now bakes tangents plus a real, measured-for-relief normal map per model.
- Build-menu icons. The Scarecrow and Farm Silo previously showed their donor's own icon (a chest, a pole). Both now have dedicated icon art.
- Crops planted by the Scarecrow (and the grid tool) floated or sank into sloped ground. Both reused a single fixed height across an area instead of sampling the actual terrain per spot. Now each spot's real ground height is sampled directly from the terrain data (faster than a physics raycast, and exact), so planting follows the slope instead of a flat plane.
- The Scarecrow's config panel didn't close with Esc or Tab like other windows. It only closed via its own Close button. Now it collapses automatically the moment the game returns to play, matching every other window in the game (and this mod's own picker popup) - ported from a fix already made in Fatty's Feast Ledger.
- Farm Silo's build cost referenced a material that doesn't exist.
Nailsisn't a real item in Valheim (onlyBronzeNails/IronNailsare) — the Farm Silo's cost silently dropped to just Wood. Fixed toIronNails, caught during a live dedicated-server test. - Away tending could have mis-placed a nearby trader — now fixed in full. The zone-anchor rotation that keeps a distant Scarecrow's ground loaded could trigger vanilla's ground-snapping in ways that can drop a trader (Haldor/Hildir/the Bog Witch) through the terrain permanently if she's mid-spawn elsewhere in the loaded world at that moment. The anchor no longer force-generates never-before-visited terrain; a ground-readiness check now guards every ground-snap attempt anywhere in the world (not just this mod's own loading), holding one back rather than dropping it if its terrain isn't finished yet; and a short post-spawn watchdog corrects any trader who still ends up under the ground — including one already buried in an existing save — the first time she's loaded after updating.
[0.0.1]
Added
- Growth speed & growing-condition control. A global growth speed multiplier, plus independent bypass toggles for every one of vanilla's planting restrictions (sun, spacing, biome, cultivated ground, heat/cold shielding, needing something to attach to).
- Hover grow-timer. Looking at a planted crop or sapling shows whether it's ready to harvest or exactly how long is left, computed from the plant's own growth state so it always matches whatever speed multiplier is running.
- Grid planting. Extends the vanilla Cultivator with a grid-placement mode: adjustable rows, columns and spacing, seeds drawn from your own inventory or a nearby container, and a single confirm that plants the whole field at once. A single click with grid mode off is unchanged from vanilla.
- Scarecrow + Farm Silo auto-farming. A Scarecrow watches a configurable radius, auto-harvesting anything ready and auto-replanting from a linked Farm Silo's seed stock at a configurable seed-per-plant ratio. Walk up and interact with a Scarecrow to assign its crop, link a Silo, or tune its radius and per-tick budgets.
- Away tending. Scarecrow automation now keeps working on farms nobody is currently standing near — the server periodically visits every placed Scarecrow in turn, holding its zone loaded just long enough for a real harvest/replant pass, then moves on. Configurable, and can be turned off to return to loaded-zone-only tending.
Notes
- All gameplay-affecting settings are server-synced; only local hotkey bindings stay per-client.
- Custom Scarecrow/Farm Silo art ships via an embedded AssetBundle; if it's ever missing for any reason the pieces fall back to their donor meshes rather than failing to load.