Source-checkedCreatures & NPCs

ValminEye

by valminhq · for Valheim

Server-only plugin that writes joins, leaves, boss fights, first boss kills and raids to the server log as JSON lines for Valmin. Install it on the dedicated server; players need nothing.

9Downloads
18d agoLast updated
BepInExLoaders
ThunderstoreSource

About ValminEye

From Thunderstore

Server-only plugin that writes joins, leaves, boss fights, first boss kills and raids to the server log as JSON lines for Valmin. Install it on the dedicated server; players need nothing.

ValminEye

A server-only BepInEx plugin for Valheim dedicated servers that reports game events Valmin cannot see in the vanilla log: who joined and left, boss fights and who fought them, the first time each boss is defeated, raids, and when the world has started.

Status: in development, not released. The event format below is a draft and may change before the first release. No event has been checked on a live server yet.

How it works

ValminEye opens no port and accepts no input. It writes one line per event to the BepInEx log, which reaches the server's standard output. Valmin already follows that stream for readiness, saves and joins, so the plugin adds no new transport, credentials or firewall rules.

Players keep a vanilla client. Nothing needs to be installed on their machines.

Commands sent into the game, such as chat warnings, are not part of this plugin. Valmin sends those over RCON through the Tristan-ValheimRcon mod. Messages posted to Discord are written by Valmin from these events, and their wording is set in Valmin, not here.

Event format (draft, version 1)

Every event is one log line from the BepInEx source ValminEye, with one JSON object as the message:

[Info   : ValminEye] {"v":1,"event":"join","player":"Alex","id":"Steam_76561198000000000"}

| Field | Meaning | | ------- | --------------------------------------------------------------------------- | | v | Format version. A consumer ignores lines with a version it does not know. | | event | Event name, from the table below. |

| Event | Fields | When | | ----------------- | ----------------------------------- | -------------------------------------------------------------------- | | join | player, id | A player's character entered the world. | | leave | player, id | A player who had joined left: quit, lost connection, kick or ban. | | boss_first_kill | key, boss, day, duration, wipes, players | A boss was defeated for the first time in this world. | | boss_fight_start | key, boss, first, day, players | A boss noticed players and a fight started. | | boss_fight_end | key, boss, first, outcome, day, duration, players | The fight ended. | | raid_start | raid, name, players | A raid started, named by the game's event name, for example army_eikthyr. | | raid_end | raid, name, players | The raid ended. | | world_start | world, day | The world has loaded and the server is about to open to players. |

  • player is the character name. id is the platform id in the Steam_<id> form Valmin's

player lists use.

  • key is the world key the game sets, for example defeated_eikthyr. boss is the boss's

English name from the game's own text, for example Eikthyr. It is left out when the game has no name for the key, for example for a key added through the config.

  • day is the in-game day, the number players see as "Day N".
  • players lists everyone in the fight: each player the boss recorded as hitting it, and

each player who died near it. Every entry has player, id and deaths, the number of times that player died near this boss since it was last defeated. Players who never died show 0.

  • duration is how long the fight lasted, in whole seconds. On boss_first_kill it is the

winning fight, and it is left out when no fight was seen.

  • wipes is how many fights against this boss ended without a kill since the server started.
  • first is true when the boss had never been defeated in this world when the fight started.

By default only these fights are reported (FirstOnly).

  • outcome is kill, wipe (the boss lost track of the players, because everyone died or

ran, or everyone left its area) or gone (the boss disappeared without dying, for example removed by a command). On boss_fight_end, players lists everyone who came within DeathRadius of the boss during the fight, with the deaths in that fight. On boss_fight_start the entries have no deaths.

  • name on a raid is the message the game shows players when it starts, in English, for

example The ground is shaking. The game has no other name for a raid. It is left out when the game has no text for the raid.

  • players on a raid lists the players inside the raid area when the line is written, each

with player and id. The area is the circle the game itself uses for the raid. A raid ended with the stopevent command can have no players.

  • world is the world's name, as in the server's -world option.
  • A raid already running when the server restarts is not reported again.

Every field except v, event, key, raid, outcome, player and world can be turned off in the config, and so can every event.

There is no event for the plugin loading. BepInEx itself logs [Info : BepInEx] Loading [ValminEye 0.2.0], and Valmin reads that line to tell that the plugin runs and which version.

A boss fight that ended in a wipe:

[Info   : ValminEye] {"v":1,"event":"boss_fight_end","key":"defeated_gdking","boss":"The Elder","first":true,"outcome":"wipe","day":31,"duration":184,"players":[{"player":"Alex","id":"Steam_76561198000000000","deaths":2}]}

A boss kill example:

Read the full description on Thunderstore →

Highlights

From source data

Loaders

Runs on BepInEx.

Footprint

Rated a light load on a server.

Last update

Its author last shipped an update 18d ago.

ValminEye on Nxeon

From our catalogue
One-click install
Supported on Nxeon Valheim servers, for BepInEx servers. We download it from Thunderstore, place it, and restart the server.
Server side
Required on the server
Server type needed
BepInEx
Server load
light
Smallest plan we suggest
Valheim — 4 GB (4 GB RAM). This follows our own load rating above, not a benchmark.
Latest build
0.2.0, released 2026-10-17

Game versions by loader

LoaderGame versionsNewest
BepInEx

From 1 recorded build of ValminEye.

Dependencies

Declared by the newest build that lists any. Required ones are installed with it on one-click installs.

Run ValminEye on a Valheim server

Pick a server or deploy a new one above; it is installed in one click.

What kind of mod it is

From the catalog
Listed on Thunderstore as “Content”

Creatures & NPCs

Adds or changes creatures, NPCs and how they behave.

Runs on your server

From source side support

Thunderstore lists ValminEye as required on the server. Check its Thunderstore page to see whether players need it too.

Compatibility

Game
Valheim
Loaders
BepInEx
Runs on
Serverrequired on the server
Requires
One-click install needs a BepInEx server.

Verified at the source

  • ✓ThunderstoreOfficial listing, checked 2026-10-18Open ↗
  • ✓Authorvalminhq, as published on Thunderstore
  • ✓LicenseNot published by the sourceFree

ValminEye, answered

Generated from the mod’s own source data.

Do my players need to install ValminEye?

Thunderstore lists ValminEye as required on the server. Check its Thunderstore page to see whether players need it too.

Which loaders does it support?

BepInEx.

Is it free?

Yes. ValminEye is free to download from Thunderstore.

How do I add it to my Nxeon server?

Use “Add to a server” on this page, or open NxLabs from your dashboard. We install it, restart your server and switch it on.

NxLabs

Run ValminEye on a Valheim server.

Deploy in about a minute from $9.99 a month, then add ValminEye in one click.