You are viewing a potentially older version of this package. View all versions.
MRAnalytics-TerrainForge-0.3.7 icon

TerrainForge

Free-form terrain brush for Valheim: 9 modes including dedicated terrain copy/paste (snow is a Paint type), 5 selection shapes, undo/redo, path ramps, terrain stamps, snapshots, radial menu, presets, 14 languages, server + client.

Date uploaded 2 weeks ago
Version 0.3.7
Download link MRAnalytics-TerrainForge-0.3.7.zip
Downloads 23
Dependency string MRAnalytics-TerrainForge-0.3.7

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2202 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.

Preferred version: 5.4.2202

README

TerrainForge

Buy me a coffee at cafecito.app

A free-form terrain brush for Valheim. Flatten, raise, lower, smooth, build ramps (two-point, fixed-angle and path), shape shorelines, paint and restore terrain of any size — beyond the vanilla ±8 m limit — with undo/redo, five brush shapes, a radial menu, saved profiles, terrain stamps (copy/paste), terrain snapshots and 14 in-game languages with auto-detect.

Free to download: You can download and use TerrainForge at no cost from Thunderstore or GitHub Releases. The source code is public so it can be viewed on GitHub. Please contact the author and get permission before redistributing the files, publishing modified versions, or using this project in another project. GitHub still allows anyone to fork a public repository, so this request cannot technically prevent forks. No open-source license is granted by this notice.

📖 Full documentation & translations (14 languages): Wiki — see the Documentation languages list below.


What's New in 0.3.7

  • Tool gating fixed — terrain editing and the brush HUD stop when the required tool is no longer equipped, even if free camera remains active. Press F to exit free camera safely.
  • TerrainForge Rod registration fixed — invalid null item entries are removed before ObjectDB indexes are rebuilt, and a failed registration cleans up its clone instead of leaving duplicate entries.

What's New in 0.3.6

  • F5 layout refined — six tabs use two clear rows; the window opens larger and adapts to the screen. Controls are grouped by the selected operation.

  • Ramp tools surfaced — the Ramp panel puts Two-Point, Fixed-Angle, and Connected Path modes up front, with width, softness, and fixed-angle controls where relevant. The Connected mode marks a continuous ramp through 3+ points.

  • Circular ramp planned for 0.4.0 — the roadmap tracks a level circular ring and a height-changing spiral as candidate designs.

  • Unified operation UI — F5 glyphs now appear in the Q wheel, beside the terrain target, and in a compact HUD card with key brush status.

  • Dedicated Copy/Paste tab — copy a marked area, start/confirm a paste preview, cycle clipboard history, and manage saved stamps from one visible place in F5.

  • Dedicated Copy / Paste brush mode in the Q wheel; Apply selects the area according to the active shape, and the configured paste shortcut starts or confirms placement. Snow is available as DeepSnow under Paint, including the existing hold-to-clear modifier.

  • Copy/Paste supports precise Rectangle (two corners), Line (two endpoints), Polygon (vertices), and Circle/Square (brush footprint) selection. The HUD shows the next selection step.

  • F5 holds local player controls and camera still, dims the world, and uses a resolution-aware window. The ESC menu still pauses the whole world in single-player.

  • Free camera safeguard — flying camera is kept above terrain so descending controls cannot take it underneath the map.

  • TerrainForge now registers and synchronizes its own TerrainForge Rod. Jotunn is no longer required.

  • The rod registration is repeated for rebuilt world databases, and network registration is retried after the item database is ready. Plugin, project, and Thunderstore versions were aligned at 0.3.6.

  • The live ObjectDB is also revalidated during gameplay to recover if another mod rebuilds its item index after TerrainForge's initial registration.

  • Free camera (F) fixed — while flying, right-click no longer triggers lock-on, brush drift or a screenshot; Ctrl+wheel adjusts the brush radius; brush adjustments take priority.

  • Docs & wiki in 14 languages — README and CHANGELOG in English, and the full manual on the Wiki (Home + 13 translations).


Description

TerrainForge ships its own TerrainForge Rod (a Hammer clone) as the brush tool. It is handed to you automatically when you join a world and everything is explained in an in-game Help tab (menu key, default F5).


Why client AND server

