Wubarrk-GetOffMyLawn icon

GetOffMyLawn

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.

CHANGELOG

Changelog

0.3.1

Changed

  • 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).