Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
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
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2360README
⚓ Njord
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.
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.
| 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. |
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.
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. |
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.
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.
⚠️
cargois the one refit that can destroy items — an item in a slot that stops existing is gone. It is0in 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.
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 |
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.
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.
| 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.
| 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. |
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 |
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.