You are viewing a potentially older version of this package. View all versions.
suspicious_geet-OhMyGrid-1.0.0 icon

OhMyGrid

Plant crops in donut and other non-square patterns. Cycle center modes, auto-snap to existing plants for concentric placement, see cost and yield live, and mass-pick/refuel with Shift+E.

Date uploaded 5 months ago
Version 1.0.0
Download link suspicious_geet-OhMyGrid-1.0.0.zip
Downloads 46
Dependency string suspicious_geet-OhMyGrid-1.0.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

README

OhMyGrid

Plant crops in donut and other non-square patterns in Valheim. Lay down a big onion ring, drop a smaller carrot donut concentric inside it, and stop fighting the rectangular grid. Also: mass-pick / mass-refuel with Shift+E.

icon

Features

  • Donut planting. While holding the cultivator with a seed selected, a ring of ghost previews shows around your chosen center. Left-click plants the whole donut in one go.
  • Per-point validity. Each ghost turns red when its spot is invalid — blocked by rocks/plants, out of reach, or on uncultivated soil. Green ones are the only ones that get planted, charged, and counted.
  • Cost + yield overlay centered at the top of the screen: shows the current plant, valid/total point count, total seed cost, and expected yield — all live as you tune the radii.
  • Four center modes, cycled with F7 (top-left HUD toast on change):
    • Player — donut follows you.
    • Fixed — pins the donut at your current spot. Walk away, donut stays.
    • Cursor — donut follows where the cultivator ghost aims.
    • CursorSnap — like Cursor, but the center auto-snaps to the centroid of nearby existing plants. Perfect for concentric placement.
  • Geometry toggle. F6 cycles Off → Donut → Off. In Off, the mod stays out of the way and you place one plant per click like vanilla.
  • Shift+E mass-interact (hover-scoped, same-type only):
    • Hover a Pickable → harvest every Pickable of the same item type in range. Carrots don't sweep nearby strawberries.
    • Hover a Fireplace → fuel every Fireplace in range.
    • Hover a Smelter / Charcoal Kiln → feed every smelter in range.
  • Persists across sessions. Center mode, geometry mode, radii, hotkeys, and toggles are all stored under cgaggino.OhMyGrid.cfg.

Default hotkeys

All hotkeys are configurable under [Hotkeys] in the config file.