Terrain edits are stored in the world and the server replicates them to every player. Because the game clamps edits to ±8 m, TerrainForge must also be installed on the server; otherwise the server regenerates the clamped terrain while clients see the full edit → desync.


Requirements

  • BepInEx 5 (x64, Mono) on both client and server. Thunderstore users already have it.

Installation

  1. Download the latest version from Thunderstore or GitHub Releases.
  2. Place it at:
    • Client: ...\BepInEx\plugins\TerrainForge\TerrainForge.dll
    • Server: <server>\BepInEx\plugins\TerrainForge\TerrainForge.dll
  3. Restart the game / server.

⚠️ Must be on both (client and server) for edits greater than ±8 m and correct replication.


Usage

Equip the TerrainForge Rod (given on world join; get it again with F8), aim at the ground and hold right-click to sculpt.

While aiming, a solid ring marks the real brush area, with faint guides in the operation color (full-strength zone, max radius, max aim distance). For Ramp, the real A–B corridor is drawn while you mark. The HUD (bottom-right) shows operation, radius, shape, paint and undo/redo counters; a second line shows the aimed height, current target and local slope in degrees. Guides can be disabled in Preview > Show guides.


Controls

Action Default key
Apply brush Hold Mouse1 (right-click)
Radius + = (also Ctrl + wheel)
Radius − - (also Ctrl + wheel)
Cycle operation ,
Cycle shape .
Cycle paint /
Use aimed height (instead of your feet) for Flatten Hold Left Shift
Undo last stroke Ctrl+Z
Redo undone stroke Ctrl+Y
Fix / release Flatten height (eyedropper) G
Cycle ramp mode (two-point / fixed-angle / connected path) H
Adjust fixed-ramp angle (with Ramp selected) Hold Alt + radius keys / wheel
Radial operation menu (hold, release to confirm) Q
Adjust mode (wheel = radius, zoom frozen) V
Fine radius steps (0.1 m) Hold Shift + wheel / radius keys
Copy terrain (Stamp) Ctrl+Shift+C or Apply in the Q wheel's Copy/Paste mode
Paste terrain (Stamp) Ctrl+Shift+V (start/confirm preview)
Get the TerrainForge Rod F8
Open the keys + help menu F5

Extra keys (no default, assign them in KEYS):

  • Direct operation: Flatten, Raise, Lower, Smooth, Paint, Restore, Ramp, Shore; the legacy Snow shortcut selects Paint + DeepSnow.
  • Next / previous profile
  • Next / previous stamp (history)

Operations

The nine Q wheel modes are Flatten, Raise, Lower, Smooth, Ramp, Paint, Restore, Shore, and Copy/Paste. Snow is a Paint type (DeepSnow); hold Shift to remove it and restore the original ground.

Details

  • Flatten — follows the ground under the crosshair by default and adapts to what you aim at (e.g. a ramp). Hold Left Shift to level at your feet.
  • Raise / Lower — raise or lower terrain according to the falloff mode and power.
  • Smooth — averages each point with its neighbours (a real blur), smoothing ridges, steps and noise. Hold to smooth progressively. Modes: Full (both ways), Ridges only (lowers only), Dips only (fills only). Shape Line + Smooth = smooth along a path.
  • Ramp — three modes (H): two-point (mark A and B, joins both heights with a straight slope), fixed-angle (B gives direction and length, height follows Ramp angle, adjustable with Alt + radius), and connected path (mark 3+ points for one continuous curve A→B→C…, then double-press to build it). The brush radius sets the ramp width and softness only softens the side edges. Preview: filled semi-transparent corridor + height rings at A and B.
  • Shore — flattens toward the water level + margin (beaches/coastlines), with softness blending like Flatten.
  • Paint — types: Dirt, Cultivated, Paved, ClearVegetation, DeepSnow, Reset.
  • Restore — returns the terrain to its original state.

Shapes

Circle, Square, Line, Rectangle, Polygon (key .).

  • Line / Rectangle: two Apply presses (A and B; line half-width = brush radius, corners define the area with soft edges).
  • Polygon: adds a vertex per press and closes on a double-press (3+ vertices).
  • All area operations apply over these footprints with undo support.

Falloff modes (Raise/Lower)

Cycle in SETTINGS → "Raise/Lower falloff":

Mode Effect
Pointy (original) Central peak, controlled by "Falloff power"
Flat Uniform disc, same weight across the whole radius
Smooth Cosine bell, smooth transition
Linear Decreases in a straight line from centre to edge

In-game languages

15 options: Auto, English, Español, Français, Deutsch, Русский, 中文, 繁體中文, 日本語, 한국어, Polski, Português, Türkçe, Українська, Italiano — default Auto.

Auto-detect: by default Auto detects the language configured in Valheim via reflection. If a language has no complete translation, it falls back to English.

Documentation is available in other languages on the Wiki. See the Documentation languages list at the bottom of this page.


Snapshots (Backups)

SNAPSHOTS tab in SETTINGS: give it a name to save all edited tiles to BepInEx/config/TerrainForge/snapshots/<name>.dat, then load it later (even in another save). Import restores with ownership and is undoable; unloaded tiles warn cleanly.


Stamps (Copy/Paste Terrain)

STAMPS tab in SETTINGS.

  • Copy a selected area: choose Copy/Paste in the Q wheel. Rectangle marks corners A and B with Apply; Line marks two endpoints; Polygon adds vertices and copies on a double-press after 3+ points; Circle/Square copy the aimed brush footprint. The HUD shows the next step. Ctrl+Shift+C follows the same selection flow.
  • Ctrl+Shift+V shows a ghost (wireframe) preview at the crosshair; Q/E rotate, Alt+wheel rotates continuously, Shift+wheel scales, use the paste shortcut again to confirm.
  • Pasting writes only inside the copied region; it does not erase terrain outside it.
  • History of 10 stamps in RAM: "Next stamp" / "Previous stamp" keys cycle them.
  • Save a stamp to disk (.stamp in BepInEx/config/TerrainForge/stamps/, max 12), load it into the clipboard, list and delete from the UI.
  • Stamp tool: in SETTINGS → "Stamp tool" (4 options): Same as brush (default), Any, Pickaxe, TerrainForge Rod. The HUD shows STAMP READY [2/5] when the right tool is equipped and the clipboard has stamps; otherwise it warns Stamp: tool not equipped. Ctrl+Shift+C/V do nothing without the tool equipped.

Preview

  • Solid ring: the real generated area.
  • Faint guides: full-strength zone, max radius, max aim distance.
  • For Ramp: the real A–B corridor (edges + semi-transparent fill) + height rings at A and B.
  • For Flatten/Shore: a marker ring for the target level.
  • Blocked by server/ward: guides in grey.
  • Underwater: the preview floats on the surface.

In-game menu (F5)

6 tabs with a global scroll (mouse wheel):

Tab Purpose
BRUSH Choose the operation and shape, and tune brush parameters.
CONTROLS Rebind keys: click → press a key/button; Esc cancels.
SAVED Manage profiles, snapshots, and history.
OPTIONS Configure tool, display, server rules, and language.
GUIDE Reference for operations, controls, preview, multiplayer, and saving.
COPY/PASTE Copy selected terrain, place/confirm paste previews, and manage stamps.

ESC button: the pause menu has a "TerrainForge" button that opens the panel. F5 freezes local movement and camera look; it does not pause the multiplayer world.


Server + Client

  • Required on both for edits greater than ±8 m and correct replication.
  • Server section (authoritative via config sync):
    • AllowTerrainEdits (default on)
    • AdminOnlyEdits (default off)
    • RespectWards (default on)
    • RadiusCap / DeltaCap (0 = no limit)
  • A server without the mod ignores the section → the client still works for testing.

Performance

TilesPerFrame (1–32, default 4): tiles per frame on large strokes. Prevents lag.


Changelog

See CHANGELOG.md.


Links

Documentation languages

English (this page) · Español · Français · Deutsch · Русский · 中文 · 繁體中文 · 日本語 · 한국어 · Polski · Português · Türkçe · Українська · Italiano

CHANGELOG

Changelog


[0.3.8] - Hotfix for 0.3.7

Context

  • The 0.3.7 log supplied for review showed repeated network prefab registration failures because the stable hash 506871212 was already present, plus invalid null item entries during ObjectDB registration. The log also showed the tool being registered, so the precise runtime failure still needs confirmation in game.

