Blasted Swimming Tarred Bug Fix
Fixes stale swimming and tar state, LiquidVolume lifetime, ZNetScene cleanup, Character and StatusEffect teardown, EnemyHud cleanup, and optional MagicPlugin projectile, teleport, registry, and cosmet
Screenshots 1 screenshots
About this mod Author’s original text
BlastedSwimmingTarredBugFix
Defensive runtime fixes for stale liquid state, scene and Character lifecycle cleanup, optional MagicPlugin interoperability, and Korean names in the F2 player list.
The current source targets Valheim 1.0.12. Build with the original 1.0.12 game
assemblies; it does not include an older-game compatibility path.
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.
- Unconditional disposal of unallocated LiquidVolume raycast arrays.
- 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.
- Korean character names rendering as missing glyphs in the F2 player list when
its assigned TMP font does not include Hangul.
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.
- Guards LiquidVolume raycast array disposal with IsCreated. Valheim 1.0.7
and 1.0.12 already use Allocator.Persistent, so their allocation code is left intact.
- 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.
Valheim 1.0.7 and 1.0.12 effects with an explicit gamepad recipient keep their original
network objects so the recipient metadata is preserved. Piercing projectiles
that only stop on terrain also retain their original impact effect path, since
intermediate hits do not send the completion RPC required for cosmetic replay.
The current contract checks were also verified against MagicPlugin 2.2.0.
MagicPlugin is optional and is not a package dependency.
F2 playe
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.
Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file. In multiplayer, the host and every client need the same mods installed.
Install these first, or the mod will not work: