Valheim
Install

Details

Last Updated
First Uploaded
Downloads
4
Likes
0
Size
40KB
Dependency string
catosaurluna-ProgressionGater-0.1.1
Dependants

Categories

ADDatHost Valheim hosting
€1

Progression Gater

Progression Gater logo

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.

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 <boss>
pg_lock <boss>
pg_defeat <boss>
pg_undefeat <boss>
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 = https://discord.com/api/webhooks/...
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 required game/framework references in lib/, or use:

.\scripts\setup-references.ps1 -SourceDirectory "C:\path\to\BepInEx\core"
.\scripts\build.ps1

Build output:

src/ProgressionGater/bin/Release/net48/net48/ProgressionGater.dll

Thunderstore package

Build and create an upload-ready Thunderstore ZIP with:

.\scripts\package.ps1

The script validates the manifest, assembly version, and 256x256 icon, then creates artifacts/Catosaur-ProgressionGater-<version>.zip. Upload that ZIP on the Valheim community page in Thunderstore. Package files are placed at the ZIP root as required; do not wrap them in another directory.

DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro