Wubarrk-Njord icon

Njord

A mythic overhaul of Valheim’s ship handling, steering and sea‑faring — now with a Harbourmaster who gives every new Viking their first hull and refits the rest. HUD and OdinShipPlus support.

Last updated 11 hours ago
Total downloads 4762
Total rating 4 
Categories Vehicles Transportation Mods Server-side Client-side AI Generated Tweaks Utility Deep North Update
Dependency string Wubarrk-Njord-2.0.10
Dependants 4 other packages depend on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2360 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.2360

README

⚓ Njord

NJORD VERSION SERVER AND CLIENTS

Njord, god of the sea, has watched you put a Karve into the same rock nine times. He does not love your steering. He tolerates it. So he sent a shipwright to the shore, gave your rudder some teeth, and told the wind it may — if you ask nicely — blow the way you are going.

Take the helm. She answers now.

Njord rebuilds how Valheim's ships handle: a rudder that bites, sails that pull like they mean it, a wind you can fight or tame, and a top speed of its own for every hull — OdinShip and OdinShipPlus hulls included. Every number is the server's, synced to every player.

Then it gives the sea a harbour. A Harbourmaster on your shore sells hulls for timber, hands every new Viking one free Karve, and refits the rest up to four stars. Name your ships, watch them on a clean HUD, leave a runic wake behind you — and, if you want, let a Discord bot read your fleet's records.


NEW IN 2.0.8

Post a Harbourmaster at every base and outpost — and your boat launches at the one you are talking to.

You It
Post another Harbourmaster with njord.harbour.place the others stay where they are
Buy a hull or claim your first one she launches in that Harbourmaster's slipway, not at another harbour thousands of metres away
njord.harbour.find lists every Harbourmaster in the world and how far away each one is
njord.harbour.remove dismisses the one near you and forgets her site; all dismisses every one
njord.harbour.forget forgets one site — near you, or at coordinates — without touching the other ports

🗺️ Every harbour is remembered across server restarts, and worlds with one harbour carry straight over.


BEFORE YOU INSTALL

If… Then…
🤝 you play on a server the server and every player run Njord, and update together. The server's settings are locked and synced to everyone.
🏝️ your world is established and everyone spawns at their own base the Harbourmaster may never place herself — nobody visits the world spawn. An admin posts her with njord.harbour.place, standing where the players are.
🐢 your crews sail Longships or Drakkars each hull has a top speed (MaxSpeed_Longship, MaxSpeed_Drakkar and the rest). Raise them in the config if you don't want a ceiling.
📦 you turn on cargo refits lowering them later, or removing Njord, destroys whatever sits in the lost rows. They are off out of the box.
🛡️ you ever remove Njord run njord.harbour.remove all first. Otherwise the Harbourmaster stays in your world save as an object nothing can build — harmless, she just fails to appear.

I

Your longship finally answers the helm.

🪝 Steering a steering multiplier makes the rudder bite; a steering gate stops the jitter as you take the helm
💨 Acceleration a smoother, more realistic sailing curve out of the box; forward and reverse force are yours to set
⛵ Sails Base, Half and Full sail each pull with their own force
↩️ Reverse kick a quick burst astern to back out of a rocky harbour
🏁 A top speed per hull Raft, Karve, Longship, Drakkar, and every OdinShip and OdinShipPlus hull
🤝 One helmsman per ship the server tracks who holds each helm — two crewmates never both claim her, and the helm passes cleanly between players
🧮 Typo-proof every value is clamped, so a bad number can never hand the physics NaN or Infinity
📖 Read the saga — handing over the helm, and how the caps work

The helm changes hands the way vanilla hands over a hull. When the server names a new helmsman, the machine that was simulating the ship passes it to them on the spot, in one exchange. No tug-of-war between two machines, so no jitter, no hull snapping under the crew, no deck throws, and no helm that steers but will not take forward or back. A helmsman whose connection drops — logout, timeout or crash — has their helm released for everyone, so a ship is never bound to someone who can no longer let go.

She keeps her way. Step back from the rudder and your ship sails on, as in vanilla, until you actually leave the boat.

Each ship knows who is aboard, exactly — a crew standing on the seam between two deck volumes no longer piles up phantom passengers that leave a hull unresponsive.

Every hull has its own cap, matched to the prefab the game really uses. OdinShip and OdinShipPlus hulls are found by inspection, not from a fixed list, so new ones from those mods are picked up with no Njord update, and each gets a MaxSpeed_ setting of its own when that mod is installed. Set a cap above what a hull can physically reach and the limiter is, in effect, off.


II

Sail the wind Valheim gives you — or the one you wish it gave.

🌬️ Full wind, always on out of the box: a perfect tailwind whatever the sky says. Turn it off to sail the real wind.
🧭 An honest wind needle grab the rudder and the HUD shows the true wind at once — no slow swing round from zero
🌊 Blended with the game's Njord's wind physics blend with Valheim's natural winds
⏳ A grace period when the wind turns against you, you feel the dead zone first — 2.5 s by default — before any assist steps in
🧪 Experimental assists Wind_NoDeadZone nudges you out of the dead zone; Wind_BlendToFull blends a crosswind toward a tailwind. Both opt-in.

III

A shipwright on your shore, selling hulls for timber.

You It
Find her on the shoreline nearest the world spawn, the first time anyone loads that zone — or wherever an admin posts her
Use on her opens her shipyard: Hulls · Refit · Your First Hull
Claim your first hull a free Karve, once per player for as long as the world exists, already named <your name>'s Pride
Buy a hull paid in materials, a list per hull set by the server — no coins
Post her on a dock she stands on the pier, jetty or deck you built, not on the seabed beneath it
📖 Read the saga — where she stands, the free hull, and why no other trader is touched

Where she appears. She takes her post the first time anyone loads the zone nearest the world spawn, and keeps it across restarts. A dedicated server loads a zone only while somebody is standing in it, so on a world where everyone spawns straight into their own base she may never appear by herself — and the log says so plainly rather than going quiet. New worlds place her on their own, because the first thing anyone does is stand at the spawn.

Placing her is done from your own game. The shoreline is found by raycast and she is seated on settled ground, and a dedicated server has no colliders or heightmaps outside the world origin: it decides, it cannot measure. So your machine sites her, and the server checks you against its adminlist.txt and records where she went. The server's half of an answer prints in the server log; what your own machine can see prints in your console. njord.harbour.placeat needs that zone loaded on your machine — if in doubt, stand there and use njord.harbour.place.

She stands on what you built. Njord seats her once, at the moment she is posted, on every solid surface at that spot — terrain, your pieces, the world's own structures — but never on a boat moored under her, and never on a roof over her head, so in a boathouse she stands on the deck. For half a minute afterwards Njord watches that she has not sunk into ground still settling, and lifts her if she has.

When she never appeared, njord.harbour.find reports the world spawn, whether that zone is loaded, and whether the shoreline search finds an acceptable site — which tells "the search never ran" from "the search ran and rejected everything". Those look identical in a log and have completely different fixes.

The free hull is the one thing the server keeps. Buying follows vanilla's own trust model — you pay out of your own inventory — but a grant that can be repeated is not a grant. Who has had theirs is decided on the server, against a ledger keyed by your persistent player ID, and the row is written before the boat is handed over: a crash mid-grant costs a boat rather than handing out a second one. Rerolling a character does not get you another. A gift is not a christening either — you did not name her, so she does not count toward your christenings.

Her own shop, not Haldor's. Vanilla's shop can only count coins, and Njord's prices are lists of materials, so Njord draws its own — no other trader mod on your server is patched or touched. Hulls carry the names the game gives them, translated, modded hulls included, and the window wears the same gilt frame as VikingOS's. Costs are written as prefab names (FineWood:60,DeerHide:20,BronzeNails:80), the same string in every language; a cost naming an item this world does not have takes that hull out of the shop, with the reason in the log, rather than selling it cheap.


