NoMapDiscordAdditions WIKI

Updated a week ago

NoMapDiscordAdditions

A capture-and-share toolkit for Valheim's large map, built for no-map (and normal) worlds.

It does two things:

  1. SEND MAP / COPY MAP — snapshot the visible map and post it to a Discord webhook or paste it straight into Discord, Slack, or an image editor.
  2. MAP COMPILE — walk between cartography tables, add each reading as a tile, and stitch them all into one high-resolution PNG with world coordinates preserved.

Cartography-table pins get distance/bearing-from-spawn captions baked into the image, and almost every visual setting can be server-synced so a host enforces one consistent look for everyone.


Quick start

  1. Install the dependencies (BepInEx, JsonDotNET, ZenMap ≥ 1.7.3) — the manifest pulls these in automatically through a mod manager.
  2. Launch the game once so the config file is generated at BepInEx/config/com.virtualbjorn.nomapdiscordadditions.cfg.
  3. (Optional, for Discord) Create an Incoming Webhook in your Discord server (Channel → Edit → Integrations → Webhooks) and paste the URL into Discord.Webhook URL. A server admin can instead set it on the server to push it to all clients without writing it to anyone's config.
  4. Open the large map. You'll see capture buttons bottom-right and the compile panel bottom-left.

No webhook? The SEND MAP button stays hidden until a webhook is available, but COPY MAP and the entire MAP COMPILE workflow (including local EXPORT) work without one.


SEND MAP / COPY MAP

The bottom-right of the large map gets a Show Biome Text toggle, SEND MAP (default F10), and COPY MAP (default F11).

Large map UI — capture buttons

Action What it does
SEND MAP Posts the capture to your Discord webhook using the configurable message template.
COPY MAP Writes the PNG to the system clipboard — paste straight into Discord, Slack, or an image editor.
CTRL + COPY MAP Hold the modifier key (default Left CTRL) to bypass the Discord-friendly size cap and copy at up to 4096px on the long edge — full quality for image-editor work.
  • The bound hotkey is shown in each button label (SEND MAP (F10) / COPY MAP (F11)) and updates when you re-bind the keys.
  • Captures hide every UI overlay (panels, buttons, hints, hotbar). Only the map and — if Show Biome Text is on — the biome label remain.
Discord post Spoiler-tagged
Discord post Spoiler-tagged

MAP COMPILE

A second panel sits bottom-left of the large map. The idea: walk between cartography tables, add each reading as a tile, then COMPILE to composite every tile into a single PNG that preserves world coordinates. The session is never lost when you save/copy/send — pause and resume at the next table or after a restart.

Idle Compiling
Compile panel — idle Compile panel — adding tiles

Workflow

  1. START COMPILE — begins a session (scoped to the current world + character).
  2. ADD TILE (N) — enabled only when the map was opened at a cartography table (no M-key opens, no portable map items). Re-adding within ~8m of an existing tile replaces it in place, so you can re-shoot a table without duplicates.
  3. Travel to the next table, open the map, ADD TILE again. The session is saved to disk after every add.
  4. COMPILE (N) — opens the result panel. This does not end the session.

If you crash, disconnect, or just wander off, the next time you open the map you'll see RESUME COMPILE (N) — click it to drop straight back into compile mode with every tile intact.

Result panel

Result panel

Button Behaviour
SAVE Writes a full native-resolution PNG to disk — the sharpest tile maps 1:1, nothing is downscaled below capture resolution. Capped at 8192px on the longest axis; the filename includes the dimensions and the status line says whether you got native res or hit the clamp. After saving, the button becomes COPY DIR so a second click puts the containing folder on the clipboard.
COPY Writes the PNG to the clipboard at the Discord-safe size. CTRL+COPY raises the cap to 4096px.
SEND TO DISCORD Posts the composed image (Discord-safe size) with the compile message template.
DONE Returns to compile mode with every tile intact — keep adding tables.
DISCARD The only button that deletes the session (along with CANCEL while compiling).

SAVE / COPY / SEND / DONE are all non-destructive. Your session stays on disk and resumable.

Composed (4 tables) Sent to Discord Spoiler-tagged
Composed map Discord post Spoiler-tagged

Sharing tiles between players

In a no-map world each player only reveals what they personally explore. SHARE lets a group pool coverage:

  • SHARE (N) (shows EXPORT (N) with no webhook) exports every session tile as a self-describing PNG with its world rectangle embedded in a standard PNG tEXt chunk (still a normal, viewable image). With a webhook configured, tiles are posted to Discord (batched, up to 5 per message). Copies are always written to:
    BepInEx/config/NoMapDiscordAdditions/compile-share/out/<world>/
    
  • To receive: drop the PNGs a teammate shared into:
    BepInEx/config/NoMapDiscordAdditions/compile-share/incoming
    
    The next time you open the large map during a compile session, tiles for your current world are merged into your active session automatically. Then COMPILE composites yours and theirs together.
  • Re-importing or re-sharing the same tile updates it in place; tiles for a different world are skipped. Handled files move into incoming/processed or incoming/ignored.
  • Set Map Compile.Enable Map Sharing to false (server-syncable) to turn this off entirely — the SHARE/EXPORT button disappears and nothing auto-imports.

Naming a cartography table

Every visible table pin in a capture is decorated with {distance}m {Direction} ({bearing}°) — e.g. 1240m NorthEast (45°). Labels render only during the capture, never in the live UI.