Fixed

  • Network prefab registration now reuses an existing entry when it matches TerrainForgeTool, instead of attempting to add the duplicate key again; hash collisions with another prefab are reported and left untouched.
  • Invalid null item entries are removed before rebuilding ObjectDB indexes, and the tool clone is cleaned up if registration fails.
  • Terrain editing and the brush HUD stop when the required tool is unequipped, including while free camera remains active; equipped inventory data is checked for cases where free camera hides hand slots.

Verification

  • The supplied log identifies the duplicate-key and ObjectDB symptoms, but does not confirm that the game hands out the rod or that terrain editing works after these changes. Test in Valheim before publishing this hotfix.

[0.3.6] - 2026-10-21

Fixed

  • Reworked the F5 panel layout: tabs are split into two rows, window sizing follows screen dimensions, and each operation only shows the controls it uses.
  • Ramp now has a dedicated panel that keeps Two-Point, Fixed-Angle, and Connected Path visible, with width, softness, and fixed-angle controls grouped together.
  • Circle and Square are hidden while Ramp is selected because ramp placement uses its own line/path geometry; both shapes remain available for brush and Copy/Paste selection.
  • Renamed the Path ramp option to Connected in English and Spanish and clarified that 3+ marked points create one continuous ramp.

Planned

  • Added Circular ramps to the 0.4.0 roadmap: prototype both a level ring/annular terrace and a connected spiral that rises or descends around a center.

UI

  • Opening the F5 panel now freezes local player input and camera look, dims the game behind the panel, and opens at a larger resolution-aware size.
  • Added a dedicated Copy / Paste brush mode to the Q wheel; Apply selects the area according to the active shape, while the configured paste shortcut opens or confirms the placement preview. Its HUD identifies the mode separately from Paint.
  • Copy mode now honors the selected shape: mark two corners for Rectangle, endpoints for Line, or vertices for Polygon; Circle/Square copy the aimed brush footprint. The HUD shows the next selection step.
  • Folded Snow into Paint as the DeepSnow paint type; the existing height modifier still removes snow. Existing configs that selected Snow migrate to Paint + DeepSnow.
  • Added a dedicated Copy/Paste tab with visible terrain copy, paste-preview/confirm, clipboard history, and saved-stamp controls; copy/paste buttons close the menu so the requested world action can run immediately.
  • Reused the F5 operation glyphs in the Q radial wheel, selected-operation hub, and an in-world aim badge.
  • Replaced the long, crowded status text with a compact TerrainForge card showing operation, radius, shape, target height, undo/redo, and only relevant contextual status.
  • Kept permission and server warnings visible with a distinct alert color.
  • Free camera now clamps its height above sampled terrain, preventing downward flight through the world while preserving aim toward lower terrain.

Changed

  • TerrainForge now registers its own TerrainForge Rod prefab with Harmony. Jotunn is no longer required.
  • Removed Jotunn from the Thunderstore dependencies; BepInEx is the only required mod dependency.
  • Plugin metadata was aligned at version 0.3.6.
  • Re-register the rod for each ObjectDB instance and retry network-prefab registration after ObjectDB is populated, covering startup-order and world reloads.
  • Verify ObjectDB indexing and network-prefab insertion; report failures instead of silently claiming registration succeeded.
  • Revalidate the rod against the live ObjectDB during gameplay so later database rebuilds by other mods cannot leave auto-give using a stale registration state.

[0.3.5] - 2026-10-17

Added

  • Terrain stamps — dedicated shape selection: select Circle, Square, Line, Rectangle, or Polygon in the Q-wheel Copy/Paste mode; the HUD guides the selection. Paste uses a movable preview and explicit confirmation.
  • Free camera (F) reworked: while flying, right-click no longer triggers lock-on, brush drift or a screenshot; Ctrl+wheel adjusts the brush radius; brush adjustments keep priority over free-fly input; on-screen banner shows the fly distance.

Changed

  • Saved stamps now use version 2 (adds the selection mask); version 1 stamps still load.
  • Documentation: README and CHANGELOG are now in English, with a complete wiki manual available in 14 languages. Internal roadmap added.

Fixed

  • Free-fly camera vs. brush input: suppressed vanilla SecondaryAttack / Block / Attack handling and the scroll-wheel conflict while flying, so aiming, radius and adjustments work from the free camera.
  • Preview of a region-cropped stamp now skips cells outside the copied rectangle.