Key Action
F6 Cycle geometry: Off ↔ Donut
F7 Cycle center mode: Player → Fixed → Cursor → CursorSnap → Player
F8 Dump every donut grid point to the BepInEx log
] Outer radius +1 spacing step
[ Outer radius −1 spacing step
Shift+] Inner radius +1 spacing step
Shift+[ Inner radius −1 spacing step
Left-click Plant the entire donut (when holding a Plant ghost)
Shift+E Mass-interact with the hovered object's type in range

Defaults: InnerRadius=2m, OuterRadius=6m, Spacing=1m, AutoSnapRadius=12m, MassInteract.Radius=5m. All editable in the cfg file (or via BepInEx ConfigurationManager if you have it installed).

Concentric donut workflow

  1. Stand inside an existing donut of one crop (or anywhere if it's the first).
  2. Tap F7 until the HUD shows Mode: CursorSnap.
  3. Aim near the center — the donut snaps to the centroid of the existing plants automatically.
  4. Bring [ until the outer radius matches the inside of the previous donut.
  5. Swap seed type and left-click. The new ring lands concentric to the old one.

Building from source

You need a local Valheim install with BepInEx (the build references assembly_valheim.dll and friends; they're not redistributable):

$env:VALHEIM_INSTALL = "C:\Program Files (x86)\Steam\steamapps\common\Valheim"
dotnet restore
dotnet build -c Release

The output is bin/Release/OhMyGrid.dll. Drop it in your r2modman / Thunderstore Mod Manager profile under BepInEx/plugins/.

Known limitations

  • Centroid snap is biased on asymmetric clusters. If the existing plants are a half-donut or irregular, the snapped center won't be the geometric center. A least-squares circle fit is on the roadmap.
  • Plant.Awake NRE per clone. The placement ghost has no ZNetView and Plant.Awake dereferences it unconditionally. The exception is caught by Unity and the visual still renders correctly; HaveGrowSpace is validated against the source ghost (not the clones), so behavior is correct, but the log gets one NRE entry per donut clone created.

Compatibility

  • Targets Valheim 0.221.x.
  • BepInEx 5.x via denikson-BepInExPack_Valheim (5.4.2333+).
  • Client-only — no ServerSync. Use freely on dedicated/multiplayer servers without forcing other players to install.

License

MIT — see LICENSE.

CHANGELOG

Changelog

1.0.2 — 2026-09-20

Runtime fixes found while play-testing 1.0.1 on Valheim 1.0.15. This build was play-tested on Valheim 1.0.15 (network version 40) + BepInExPack 5.4.2350: 0 exceptions in LogOutput.log, seed accounting exact, ghosts + overlay rendering, Shift+E targeting OK.

Known issue: vanilla's requirement panel still shows the per-plant cost (1) while the donut is active; the top overlay shows the real batch cost. Cosmetic, planned for 1.0.3.

  • Seeds are now charged for every plant. Since 1.0, vanilla charges one piece after TryPlacePiece returns, so a donut of N plants cost 1 seed. The mod now pays for N-1 itself and leaves the last one to vanilla (stamina/skill intact), checks stock before each plant, and never plants what you can't pay for.
  • Ghost previews render again. Ghost clones are created inactive and stripped of Plant/ZNetView before activation. Previously Plant.Awake ran on the clone and either NRE'd every frame (after the first placement recreated the ghost) or, worse, gave the clone a real ZDO — a phantom plant in the world simulation. If cloning ever fails, the preview turns itself off for that ghost with one error line instead of one exception per frame.
  • Overlay shows what you can afford: can afford N, Need: item × N (have M), and ghosts beyond your stock are tinted red.
  • Shift+E on a smelter/kiln/fire feeds only the station you aim at, until it is full or you run out — no more radius sweep feeding the furnace when you aim at the kiln. Aiming at a specific slot (ore vs fuel) feeds just that slot. Fires use the refill path (no accidental toggle-off).
  • Log lines for seed cost (stock before/after, paid here/by vanilla), Shift+E target + amounts, geometry cycling, and ghost clone creation — so a run can be verified from LogOutput.log.

1.0.1 — 2026-09-20

Compatibility rebuild for Valheim 1.0 (tested against l-1.0.12). No functional changes.

  • Rebuilt against the 1.0 assemblies. 1.0 added optional parameters to Player.PlacePiece and MessageHud.ShowMessage, so the 1.0.0 DLL threw MissingMethodException when planting a donut or showing any HUD toast.
  • Dependency bumped to denikson-BepInExPack_Valheim-5.4.2350.

1.0.0 — 2026-05-17

Initial Thunderstore release.

Planting

  • Donut placement geometry (configurable inner radius / outer radius / spacing).
  • Live ghost previews around the resolved donut center, each tinted per-point: red when blocked by the grow-space check, by max placement distance, or when the soil isn't cultivated for plants that need it.
  • Left-click plants every green ghost in one click, charged from inventory. Out-of-resource / out-of-space / out-of-reach / uncultivated points are skipped silently and reported in the log summary.

Center & snap

  • F7 cycles Player → Fixed → Cursor → CursorSnap → Player with a HUD toast on every change. Fixed pins the donut where it currently is; walk away freely. CursorSnap auto-snaps the donut center to the centroid of nearby existing plants (AutoSnapRadius, default 12 m), so concentric placement is a matter of "stand inside, F7, plant".

Overlay

  • Centered top-of-screen overlay shows the active plant, valid/total point count, total seed cost, expected yield, and the current donut radii. Updates live as you nudge the radii or change mode.
  • Toggle with [Overlay] ShowCostOverlay.

Geometry toggle

  • F6 cycles Off ↔ Donut. Off makes the mod a no-op (vanilla 1-plant click), so you can quickly drop into single-plant precision mode without uninstalling.

Mass interact (Shift+E)

  • Hover-scoped: looks at what you're aiming at and only mass-interacts with the same kind.
  • Pickables additionally filter by drop type, so harvesting carrots doesn't sweep neighboring strawberries or mushrooms.
  • Supports Pickable, Fireplace, and Smelter (both ore and fuel switches).

Other

  • All hotkeys, radii, snap distance, mass-interact radius, and the on/off toggles persist across sessions via the BepInEx config.