IV

Raise a hull from one star to four.

You It
Stand aboard at the harbour, or moor alongside the Refit tab offers her next star
Pay 2×, 3×, then 4× her price she climbs to ⭐2, ⭐3, ⭐4 — anyone aboard may pay
Read the panel her top speed in m/s, before and after — 16.8 → 18.8 m/s, never a bare multiplier
Take the helm her stars show on the helm hover and in the HUD
📖 Read the saga — what a star is worth, and the one refit that can cost you

What a star is worth is the server's business. Upgrade_Tier2, Upgrade_Tier3 and Upgrade_Tier4 are lines of speed, accel, health and cargo values against the hull's base figures, never compounding — so a ⭐4 hull is exactly base × her own tier's numbers, however she got there.

speed raises the cap; accel raises the boat. If your MaxSpeed_* values sit above what a hull can physically reach, the cap is not what holds her back and speed does nothing at all — accel is the only key that makes her faster there, and it still helps on a default server by reaching the cap sooner. Its return is sub-linear, because drag rises with speed, so the defaults are a starting point to measure, not a promise. That is why the panel quotes m/s you can check against your own HUD, and tells you outright when a hull has no cap at all.

A refit neither heals nor hurts her. Raising her maximum health scales what she has now by the same factor, so a battered boat leaves the yard exactly as battered as she arrived, with a bigger hull around it.

⚠️ cargo is the one refit that can destroy items — an item in a slot that stops existing is gone. It is 0 in every tier out of the box, and Njord never shrinks a hold within a session; lowering it later, or removing Njord, takes those rows away with whatever is in them.


V

Name her, read her, and leave runes in her wake.

🪶 Christen your ship Alt + Use at the helm — up to 24 characters, stored on the ship herself, seen by every player
🏷️ Her name, everywhere on the helm hover, the crosshair label and the top of the HUD
🧭 The Njord HUD steering, speed, waterline, hull integrity, wind blend, readiness, and her name and hull type — F7 hides it, drag moves it
✨ Runic wake glowing runes behind your ship, in your colour, growing with speed and sail — seen by every player, at no cost to the server

VI

Your fleet's records, for a Discord bot, a dashboard or a status page. Off until the server turns it on.

⚓ Fleet census how many hulls exist in the world, by type
🏁 Speed records the fastest each hull type has gone — who was at the helm, when, the cap in force and her refit tier
🧭 Sailor stats distance sailed, time at the helm, hulls helmed, wrecks, christenings, and each sailor's best on every hull
🙈 Fleet without names Barrkbot_Sailors_Enable off publishes the fleet and leaves the sailors out
📖 Read the saga — the files, and why they never lie with a zero

With Barrkbot_Enable on, the server writes barrkbot_boats.json to BepInEx/config/Njord/: world_boats, the census by prefab, and speed_records, one per hull type. Players' games sample the speed of the ship they steer and report their bests; only the server writes. Records survive restarts in njord_speed_records.tsv beside the export, and every file is written whole, so a reader never catches one half-written.

Absence is honest. A hull missing from the census means none exist; missing from the records, nobody has sailed one; cap_in_effect is null when no cap applied; world_boats is null until the first count finishes. None is ever reported as a zero. Each record also carries samples_observed and samples_recorded — the second is the sample size behind top_speed, after Barrkbot_MinSpeed has discarded the drifting.

Where a cap is in force, top_speed settles on it — it measures the cap, not the hull — so the lasting content of a record is the helmsman and recorded_at. A null cap on a capped server is an admin signal: a hull Njord has no cap for, such as a boat from another mod. A reader checking top_speed <= cap_in_effect should skip nulls rather than fail them.