A table can also carry a human-readable name that flows into the Discord message ({table}) and the compiled-map captions ({name} — {distance}m {Direction}). There's no naming UI — the mod reads the closest named map pin sitting on the table (within ~8m):

  • ZenMap auto-pins every cartography table with the vanilla "house" icon. Rename that pin and you've named the table.
  • Or drop a Town pin on the table and name that.

Leave the pin unnamed and nothing changes — captions fall back to just the direction. The name is captured the moment you add a tile in MAP COMPILE, so it stays correct even when the table is far away or unloaded at compile time.


Configuration reference

Config file: BepInEx/config/com.virtualbjorn.nomapdiscordadditions.cfg

Discord

Key Default Notes
Webhook URL (empty) Discord incoming webhook. Set on the server to push to clients in-memory without writing it to their config files.
Message Template {player} shared a map update from {biome}{spawnDir}{table} Supports {player}, {biome}, {spawnDir}, {table}. Missing {spawnDir}/{table} are auto-appended. Server-synced.
Spoiler Image Data false Tag attachments as Discord spoilers. Server-synced.
Send Max Dimension 2560 (512–8192) Caps the longest pixel dimension of anything sent to Discord or copied via COPY. Keeps 4K screens under Discord's 10MB free-tier limit. Server-synced.

General

Key Default Notes
Capture Method ScreenCapture ScreenCapture or TextureCapture. Server-synced.
Capture Super Size 2 (1–4) Screen-capture quality multiplier. Higher = sharper but heavier. Server-synced.
Normalize Capture Lighting true Texture-capture renders the map as if at noon so tiles captured at different times don't seam. Client-only.
Enable Logs false Print info/warning/error to the BepInEx console and Player.log. Turn on to investigate problems.

UI

Key Default Notes
Hide Clouds true Strip the cloud overlay before capture. Server-synced.
Show Biome Text false Include the biome label in captures. Client-only; also toggled by the in-map Show Biome Text checkbox.

Map Compile

Key Default Notes
Max Output Dimension 2560 (512–8192) Longest dimension for the preview, COPY and SEND TO DISCORD composite. Does not affect SAVE (always native, hard-capped at 8192px). Server-synced.
Compile Message Template {player} compiled a map from {tileCount} cartography tables. Used by SEND TO DISCORD in the result panel. Supports {player}, {tileCount}. Server-synced.
Enable Map Sharing true Master toggle for cross-player tile sharing. Server-synced.
Share Message Template (points teammates at the incoming folder) Sent once with the first SHARE attachment. Supports {player}, {tileCount}. Server-synced.

Pin Label

Key Default Notes
Enabled true Master toggle for the per-pin captions baked into the screenshot. Server-synced.
Include Distance true Prepend the meters from spawn. Server-synced.
Include Direction from Spawn false Append the compass direction/bearing. If both distance and direction are off, no label is drawn. Server-synced.
Include Map Item Sources false Also label captures opened from a portable map item (e.g. ZenMap parchment). Server-synced.
Show on Compile Mode true Stamp captions onto the MAP COMPILE composite (still gated by Enabled). Server-synced.

Controls

Key Default Notes
Screenshot Key F10 SEND MAP hotkey while the large map is open. Client-only.
Copy Key F11 COPY MAP hotkey while the large map is open. Client-only.
Copy Full Resolution Modifier LeftControl Hold while clicking COPY to raise the cap to 4096px. Client-only.

When ServerSync is installed, Discord.Lock Configuration is also available (standard ServerSync lock behavior).


Server behavior

Built-in RPC sync (no ServerSync installed)

These settings are pushed from the server to all clients on connect: Capture Method, Capture Super Size, Spoiler Image Data, Hide Clouds, Send Max Dimension, Message Template, all four Map Compile keys, all Pin Label keys, and Webhook URL (stored in memory only — never written to client config files).

The RPC protocol is versioned; mismatched client/server versions silently fall back to local config.

ServerSync

When ServerSync is installed it manages the synced settings above (except Webhook URL, which stays local to each client under that workflow).

Show Biome Text, Enable Logs, hotkey bindings, the modifier key, and Normalize Capture Lighting are always local to each client.


Troubleshooting

Symptom Fix
SEND MAP button missing No webhook is available. Set Discord.Webhook URL locally, or have the server push one. COPY MAP and EXPORT still work without it.
ADD TILE is greyed out The map must be opened at a cartography table. M-key opens and portable map items can't add tiles.
Compile mode "lost" after compiling It isn't — reopen the large map and click RESUME COMPILE (N), then COMPILE again for a fresh result panel. (Fixed properly in 1.0.6.)
Graphics.CopyTexture called with mismatching texture sizes error Update ZenMap to ≥ 1.7.3 — it self-heals this on expanded/4× worlds.
Discord upload fails / image too big Lower Discord.Send Max Dimension (default 2560 keeps 4K under Discord's 10MB free-tier limit).
Dark/light seams between compiled tiles Keep General.Normalize Capture Lighting on (default) and use TextureCapture.
Need to report a bug Set General.Enable Logs = true, reproduce, and attach BepInEx/LogOutput.log.

Dependencies

Optional: ServerSync for the preferred config sync and lock workflow.


Support & questions

Reach me as virtualbjorn on the Valheim modding Discords:

Ping virtualbjorn in the relevant support channel with your BepInEx/LogOutput.log if you're reporting an issue, or open an issue on the GitHub repo.