[0.3.4] - 2026-10-15

Added

  • Persistent HUD: position coordinates, current biome and nearby resources (with counts) always visible next to the tool status.
  • "Reset keybinds" button: in the keys tab, resets every keybind to its default value in one click.
  • Valheim-native UI: full UI redesign using the Averia typeface and Valheim's palette (gold, dark greys), with native-styled buttons, panels, tabs and scrollbars.
  • Native radial menu (Q): working mouse wheel via ZInput.GetMouseScrollWheel(), fixed button hover (radius 34–130 px), identical to vanilla radial menus.
  • Forced visible cursor: in the F5 menu and the ESC button, the cursor is forced visible and unlocked every frame via OnGUI().
  • Slope heatmap (H): slope overlay: 🟢 0–15° → 🟡 15–30° → 🟠 30–45° → 🔴 45°+.
  • Height heatmap (J): height overlay: 🔵 low → 🟢 mid → 🟡 high → 🔴 peak.
  • Stamp Preview Pro: contour lines in the stamp preview — draws a 1 m curve over the stamp area in Valheim gold.
  • Improved Shore operation: a dedicated falloff mode for Shore (ShoreFalloffMode: Linear, Smooth, Flat, Pointy), defaulting to Linear for more natural beaches; a linear falloff is used by default to reach the water level more reliably; configurable in SETTINGS → "Shore falloff".
  • Visible ramp-mode selector: the ramp mode (two-point / fixed-angle / path) is now shown as three selectable buttons instead of a single cycling button.
  • "Quick actions" section in the keys tab: buttons for Undo, Redo, Fix height, Copy/Paste stamp, Previous stamp, Clear marks and the heatmaps — no need to rely only on the hotkey.
  • Vanilla tool blocking (BlockVanillaTerrainTools): while the TerrainForge tool is equipped, vanilla hoe/cultivator terrain edits are ignored.
  • Material diagnostic (log): a button that dumps the terrain shader and texture slots to the log, to assess the feasibility of non-biome textures.
  • Tool color (ToolTint / ToolTintColor): tints the model and icon of the TerrainForge Rod (a Hammer clone) to tell it apart from the vanilla Hammer at a glance. Only affects this mod's tool.

Changed

  • F5 panel reorganized: the SETTINGS tab now groups options into labeled sections (Tool, View, Vanilla, Server, General) instead of a single block of toggles; the tool tint (ToolTint / ToolTintColor) is editable directly in the UI.

Fixed

  • Preview: circles/square hidden on Line/Rect/Poly while marking point A.
  • Cursor visible in the F5 menu and the ESC button (OnGUI forces it visible).
  • Radial menu (Q): the mouse wheel now keeps the selection. Previously, with a centered cursor, the pick was wiped instantly and the wheel looked unresponsive; now only the pointer over an option changes the selection.
  • Alt+Wheel (fixed height): more reliable wheel reading.
  • Menu window: initial size 680×720, min scroll 460 px, wider keybind rows.

[0.3.3] - 2026-10-15

Added

  • Professional bilingual documentation (ES/EN): README, CHANGELOG and WIKI fully rewritten in both languages with professional formatting, tables and complete coverage of every feature.

Fixed

  • Radial menu (Q): working mouse wheel (uses native ZInput.GetMouseScrollWheel), fixed button hover.
  • Preview: circles/square hidden on Line/Rect/Poly while marking point A.
  • Cursor visible in the F5 menu and the ESC button (OnGUI forces it visible).
  • Mouse wheel in the radial menu (Q) using Valheim's native API.
  • Menu window: initial size 560×600, min scroll 400 px.

[0.3.2] - 2026-10-14

Added

  • 14 languages + auto-detect: automatic detection via reflection (Localization.instance.GetSelectedLanguage()). Languages: English, Español, Français, Deutsch, Русский, 中文, 繁體中文, 日本語, 한국어, Polski, Português, Türkçe, Українська, Italiano. Default Auto; falls back to English.

Fixed

  • Preview: circles/square hidden on Line/Rect/Poly while marking point A.
  • Cursor visible in the F5 menu and the ESC button (OnGUI forces it visible).
  • Mouse wheel in the radial menu (Q) using native ZInput.GetMouseScrollWheel().
  • Menu window: scroll view min height 400 px, initial window 560×600 px.