Sailor stats are split by subject, never by rows: barrkbot_sailors.json (distance, helm time, hulls helmed, last seen), barrkbot_wrecks.json (wrecks, christenings and the world totals) and barrkbot_hull_bests.json (one flat row per sailor × hull). Every file holds every sailor, keyed by persistent player ID with the name beside it, so any ranking sits on a complete base. A sailor's best is personal_best_speed; top_speed only ever means the world record for a hull.

A wreck is a hull destroyed by damage — not one you dismantled, not one that rotted at her mooring — and a hull lost with nobody at the helm is unattributed, not blamed on whoever last touched her. Distance is counted once, on the machine that owns the hull, so sailing in company never banks the same miles twice.

Big rosters roll over. Past Barrkbot_RowBudget characters of rows, a collection continues into _2, _3 and so on, each part carrying part, part_of, and a _leaders block — the top three per field, worked out across the whole collection before the split, so every part names the true leader. Leftover parts are swept when the roster shrinks. A growing roster is the writer's job, never a reason to ship a new build.

Not included: a per-player leaderboard across hulls. "Who holds the Longship record" has an answer; "who is the fastest sailor on the server" does not.


THE TOOLBOX

First ten minutes: install with a mod manager, or unzip into BepInEx/plugins → launch once → walk to the shore by the world spawn → Use on the Harbourmaster and claim your Karve → take the helm → Alt + Use to name her → F7 if you want the HUD out of the way.

Key Command (F5 console, admins)
Use on the Harbourmaster her shipyard njord.harbour.place post a Harbourmaster where you stand
Alt + Use at the helm christen your ship njord.harbour.placeat <x> <y> <z> the same, at world coordinates
F7 HUD on / off njord.harbour.find every Harbourmaster and her distance — or why there is none
Drag the HUD move it njord.harbour.remove dismiss the one near you; all for every one
Esc close the shipyard njord.harbour.forget forget a site; all or <x> <y> <z>
njord.firstboat.revoke <playerID> give one player their free hull back
njord.whoami what Njord thinks your identity and admin status are, and why
🛠️ Post the Harbourmaster on an established world

Stand on the shore where your players actually gather, facing the water, and type njord.harbour.place in your own game's console (F5) — not the server console, which has no ground to measure. The slipway is worked out from the water in front of you. The server checks its adminlist.txt, records her, and prints its half of the answer in the server log. If it says you are not an admin, njord.whoami shows why your machine thinks so.

🛠️ Set hull prices

In 12 - Shipwright, each vanilla hull has a Vendor_Cost_ line (Raft, Karve, Longship, Drakkar) and Vendor_Cost_Default covers every other hull, modded ones included. Write PREFAB:AMOUNT, comma separated — FineWood:60,DeerHide:20,BronzeNails:80. Vendor_HullList picks which hulls she sells, in order; empty sells every hull in the world.

🧹 Remove Njord cleanly

Run njord.harbour.remove all first, so no Harbourmaster is left in the save. Everything else Njord stores — ship names, refit stars — lives on the boats themselves and is simply ignored once the mod is gone. Cargo rows from refits go with it, and so does whatever is in them.


MULTIPLAYER

Yours alone Decided by the server Needs Njord on every machine
the HUD and where it sits · debug logs every handling, wind, speed, wake, shop and refit setting (locked by default) · who has had a free hull · admin commands · the ship's-log files the helm hand-over · the shipyard · ship names and stars

⚠️ Update the server and its players together. Njord turns away an older client only when its settings or its network messages change shape, so most updates lock nobody out — but every machine should run Njord. Works in single player too, and is safe to add mid-playthrough.


COMPATIBILITY

Mod
OdinShip Full support: its hulls are found automatically, get Njord's physics, and each gets a speed cap of its own.
OdinShipPlus Full support: CargoCaravel, Skuldelev, GoblinShip and the rest are mapped into Njord's speed caps.
Sailing (Smoothbrain) Compatible — Njord respects its skill progression.
Other trader mods Untouched. The shipyard is Njord's own panel, not a patch on Haldor's.
VikingOS Not needed. The shipyard shares its gilt frame, so the two look like one family.
Modded water shaders The runic wake may look very different. On some OdinShip hulls its emitters can sit slightly off.

SETTINGS

BepInEx/config/wubarrk.njord.cfg, or a configuration manager in game. Every value is clamped to a safe range.

🔒 Server-synced — set on the server, locked for everyone
Section Setting What it does
1 – General Lock Configuration only admins change synced settings
2 – Wind System Wind_SystemEnable · Wind_AlwaysFull · Wind_NoDeadZone · Wind_BlendToFull · Wind_BlendRate · Wind_GracePeriodDelay the wind physics, full tailwind, the two experimental assists, how fast the wind turns and the grace period
3 – Steering SteeringMultiplier how hard the rudder bites
4 – Acceleration AccelerationMultiplier · BaseForwardForce · BaseReverseForce how she gets under way, ahead and astern
5 – Sails SailForwardForce · HalfSailForce · FullSailForce · ReverseKick each sail setting's pull, and the burst astern
6 – Speed Limits MaxSpeed_Raft · MaxSpeed_Karve · MaxSpeed_Longship · MaxSpeed_Drakkar top speed per vanilla hull, in m/s
7 – OdinShip Speed Limits MaxSpeed_MercantShip · MaxSpeed_CargoShip · MaxSpeed_BigCargoShip · MaxSpeed_RowingCanoe · MaxSpeed_DoubleRowingCanoe · MaxSpeed_LittleBoat · MaxSpeed_WarShip appear when OdinShip or OdinShipPlus is installed
8 – OdinShipPlus Speed Limits MaxSpeed_CargoCaravel · MaxSpeed_HugeCargoShip · MaxSpeed_CargoAnimalShip · MaxSpeed_HerculeShip · MaxSpeed_Skuldelev · MaxSpeed_TaurusWarShip · MaxSpeed_FastShipSkuldelev · MaxSpeed_GoblinShip appear when OdinShipPlus is installed
9 – VFX VFX_Enable · VFX_Color the runic wake and its colour
11 – BarrkBOT Export Barrkbot_Enable · Barrkbot_WriteInterval · Barrkbot_CensusInterval · Barrkbot_MinSpeed · Barrkbot_Sailors_Enable · Barrkbot_RowBudget the ship's log: on/off (off), how often it writes (60 s) and counts (900 s), the speed floor (1 m/s), sailor files, and the rollover size
12 – Shipwright Vendor_Enable · Vendor_AutoPlace · Vendor_Name · Vendor_HullList · Vendor_FirstBoat_Enable · Vendor_FirstBoat_Hull · Vendor_Cost_Default · Vendor_Cost_Raft · Vendor_Cost_Karve · Vendor_Cost_Longship · Vendor_Cost_Drakkar the Harbourmaster, where she places herself, her name, what she sells, the free hull and every price
13 – Hull Upgrades Upgrade_Enable · Upgrade_MaxTier · Upgrade_Tier2 · Upgrade_Tier3 · Upgrade_Tier4 · Upgrade_CostMultiplier refits on/off, the highest star, what each star gives, and its price multiple (2,3,4)
🖥️ Local to your game — yours alone
Section Settings
HUD HudEnabled · HudPositionX · HudPositionY — F7 and dragging set these for you
10 – Debug Debug_Enable · Debug_PhysicsWind · Debug_AuthControl · Debug_Shipwright

CREDITS

Needs: BepInExPack Valheim 5.4.2360 — the mod loader, with HarmonyX. ServerSync is compiled into Njord; nothing else to download.

🔗 Also by me: VikingOS, whose gilt frame the shipyard wears, and Mists of Avalor.

Made by Wubarrk — ravenirongames.com. Support Wubarrk on Patreon (WubarrkDev). Bug reports welcome on Discord. License: MIT — use, modify and redistribute freely, including commercially; just keep the copyright notice. Full text in LICENSE.md.