You are viewing a potentially older version of this package. View all versions.
noodle_house-Growbed-0.3.0 icon

Growbed

Tiered placeable farming stations. Seed a trough, watch it grow, harvest the whole bed in one interaction. Four tiers, works with modded crops.

Date uploaded 3 weeks ago
Version 0.3.0
Download link noodle_house-Growbed-0.3.0.zip
Downloads 26
Dependency string noodle_house-Growbed-0.3.0

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2350 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2350
ValheimModding-Jotunn-2.30.0 icon
ValheimModding-Jotunn

Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.

Preferred version: 2.30.0

README

Growbed

A tiered placeable farming station for Valheim. Seed it, watch it grow through visual stages, harvest the batch in one interaction — the Fermenter/Smelter pattern reskinned as farming, in four material tiers.

Built on BepInEx + Jotunn. Multiplayer and dedicated-server safe by design.

Status

Milestone State
1. Dummy placeable in-game compiles against the real game assemblies; not yet run in-game
2. Interact/harvest loop + ZDO sync compiles; not yet run in-game
3. Real models, stage visuals geometry generated; Unity build tooling written, bundle not yet built
4. Tier config table done — all four tiers are data rows
5. Balance pass numbers chosen and applied; needs playtesting to confirm
6. Polish (sound, particles, tooltips) tooltips done; effect lists wired but unassigned
Packaging Thunderstore manifest, 256x256 icon and package script done

The mod builds clean against Valheim's real assemblies and packages into an installable dist/Growbed-0.1.0.zip. Nothing has been run inside Valheim yet — Valheim has no macOS build, so the in-game half of milestones 1–2 needs a Windows or Linux machine. See docs/SETUP.md.

Layout

src/Growbed/          the mod
  GrowbedPlugin.cs    BepInEx entry, piece registration, localisation
  GrowbedTier.cs      the tier table — all balance numbers live here
  Growbed.cs          the station behaviour: state, interaction, visuals
  SeedRegistry.cs     seed -> crop discovery
  GrowbedConfig.cs    admin-only, server-synced config
assets/blender/       procedural model generation
assets/icons/         build-menu icons (rendered, embedded in the DLL)
unity/                Editor tooling that turns the models into the AssetBundle
assets/out/           generated fbx/glb/blend + preview render (gitignored)
tools/                assembly fetch, packaging, r2modman deploy, apicheck
docs/                 HANDOFF (start here), SPEC, SETUP, BALANCE, MULTIPLAYER

Two deliberate departures from the original spec

Seeds are discovered, not allowlisted. The spec called for matching m_shared.m_name against known seed prefabs. Instead SeedRegistry walks the game's own Plant prefabs and reads seed, crop, yield and grow time straight off them. Same free compatibility with crop mods, but it also means grow times and yields track vanilla automatically instead of being hardcoded constants that drift when the game rebalances.

Growth stage is derived, not stored. The spec listed stage as a ZDO field. Storing it would mean replicating a value every peer can compute, and a stage advance would need an RPC that can be missed. Only the plant time is stored; each client derives the stage. One source of truth, no desync, correct for a client joining mid-growth. See docs/MULTIPLAYER.md.

Build and install

tools/package-thunderstore.sh

Builds and writes dist/Growbed-<version>.zip, ready for r2modman -> Settings -> Import local mod. BepInEx and Jotunn come in as declared dependencies rather than being placed by hand.

Requires the .NET SDK and a path to Valheim's managed assemblies — full instructions, including how to get those on a Mac, in docs/SETUP.md.

For iteration against an existing profile, tools/deploy-r2modman.sh copies the built DLL straight into it.

Generate the art

/Applications/Blender.app/Contents/MacOS/Blender --background \
  --python assets/blender/gen_growbed.py -- --outdir assets/out

Current output, all comfortably inside the low-poly budget:

Tier Slots Trough tris Worst case on screen
Wood 4 132 660
Bronze 6 228 1020
Iron 8 260 1316
Silver 12 260 1844

Balance model

Grow-time multipliers are deliberately above 1.0 — a plant in a growbed grows slower than the same plant in the ground. A bed packs roughly twice vanilla's plant density into its footprint, so vanilla-speed growth would have put even the entry tier at 2x vanilla throughput per m². What a bed sells is batch planting, batch harvest and a tidy build, not raw output. Full working in docs/BALANCE.md.

Tier Slots Time mult Throughput vs vanilla per m²
Wood 4 2.20x 0.9x
Bronze 6 1.80x 1.1x
Iron 8 1.60x 1.3x
Silver 12 1.30x 1.5x

Open questions

  • Ship with all crops (automatic, given seed discovery) or restrict to 1–2 at launch.
  • Piece build recipes have no vanilla concept of a crafting-station level, so "Forge lvl 2/4" cannot be enforced the way the spec assumes. Material cost already gates progression — you cannot hold silver before the Mountains. Worth dropping the level requirement unless it needs enforcing for its own sake.
  • Beds lock from planting until harvest; you cannot top up a partly planted bed. Allowing top-ups would let a player plant one seed, wait, then fill the rest for a near-instant harvest. Locking is the simple correct answer, but it should be a conscious one.

CHANGELOG

Changelog

1.1.3

  • Ko-fi and Discord mod-support buttons at the top of the mod page.

1.1.2

  • Fixed: an empty bed could only be planted with the first seed in your inventory, or with seeds in your hotbar. Carrots in your backpack behind a stack of carrot seeds had no way in. L.Shift + interact on an empty bed now switches between everything you can plant, and the choice carries over to the next bed.

1.1.1

  • Fixed blueberry bushes in a bed showing their berries before they were ready. A bush now hides exactly what the game hides when you pick it.
  • Changed: harvesting pops the crop out of each plant onto the bed, the way picking in a field does, instead of spawning it all at your feet where it went straight into your inventory.

1.1.0

  • Fixed harvesting a bed giving less than picking the same plants in the ground. A bed now runs the game's own pick: the resource-rate world modifier applies, the crop's extra drops are rolled, and — the one you feel — harvesting raises Farming and rolls the bonus yield that skill buys, up to a 25% chance of an extra per slot at maximum. Beds were paying a flat stack and granting no skill at all.

  • Changed: beds grow at 0.75x the plant's vanilla time by default, and bushes at 0.50x their respawn time. Bushes were the worse offender — their timers are written for bushes scattered across a continent. Both are settings; 1.0 restores parity.

  • Added Balance / EnablePickBonus for servers that would rather a bed paid a flat, predictable yield.

  • Changed: an empty bed now tells you what planting it would do before you do it — which crop, how many slots it fills, what you get back and how long it takes.

  • Added: the bed lists the other seeds in your hotbar with the key that plants each one, so you can pick a crop instead of taking whichever seed happened to be first in your inventory. Pressing a hotbar key at a bed always worked; nothing said so.

  • Fixed a hotbar key doing nothing on a bush bed with room left. It now adds bushes, the same as Shift-interacting.

    Everyone on a server needs 1.1.0 — the harvest message carries a new field, and a 1.0.0 client cannot read it.

1.0.0

First stable release. Beds show the crop you actually planted, at the size the game grows it, and the wooden bed finally looks like it was built on purpose.

  • Fixed plants in a bed being invisible. They were drawn correctly the whole time, fifty metres above the bed: Valheim parks its prefabs high above the world, and the bed was copying that position along with the model.
  • Changed: plants are drawn at the size the game draws them in the ground, rather than resized to fit the bed. Added an Appearance / PlantScale setting if you want them smaller in a packed bed.
  • Changed: a berry bush in a bed is bare until it is ready, and carries its fruit when it is.
  • Fixed the wooden bed's stone footings standing proud of the frame, which left a bright ledge running round the bed and corners jutting past the sides that made the whole thing look slightly askew. They sit flush now.
  • Fixed the wooden bed's stone footings looking like flat pale bands rather than stone. They now borrow the game's rock material, which is painted on in world space and so cannot be mapped onto our geometry wrongly.

0.3.6

  • Fixed being able to plant trees in a bed.
  • Added a BlockedSeeds setting, so a bed refuses loose resources that mods make placeable — firewood, flint, ore. Blocked by default; clear the setting to allow them.

0.3.5

  • Fixed planted beds looking completely empty. Seedlings were sitting lower than the bed's own rail, and grown plants were being culled out of the scene entirely.

0.3.4

  • Added: a bed shows the plant you actually planted, at every growth stage. Works for modded plants too.
  • Changed: the wooden bed stands on stone footings, instead of two loose grey blocks lying underneath it.

0.3.3

  • Fixed crops in a bed taking far longer to grow than the same crop in the ground.
  • Added support for bushes — Plant Everything's berries, mushrooms and flowers. You pick the fruit and the bushes stay; shift-use tops up a bed with slots to spare.
  • Changed: bed timber is textured wood instead of a flat slab of colour.
  • Changed: each tier's trim is made of the stone or metal the bed cost.

0.3.2

  • Fixed a link on this page that led nowhere.

0.3.1

  • Changed: this page and the changelog are written for players rather than developers. Safe to skip if you are already on 0.3.0.

0.3.0

  • Removed the open-sky requirement. Build beds anywhere — indoors, in a cellar, under a roof.
  • Fixed the soil in a bed looking like the timber around it.

0.2.1

  • Fixed beds landing on their side when placed.
  • Fixed crops being made of wood.

0.2.0

  • Added real models for all four tiers, replacing the placeholder blocks.
  • Added config for every tier: slots, growth speed, yield, build cost, station, durability and size.
  • Fixed beds refusing every seed you offered them.
  • Fixed a half-planted bed looking full once the crops got going.

0.1.0

  • First build. Four tiers, placeable, with placeholder art.