[0.3.1] - 2026-10-14

  • Version fix to resolve a Thunderstore conflict.

[0.3.0] - 2026-10-13

Added

  • Undo / Redo (Ctrl+Z/Ctrl+Y): every application stores exactly the vertices it touches. Configurable depth (0–500) with a slider + textbox in the KEYS tab. Live counters in the HUD. History is cleared when leaving the world.
  • Live HUD data: a second line with the aimed height, current target and local slope in degrees.
  • Eyedropper (G): fixes the Flatten height at the aimed point (takes priority over Shift). The HUD shows fixed.
  • Fixed-angle ramps (H): a FixedAngle mode where B gives direction/length and the height follows SlopeAngle. Adjust in-game with Alt + radius/wheel.
  • New shapes: Line (two-click capsule), Rectangle (two corners), Polygon (click per vertex, double-click closes). All with undo and preview.
  • In-game SETTINGS tab (F5): everything editable live — cyclers, sliders, toggles. Saved on close.
  • Smooth modes: Full / Ridges only / Dips only (cycle in SETTINGS). Line + Smooth = smooth along a path.
  • Shore operation: flattens toward the water level + margin (beaches). Softness blends like Flatten.
  • Preview improvements: the footprint edge tints red on slopes; Flatten/Shore show a target-level ring.
  • Feedback effects: native dust + hit effect on every application (throttled while holding). Toggle General > PlayEffects.
  • EN/ES localization: General > Language switches the menu, HUD, messages and help. Key labels are rebuilt when the menu opens.
  • Radial menu (Q): choose the operation with the mouse; release confirms, Esc cancels. Suppresses the brush while open.
  • Named profiles: save/load/delete up to 12 full setups (SETTINGS → Profiles).
  • Live measurements: the HUD shows line/ramp length, rise and angle, rectangle W×D+area, polygon perimeter+area.
  • Path ramps (Path): a curve A→B→C… (double-press closes) → smooth Catmull-Rom. Preview corridor + trail, live length, undo.
  • Target height by text: UseFixedHeight/FixedHeight in config + a Fix/Release textbox in SETTINGS. G captures in the same state.
  • Terrain snapshots: saves edited tiles in a versioned binary (.dat in snapshots/, max 12). Import restores arrays with ownership and is undoable; missing tiles warn.
  • Wards + server caps: RespectWards blocks foreign wards; RadiusCap/DeltaCap are server-enforced caps visible in the HUD/preview.
  • Chunked application: configurable tiles/frame (TilesPerFrame, 1–32). Terrain appears progressively, one undo per stroke, auto-continues if you release the key.
  • Server authority: Server section (AllowTerrainEdits, AdminOnlyEdits). Server values win via config sync; clients cannot apply/undo/redo against them (HUD SERVER: BLOCKED). Servers without the mod ignore the section.

[0.1.0] - 2026-10-12

Added

  • Free brush: Flatten, Raise, Lower, Smooth, Ramp, Paint, Restore under the crosshair. Flatten follows the aimed height (Shift = level at your feet); Smooth averages neighbours.
  • TerrainForge Rod (Hammer clone): auto-given/equipped on join, give key F8.
  • Two-point ramp: click A, click B → a straight slope joins both heights (radius = ramp width). A wide, flat corridor with a soft edge (softness = lateral blend).
  • Configurable brush radius (60 m), shape (circle/square), paint cyclable in-game.
  • Live preview: a solid ring = the real area; faint guides in the operation color = full-strength zone, max radius, max aim distance. For Ramp: the real A–B corridor (both edges). Guides toggleable via Preview > ShowGuides. Top-left HUD (op, radius, shape, paint).
  • In-game keybind menu (F5, configurable) with its own skin + an in-game help tab.
  • Removal of the vanilla ±8 m clamp (UnlockDeltaLimit). Must also be on the server.
  • Optional vanilla tweaks: scaled hoe/cultivator radius, no build cost, edits in protected zones.
  • The crosshair works over water (heightmap raymarch without a collider).
  • Configurable required tool (Any, Pickaxe, TerrainForgeTool).

Notes

  • Edits persist via the TerrainComp ZDO and replicate through the server → required on both client and server.