Valheim
You are viewing a potentially older version of this package. View Latest Version
Install with App

Details

Date Uploaded
last month
Downloads
7K
Size
161KB
ADDatHost Valheim hosting
30% off

BlastedSwimmingTarredBugFix


Defensive runtime fixes for stale liquid state, scene and Character lifecycle cleanup, and optional MagicPlugin interoperability.

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.
  • Malformed StatusEffect start effects interrupting Character destruction.
  • Character registry and EnemyHud entries surviving incomplete destruction.
  • MagicPlugin projectile patches repeatedly registering configuration handlers.
  • MagicPlugin summon teleport and Character registry patches reading destroyed or incomplete objects.
  • MagicPlugin Flame, Thunder, and Arctic staff launch cosmetics, Thunder/Arctic projectile impacts, and shared iceblock destruction creating short-lived peer-owned ZDOs.
  • MagicPlugin Ice Scepter Nova rings leaving cosmetic network objects without a destruction path.

How It Works

Liquid and scene protection

  • Rejects stale positive liquid updates when the source no longer overlaps the target.
  • Removes stale entries from WaterVolume and LiquidSurface before floater updates.
  • Clamps water/tar counters so missed exits cannot drive them below zero.
  • Clears purged state only when no current liquid trigger overlaps the target.
  • Clears player liquid state after a teleport successfully starts.
  • Keeps LiquidVolume raycast arrays valid for their full lifetime.
  • Cleans invalid or mismatched ZNetScene entries without dereferencing destroyed views.

Character lifecycle protection

  • Safely tears down StatusEffect start effects with missing or invalid ZNetView components.
  • Repairs Character registry and EnemyHud bookkeeping when Character.OnDestroy is incomplete or throws.
  • Prunes tracked creature-removal state after scene teardown.

Optional MagicPlugin interoperability

When MagicPlugin is installed, each compatible fix is enabled independently only after its expected types, methods, fields, Harmony patch, and cosmetic prefab graph are validated:

  • Replaces the affected Attack.FireProjectileBurst prefix with a guarded implementation.
  • Moves valid followed summons only after a player teleport succeeds.
  • Removes destroyed Characters before MagicPlugin reads the global registry.
  • On MagicPlugin 2.1.9 and later, probes each supported prefab graph once per scene and enables only the cosmetic paths whose full suppression/replay structure still matches.
  • Keeps gameplay projectiles, Nova AOE, and Arctic iceblocks networked while replaying compatible Flame/Thunder/Arctic launch and impact cosmetics locally.
  • Tags existing Staff projectile ZDOs so Flame and Lightning Wands that share those projectile prefabs do not receive Staff-only launch effects.
  • Replays Ice Scepter Nova rings locally from the networked Nova AOE and gives each ring the same explicit lifetime as that AOE.

MagicPlugin is optional and is not a Thunderstore package dependency.

Automatic Compatibility

  • MyPitsDontLeak disables the integrated LiquidVolume lifetime module.
  • Scenic disables the integrated scene cleanup module.
  • MagicPlugin support stays inactive when the expected plugin or patch structure is absent.
  • MagicPlugin versions older than 2.1.9, and individual future-version cosmetic graphs that fail validation, keep their original cosmetic ZDO behavior.

Configuration

[Synchronization]
LockConfiguration = true

[Liquid]
Enabled = true
BoundsPadding = 0.75

Only the liquid settings are synchronized. Character lifecycle and compatibility modules are automatic and have no configuration switches.

The 1.2.0 configuration layout is not migrated from older layouts. Delete BepInEx/config/sighsorry.blastedswimmingtarredbugfix.cfg once if you want to remove obsolete entries and regenerate a clean file.

Building

The plugin targets netstandard2.1 and uses C# 12. Build against the Valheim managed assemblies and BepInEx core files using VALHEIM_MANAGED and BEPINEX_CORE; the project also detects the default Windows Steam paths.

For development on Windows, run dotnet build -c Debug -p:DeployToGame=true. After ServerSync merging succeeds, the final DLL is copied to the default Steam Valheim BepInEx/plugins folder. Use DeployToGame=false to skip copying, or set ValheimPluginDirectory to override the destination.

For an explicitly requested release, dotnet build -c Release merges ServerSync into the plugin and creates Thunderstore/BlastedSwimmingTarredBugFix-<version>.zip. The packaged manifest version comes from the built assembly and must have a matching row in Thunderstore/CHANGELOG.md. Version synchronization only updates the staging copy under obj/; it does not rewrite Thunderstore/manifest.json. If Mod Release Manager watches that folder with automatic publishing enabled, creating the Release ZIP can upload it to the project's selected sites.

Credits

GitHub

https://github.com/sighsorry1029/BlastedSwimmingTarredBugFix

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