Joeys Wayfinder
Client-side Valheim map overhaul with persistent discovery pins, searchable management, custom icons, compass tracking, portals, vehicles, gravestones, structures, spawners, traders and runestones.Changelog
1.1.1
- Fixed a reproducible periodic frametime hitch reported on Valheim 1.0.12.
- Removed
object[] __argscapture from high-frequency Harmony input prefixes, eliminating avoidable allocations on every Valheim input poll while preserving Pin Manager text-entry suppression. - Made the open Pin Manager modal for gameplay input, preventing every editable field—search, rename, icon/type search, and boss naming—from leaking movement, map, hotbar, or action controls through Unity's
Update/OnGUIfocus timing. Input capture covers bothPlayer.TakeInputand Valheim 1.0.12's separatePlayerController.TakeInputpath, and pauses the map update while the manager is open. - Stopped closed-map vanilla UI discovery from retrying global Unity UI searches every 0.75 seconds. UI probing now runs only while the large map is open, has a bounded retry count, and no longer performs the broad text-object fallback scan.
- Replaced recurring scene-wide boat/cart searches with lifecycle-fed live vehicle registries backed by Valheim's own current instance collections during world bootstrap.
- Replaced recurring scene-wide portal searches with a lifecycle-fed portal registry and a one-time world-session seed.
- Removed redundant loaded-location resynchronization from each structure, spawner, runestone, Vegvisir, and trader registry snapshot.
- Global
Enabled=falsenow suspends Wayfinder's Update, LateUpdate, OnGUI, discovery scheduling, dynamic-map refresh, and input/UI work, and restores detached vanilla map state once. - No persistence schema, portal identity, networking, server requirement, or Valheim world-save behavior changed.
1.1.0
- Updated for Valheim 1.0.7 and the Valheim 1.0-era Minimap API. Right-click handling now discovers either the legacy
OnMapRightClickhook or the 1.0RemovePinUnderPointerhook instead of failing the entire Harmony patch set when one name is absent. - Replaced position-only portal identity with validated
ZNetView/ZDOidentity plus a precise position alias used for migration and safe rebuild reconciliation. - Portal positions now come from the valid ZDO and must agree with the loaded
TeleportWorldscene object before a record can be created or updated. - Rejected inactive, disabled, identity-less, invalid, non-finite, out-of-bounds, unsettled, and dungeon-transition portal candidates.
- Repeated scans, relogs, tag changes, and connection-state changes update the same portal record. Stale identity aliases are replaced instead of accumulating.
- Portal destruction now removes by stable ZDO identity with a conservative position fallback.
- Added schema 11 portal verification migration. Legacy position-only portal records stay in the external
.wfdfile but remain hidden until a valid physical portal re-confirms them. Re-confirmation preserves names, favorites, tracking, and icon overrides. - Added conservative duplicate consolidation when multiple records can be proven to refer to the same live portal.
- Expanded opt-in portal debug logs with prefab, ZDOID, tag, ZDO position, discovery source, record id, action, and rejection reason. Debug logging remains disabled by default.
- Updated the package dependency to BepInExPack Valheim 5.4.2350.
- Confirmed the implementation remains local-only: no ServerSync, custom RPC, custom network prefab, world-save field, or server enforcement was added.
1.0.1
- Fixed confirmed trader markers using the generated camp Location origin instead of the actual/native trader marker position.
- Native Valheim trader pins are now authoritative for confirmed Haldor, Hildir, and Bog Witch marker positions.
- Existing 1.0.0 confirmed trader records self-heal to the native trader pin position without deleting/recreating the record, preserving favorites, tracking, names, icon overrides, and other user-owned metadata.
- Loaded Trader objects now use the trader transform as a fallback only; generated camp centers remain candidate-only positions.
- Updated release documentation to explain the 1.0.1 trader-position correction and in-place migration behavior.
1.0.0
- Release packaging corrected to place
JoeyBadManners.Wayfinder.dllat the package ZIP root.
Initial public release of Joey's Wayfinder.
Map and Pin Manager
- Custom Wayfinder map controls and searchable Pin Manager.
- Manual pin creation, map placement, rename, favorite, delete, filtering, and category visibility.
- Full searchable icon picker for new and existing pins.
- Persistent cosmetic icon overrides with a real Default reset that preserves the original semantic/base icon across relogs.
- Vanilla persistent-pin selector/hints can be replaced while preserving normal map pings and the vanilla "Visible to other players" control.
Discovery and persistence
- Per-world
.wfdpersistence with backup recovery, integrity repair, duplicate cleanup, delayed write batching, and cross-world isolation. - Interaction-based resource remembrance plus optional local area scanning.
- Same-resource connected clustering and cluster counts.
- Generated structure/POI/dungeon discovery.
- Physical spawner discovery with sighting suppression.
- Optional enemy-sighting hotspots with enemy-specific trophy art when possible.
- Runestone/Vegvisir/boss-guidance and trader handling with special-case cleanup.
Travel and dynamic objects
- Portal remembrance, tag/name synchronization, destruction cleanup, and deliberate deletion protection.
- Boat/cart remembrance with stable identities, live movement updates, custom names, last-known positions, and destroyed-object cleanup.
- Wayfinder gravestone art over native death pins, with cleanup tied to actual grave destruction rather than opening/partial looting.
Navigation
- T1-T5 explicit tracking slots.
- Custom horizontal compass with distances, optional names, cardinal marks, deterministic overlap handling, and offscreen target clamping.
- Optional tracked-target world beacon beams.
Performance
- Adaptive, resumable discovery work budgets.
- Lifecycle-fed live registries for expensive discovery families instead of recurring scene-wide Unity lookups in the hot path.
- Batched persistence and throttled map visual refreshes.
Release cleanup
- Public version set to 1.0.0.
- Removed stale DEV wording from user-facing startup/config/recovery messages.
- Added Thunderstore/r2modman manifest, icon, README, changelog, license, configuration notes, and one-click release packaging script.
