Skip to content

Show alternate biome names beside the minimap - #142

Merged
jneb802 merged 2 commits into
mainfrom
feature/alternate-biome-minimap-label
Oct 17, 2026
Merged

jneb802 merged 2 commits into
mainfrom
feature/alternate-biome-minimap-label

Conversation

@jneb802

@jneb802 jneb802 commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Append active alternate biome names to the existing small-minimap biome label. For example, Mountain becomes Mountain (Drake Mountain). Align alternate labels to the top of the existing text area so wrapped lines extend downward inside the minimap border. Preserve the original width, horizontal alignment, and ordinary-biome alignment. The large map is unchanged.

Add the local [Minimap] ShowAlternateBiomeName setting, enabled by default. Read the player's current BiomeSector, preserve its localized name, and omit empty or duplicate alternate names. No new network messages or Expand World Data dependency are required. Version: 0.1.100.

Validation:

  • Release build passed: 0 errors, 84 existing warnings. git diff --check passed.
  • Reproduced the centered-wrap overflow in the previous live Drake Mountain screenshot. Repeated that location with the fix: both lines remain inside the top border.
  • Tested on valnet-client-01 with the maintained praetoris-season-8 profile. Package dependency versions matched deployed production release 8.0.45, apart from the candidate and existing test tools. The existing BepInEx loader reports pack 5.4.2350 rather than the manifest's 5.4.2351.
  • In TestingWorld, biomeinfo confirmed Drake Mountain, Fortress Mountain, Dandelion Meadows, and Birch Meadows. Inspected full-resolution 1920x1080 OBS screenshots for all four. Labels wrap downward inside the existing border. Each capture followed completed teleportation.
  • Returned to ordinary Meadows in the same session and confirmed the suffix disappears and the normal label position returns.
  • The earlier feature validation verified the disabled setting shows only Mountain after restarting. Linux file edits did not reload during that session; README documents the restart fallback.
  • Logs still contain shader/platform and Water material errors, plus PieceManager thumbnail-generation exceptions in ZDOMan.AddIfPortal. Their stacks do not involve the label patch. Other baseline warnings include asset-name conflicts, ExtraSlots backup format, reset configuration, and DvergerAutomation/Epic Loot compatibility.

New evidence: /Users/benjmarston/Develop/artifacts/alternate-biome-layout-20261016/ contains drake.png, fortress.png, dandelion.png, birch.png, ordinary.png, corresponding biome/player-state output, dependency inventory, and client logs. Earlier disabled-setting and before-fix evidence remains in /Users/benjmarston/Develop/artifacts/alternate-biome-label/. Validation covers client UI in a local world, not a dedicated-server multiplayer session.

Cleanup: restored the original profile content and mmcli registry, verified checksums, and confirmed the original PraetorisClient 0.1.94 loads with successful BepInEx startup. Removed the temporary character. The original registry reports 0.1.97 for that older DLL; restoration preserves the original state.

@github-actions

Copy link
Copy Markdown

No blocking issues found.

AlternateBiomeLabel.cs logic is sound. The Priority.Last Harmony postfix runs after Minimap.UpdateBiome and any other patches, correctly appending the alt-biome suffix. Null guards on player, sector, and individual AltBiome entries are in place. The deduplication loop (names.Contains(name)) correctly prevents repeated names in the parenthetical.

Label reconstruction is safe. Reading sector.GetName() as the base label rather than stripping a previously written suffix avoids state-accumulation bugs across frames and correctly handles toggling the setting off mid-session. The guard if (__instance.m_biomeNameSmall.text != label) avoids unnecessary text writes on frames where nothing changed.

Config binding follows existing patterns. ShowAlternateBiomeName is declared internal static ConfigEntry<bool>, initialized to null!, and bound in BindConfig() without SyncedDescription, consistent with the other local-only settings. Default true matches the PR description.

Version bump is consistent across AssemblyInfo.cs (AssemblyVersion and AssemblyFileVersion), Plugin.cs (ModVersion), manifest.json, and CHANGELOG.md.

One thing worth noting (not blocking): The postfix always sets m_biomeNameSmall.text from sector.GetName() rather than preserving whatever UpdateBiome just wrote. For ordinary biomes the guard prevents a spurious overwrite only if sector.GetName() returns exactly the same string that UpdateBiome puts in m_biomeNameSmall.text. The PR's validated Meadows screenshot (no alternate suffix, correct label) confirms these match in practice, but if a future game update causes them to diverge, ordinary biome labels would be silently clobbered. Reading __instance.m_biomeNameSmall.text as the base (and stripping a previous suffix if present) would remove this dependency on internal label parity, though it introduces its own complexity. Not a bug in the current build.

@jneb802
jneb802 merged commit b5624d8 into main Oct 17, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant