SafeHarbor
Buildable docks that ease your ship into a berth, dry-dock it and auto-repair it - docking persists across save and reload.Safe Harbor
Buildable ship docks that do the seamanship for you. Steer any longship, karve, or raft into an open berth, press a key at the rudder, and the ship eases into a cradle, lifts out of the water, and is dry-docked (physics frozen) — with auto-repair each time. Press the key again to slide it back out to the waterline. Docking persists across save and reload.
A Valheim BepInEx 5 plugin built on Jotunn.
Features
- Two buildable dock pieces (Hammer > Misc):
- Safe Harbor Dock (large, ships) — 40 Wood / 20 FineWood / 10 Iron.
- Safe Harbor Skiff Dock (small, karves/rafts) — 20 Wood / 8 FineWood / 3 Iron.
- Docked ships are lifted and frozen; berth occupancy is stored so docking survives reloads.
- Status lamps per berth: green = open, red = docked.
- In-game tuner (Alt+L) plus a web tuner (
http://127.0.0.1:8781/) to position lamps/pieces live. - Optional PlanBuild/Infinity Hammer blueprint look-and-feel for custom docks.
- Indestructible by default; auto-repair on dock.
Requirements
- BepInEx 5 (
denikson-BepInExPack_Valheim) - Jotunn 2.30.x (
ValheimModding-Jotunn)
Installation
- Install through your mod manager (recommended).
- Manual: drop
SafeHarbor.dllintoBepInEx\plugins\.
How to use
- Restart the game after installing (the build pieces are registered at startup).
- Build a Safe Harbor Dock (large) or Skiff Dock (small) at the waterline near your base.
- Steer a ship toward a free berth. When within 50 m of a dock with a free berth, a prompt appears: Shift+D to choose dock.
- With the prompt visible, press Shift+D to open the berth picker (click or press 1-9). The ship eases into the berth, lifts ~1.8 m, and freezes — and is auto-repaired.
- To leave, sit at the rudder and press Shift+D again — the ship slides clear and pushes off.
Optional extras
- Status lamps show berth open/docked at a glance (config
StatusLights). - Alt+L opens the "Safe Harbor Tuner" to move/rescale lamps and pick a deck material live; "Save defaults" writes it back to config.
- Blueprint docks: with
UseBlueprinton, asafeDock.blueprint(large) orsmallDock.blueprint(skiff) auto-found in the PlanBuild blueprint folder is used instead of the procedural model; per-piece tuning is saved tosafeharbor_dock.json/safeharbor_skiff.json.
Configuration
Generated on first launch at BepInEx\config\com.safeharbor.safeharbor.cfg (excerpts; keys marked restart need a game restart):
| Section | Key | Default | Notes |
|---|---|---|---|
| General | Enabled |
true |
Master toggle. |
| General | AddBuildPiece |
true |
Add dock pieces to Hammer. Restart. |
| General | StatusLights |
true |
Per-berth status lamps. Restart. |
| General | LampScale / LampOffsetXYZ |
1 / 0,0.5,0 |
Lamp tuning. Restart. |
| Controls | GuiKey |
LeftAlt+L |
Tuner GUI. |
| Controls | DockKey |
LeftShift+D |
Dock/undock key. |
| Blueprint | UseBlueprint |
true |
Use PlanBuild blueprints when found. |
| Blueprint | WebTuner / WebPort |
true / 8781 |
Web tuner port. |
| Docking | DockRange |
50 |
Range the dock prompt appears at (m). |
| Docking | DockDuration |
2.5 |
Seconds to ease in and lift. |
| Docking | LiftHeight |
1.8 |
Height raised when docked (m). |
| Docking | UndockDistance |
20 |
Release distance forward (m). |
| Docking | UndockSpeed |
4 |
Push on release (m/s). |
| Dock | Berths |
1 |
Berths per large dock (1-6). Restart. |
| Dock | DeckLength |
18 |
Large dock platform length. Restart. |
| Dock | AddPilings |
true |
Support pilings. Restart. |
| Dock | Health |
5000 |
Hit points (ignored when indestructible). |
| Dock | Indestructible |
true |
Immune to damage. |
| SmallDock | Enabled |
true |
Add the skiff dock. Restart. |
Changelog
See CHANGELOG.md.


