Ragnavik Progress

v1.1.0·Updated 2026-09-16

Server-only boss and EpicMMO milestone reporter with a private configurable HTTP endpoint.

About this mod Author’s original text

Ragnavik Progress

Ragnavik Progress is a server-only Valheim milestone reporter. It sends authenticated progress snapshots to an HTTP endpoint that can publish community messages through Discord or another service.

Features

  • Reports newly defeated world bosses.
  • Records the killing player and nearby participants for future boss defeats.
  • Reports connected characters reaching configurable EpicMMO level intervals.
  • Uses each character's current in-game name in the report.
  • Uses a private stable identifier only for duplicate prevention.
  • Establishes a quiet baseline so installation does not announce old progress.
  • Defaults to disabled with no endpoint or credentials.
  • Does not report ordinary creature kills.

What server administrators need

This mod is the game-side reporter. It does not bundle or require the Ragnavik Discord bot. A server administrator must provide an HTTP receiver that:

  • Is reachable from the dedicated Valheim server.
  • Accepts authenticated JSON POST requests at the configured endpoint.
  • Stores enough state to prevent duplicate announcements across restarts.
  • Routes accepted events to Discord, another chat service, a database, or logs.
  • Returns HTTP 204 No Content after safely accepting a report.

The receiver can run in Docker, as a system service, as a serverless endpoint, or inside an existing community bot. Docker is optional. If Discord is used, the administrator supplies their own bot application or webhook bridge and their own channel IDs.

Configuration

After the first server start, edit BepInEx/config/lostkode.ragnavik.progress.cfg on the server. Set Enabled, Endpoint, and optionally TokenFile and TokenHeader. Boss announcements and EpicMMO level announcements have independent switches. The level interval and nearby participant radius are configurable.

The default EpicMMO milestone interval is 10 levels. EpicMMO is optional; boss reporting still works when it is not installed.

| Setting | Default | Purpose |

| --- | --- | --- |

| Enabled | false | Master switch for all reporting. |

| ReportBossDefeats | true | Enables boss defeat snapshots and attribution. |

| ReportEpicMMOLevels | true | Enables EpicMMO level snapshots. |

| EpicMMOLevelStep | 10 | Level interval used by the receiving service. |

| BossParticipantRadius | 100 | Distance in meters used to identify nearby participants. |

| Endpoint | blank | Private receiving endpoint. |

| TokenFile | blank | Server-only authentication token file. |

| TokenHeader | X-Progress-Token | Authentication header name. |

| ServerName | Valheim | Server name included in reports. |

| CheckSeconds | 30 | Progress polling interval. |

| HeartbeatSeconds | 3600 | Unchanged-state resynchronization interval. |

Endpoint payload

The endpoint receives JSON containing server, instance, bosses, bossKills, players, and milestoneStep. Each player contains an internal id, current in-game name, and EpicMMO level. Each boss kill contains an event ID, world key, boss name, killing player, and nearby participant names. Return HTTP 204 after accepting the snapshot.

Example request body:

{

"server": "Example Server",

"instance": "dedicated-server-1",

"bosses": ["defeated_eikthyr"],

"bossKills": [

{

"id": "boss-event-id",

"key": "defeated_eikthyr",

"boss": "Eikthyr",

"killer": "Astrid",

"participants": ["Astrid", "Bjorn"]

}

],

"players": [

{

"id": "private-character-id",

"name": "Astrid",

"level": 20

}

],

"milestoneStep": 10

}

When TokenFile contains a token, the mod sends its contents in the header named by TokenHeader. The receiver should compare that value securely, reject invalid requests, validate body sizes and fields, and avoid printing tokens or private identifiers in public messages.

Reports are snapshots and may be repeated during heartbeat synchronization. The receiver is responsible for announcing only new boss event IDs, newly added boss keys, and newly crossed player-level thresholds. Character IDs are for private duplicate

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. 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.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. 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.

Dependencies

Install these first, or the mod will not work:

denikson-BepInExPack_Valheim

File & checksum

Filename
Ragnavik_Progress-1.1.0.zip
File size
53.7 KiB