Valheim
Install

Details

Last Updated
First Uploaded
Downloads
779
Likes
3
Size
139KB
Dependency string
sighsorry-Blasted_Swimming_Tarred_Bug_Fix-1.1.1
Dependants
ADDatHost Valheim hosting
30% off!

BlastedSwimmingTarredBugFix


Defensive runtime fixes for stale liquid state, tar-pit raycast jobs, and scene object cleanup.

What It Fixes

  • Random swimming while nowhere near water.
  • Random tarred state after leaving a Plains tar pit.
  • Portal, dungeon, or scene transitions leaving old liquid state behind.
  • Carts or floating objects keeping water/tar state after a missed trigger exit.
  • Long-lived LiquidVolume raycast arrays using a short-lived allocator.
  • Scene cleanup failing on missing, destroyed, or mismatched ZNetView data.

How It Works

Valheim liquid volumes keep a list of objects currently inside water or tar. If OnTriggerExit is missed, an old WaterVolume or LiquidSurface can keep sending positive SetLiquidLevel(...) updates to an object that already left.

This mod keeps the fix narrow:

  • Reject stale positive liquid updates when the source no longer overlaps the target.
  • Remove stale entries from WaterVolume and LiquidSurface before floater updates.
  • Clamp water/tar counters so missed exits cannot drive them below zero.
  • Clear purged stale liquid state only when no current liquid trigger overlaps the target.
  • Clear player liquid state after a teleport successfully starts; destination triggers restore it if the player arrives in liquid.
  • Keep LiquidVolume raycast arrays valid for their full lifetime and dispose them safely.
  • Clean up stale scene entries without dereferencing missing ZDO or ZNetView data.

Compatibility

The integrated lifetime patch is skipped when MyPitsDontLeak is loaded. The integrated scene cleanup patch is skipped when Scenic is loaded. Other protections remain active.

Release Packaging

Update only LiquidStuckFixPlugin.ModVersion, then run:

dotnet build -c Release

The Release build syncs that version into Thunderstore/manifest.json, validates the manifest, merges ServerSync, and creates Thunderstore/BlastedSwimmingTarredBugFix-{version}.zip. Include the synced manifest change in the release commit.

Configuration

Only four options are exposed:

[General]
LockConfiguration = true
Enabled = true
BoundsPadding = 0.75

[Debug]
DebugLogging = false

Enabled turns all runtime protection on or off.

LockConfiguration lets the server control synced options.

BoundsPadding adds a small margin to liquid/target bounds checks. Keep the default unless legitimate shallow water or tar is rejected.

DebugLogging logs rejected liquid updates and stale purges. Leave it off during normal play.

Credits

Github

https://github.com/sighsorry1029/BlastedSwimmingTarredBugFix

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.