Strictly server-side Valheim 1.0 mod - no client install ever. Active wards keep wild creatures (and raids) out of your base, and doors inside wards close themselves.
Rebuilt against Valheim 1.0.16 (client build 25527674 / dedicated server build 25527701, network
version 40, unchanged from 1.0.15) and re-verified: a static reference check against both the client
and dedicated-server assemblies, and a headless 1.0.16 dedicated-server boot. No source changes were
needed for compatibility — 1.0.16 removed only ObjectDB.GetAllFoodItems() and ButtonSfx.Start(),
and this mod calls neither.
Dropped stale references to a specific past Valheim patch (Steam build id, versioned-decompile
citation) from the csproj, README and OwnershipHold.cs; they now read version-agnostically
("Valheim 1.0", "vanilla ZDOMan.RPC_ZDOData") since the mod targets whatever the current 1.0.x
dedicated server is rather than one pinned patch.
0.3.0
Added
Configurable ward radius. Added WardRadius to [2 - Creature Blocking] with a 32m default matching vanilla guard stones (set to 0 to use each prefab's native radius). Governs creature barrier reach and door auto-close perimeter. RadiusBonus continues to work on top.
Continuous shield shimmer pulse option. Added AlwaysVisible (default false) and AlwaysVisibleInterval (default 1.3s) to [4 - Visible Shield]. Tightened the default pulse timer to 1.3s so when enabled, overlapping pulses create an undulating shimmer wave rather than spaced flickers.
Fixed
Independent reactive flash and periodic pulse throttles. Creature bounces flash immediately while automatically resetting the periodic shimmer timer, avoiding double-shimmer artifacts.
Shield scan gate. Wards now update visual shield presence whenever AlwaysVisible is active even if creature blocking and auto-door closing are both disabled.
0.2.1
Changed
Startup log line no longer pins a Valheim patch version. The Starting GetOffMyLawn v<version>... line
read "built for Valheim 1.0.7", which had gone stale now that the mod is confirmed working unchanged through
1.0.12 (see MIGRATE-1.0.md). It now reads "built for Valheim 1.0+".
0.2.0
Added
Visible shield. An active ward now flashes its own vanilla shield effect - the same shimmer the
game shows when a player is denied building in someone else's ward - every time it bounces or despawns
a creature. This reuses PrivateArea's existing networked FlashShield effect; nothing new is
installed on any client, and only players close enough to have that ward loaded ever see it. New
4 - Visible Shield config section: Enabled (default on) and MinInterval (default 1.5s, minimum
seconds between flashes on the same ward so a creature repeatedly charging one edge doesn't spam it).
0.1.0
Added
Creature blocking for active wards. Any wild creature found inside a switched-on player ward is
teleported back to just outside the ward's edge (Mode = Bounce, default) or removed (Mode = Despawn).
Tamed creatures, creatures being tamed, bosses (configurable), player summons and anything on the
configurable faction/prefab exclusion lists are left alone. Raid creatures are blocked by default
(IncludeEventCreatures). Optional escalation: a creature bounced DespawnAfterBounces times inside
BounceWindowSeconds is despawned.
Auto-closing doors. A door or gate standing inside an active ward that stays open longer than
Delay (default 10s) closes itself, unless a player is within PlayerClearance metres of it.
OnlyInsideWards = false extends it to every door near a player. Drawbridges and window shutters are
excluded by default (ExcludedDoorPrefabs); key doors and one-way dungeon doors are never touched.
Live config reload. Edits to the cfg on a running server are picked up within 5 seconds.
How it works (read this before reporting "it moved the creature back inside")
Vanilla wards are pure client logic; a dedicated server has no ward, door or creature instances at all,
only ZDO data owned by clients. This mod scans the ZDOs around every connected player from the server's
own sector table, and corrects a creature or door by briefly taking ownership of its ZDO, jumping the
ZDO's data revision past everything the owning client still has in flight, writing the correction, and
handing ownership back a moment later so the client's own ZSyncTransform snaps the object to the new
position. The OwnershipHandBackDelay (default 0.75s) is the window in which the corrected creature is
frozen and cannot be hit.
Every fact this relies on was read from the Valheim 1.0.7 dedicated-server decompile (ZDOMan.RPC_ZDOData,
ZDOMan.ReleaseNearbyZDOS, ZSyncTransform.OwnerSync/ClientSync, Door.UpdateState, PrivateArea.IsInside).
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.