ProgressionGater

v0.2.3·Updated 2026-09-09

Admin-controlled server-wide boss unlocks and crafting progression for Valheim.

About this mod Author’s original text

Progression Gater

A lightweight, server-wide Valheim progression scheduler. Administrators decide when bosses may be summoned; defeating a boss releases its configured crafting tier for everyone.

Created by Catosaur.

Progression Gater is designed for community servers that want a shared release schedule without adopting a large progression overhaul.

Features

  • Live admin commands for unlocking and relocking boss summons.
  • Server-wide boss-defeat state with immediate client synchronization.
  • Independent boss-summon and crafting gates.
  • Configurable vanilla or modded bosses.
  • Exact-prefab and case-insensitive keyword recipe rules.
  • Optional matching against recipe ingredients as well as outputs.
  • Optional admin bypass.
  • Optional Discord webhook posts when a boss is unlocked or genuinely defeated.
  • Config hot reload and server-authoritative rule synchronization.

This initial version gates boss altars and ordinary crafting recipes. It does not yet gate equipment use, building, cooking-station conversions, smelting, loot drops, traders, portals, or biome entry.

Requirements

  • Valheim
  • BepInEx
  • The mod must be installed on the dedicated server and every client. ServerDevcommands is optional; Progression Gater authorizes its own pg_* commands against the server admin list.

Installation

Copy ProgressionGater.dll into BepInEx/plugins/ on the server and all clients. Start the server once to generate:

BepInEx/config/com.catosaur.progressiongater.cfg

The server's rules and state are synchronized to clients. Client-side copies of the rule configuration do not override the server.

Admin commands

Commands are authenticated against Valheim's server admin list.

pg_status

pg_unlock next

pg_unlock

pg_lock

pg_defeat

pg_undefeat

pg_reset confirm

pg_webhook_test

pg_unlock next selects the first configured boss that has not been defeated. An explicit boss ID may be used to unlock out of order.

pg_defeat repairs/imports state administratively and intentionally does not send a boss-kill webhook. Only a real RPC_SetGlobalKey boss-defeat event sends that notification.

Default progression

| Defeated boss | Crafting keywords released |

|---|---|

| Eikthyr | Bronze |

| The Elder | Iron |

| Bonemass | Silver, Obsidian |

| Moder | BlackMetal |

| Yagluth | Mistlands material keywords |

| The Queen | Ashlands material keywords |

| Fader | No default next-biome rule yet |

All seven bosses begin summon-locked and undefeated on a new configuration.

Rule configuration

Boss records use this format:

id|display name|boss prefab|defeat global key|alias,alias

Records are separated with semicolons. Their order controls pg_unlock next. Aliases may be used by commands and prefab lookup; alternate defeat-key aliases must begin with defeated_.

Keyword recipe rules use:

bossId=keyword,keyword;bossId=keyword

Keywords match substrings without case sensitivity. For precise rules—especially modded content—prefer exact-prefab rules:

elder=MyMod_IronWand,MyMod_IronStaff;moder=MyMod_PlainsBlade

When MatchRecipeIngredients = true, both recipe output and ingredient prefab names participate in matching. When false, only the output prefab is checked.

Invalid records and references to unknown boss IDs are ignored with warnings in the BepInEx log. If every boss definition is invalid, the built-in definitions are restored as a safe fallback.

Discord webhook

Set these values in the server config:

[Discord]

WebhookUrl =

ServerLabel = My Valheim Server

PostBossUnlocks = true

PostBossDefeats = true

Messages are configurable:

  • Unlock tokens: {boss}, {bossId}, {admin}, {server}
  • Defeat tokens: {boss}, {bossId}, {server}

The webhook suppresses Discord mentions. By default, only HTTPS Discord hosts are accepted. Compatible third-party endpoints require explicitly enabling AllowNonDiscordWebhookHosts.

Run pg_webhook_test after configuring the URL to verify delivery without changing progression state.

Building

Place the

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
ProgressionGater-0.2.3.zip
File size
39.8 KiB