BoostDrop
Server-authoritative per-player boosts with optimized damage contribution attribution, runtime policy sync, temporary grants and admin tools.BoostDrop
Per-player configurable boosts for Valheim multiplayer.
BoostDrop lets a server give different players different multipliers for gathering, creature loot, bosses, chests, combat damage, plant growth and skill XP while keeping the permission/grant files private on the server.
Multiplayer requirement: install the same BoostDrop version on the dedicated server and on every client.
Main features
- Different multipliers per player:
x1,x1.5,x2,x5, etc. - Global, group and individual player rules.
- Temporary grants with automatic expiration.
- Category-specific multipliers.
- Item and creature-specific overrides.
- Server-authoritative permissions and admin actions.
- Runtime YAML/config reloads without restarting the server.
- Admin GUI with F8.
- Admin console commands.
- Jötunn ConfigSync for synchronized server settings.
- Multiplayer attribution designed to remain correct when Valheim moves network ownership between nearby players.
How reward ownership works
BoostDrop does not use the ZDO/network owner as the reward owner.
For creatures, bosses, mineable resources and trees, BoostDrop tracks damage caused by real players. The player with the highest accumulated effective damage supplies the reward multiplier.
Example:
Player A: x5 -> 700 effective damage
Player B: x2 -> 300 effective damage
Reward policy: Player A (x5)
The result does not depend on who is closest, who owns the network object or who happens to be simulating it.
If a damage event is not attributable to a real Player, BoostDrop does not invent an attacker. The game remains vanilla for that path. If a non-player event is the final damaging event, the reward remains vanilla.
Pickables use the routed player that actually performed the pick action. Loose ground resources use the player that actually performs the pickup, and already-processed drops are marked so they cannot be multiplied a second time.
Supported categories
| Category | Description |
|---|---|
mining |
Mineable rocks, ore and compatible mining destructibles |
wood |
Trees and logs |
fishing |
Fishing rewards |
pickable |
Berries, mushrooms, crops and world pickables |
mobdrop |
Normal creature loot |
bossdrop |
Boss loot |
chestloot |
Supported container/chest loot |
combatdamage |
Player combat damage |
plantgrowth |
Plant growth speed |
skillxp |
Skill XP gain |
For YAML backward compatibility, the plant-growth category is still serialized under the legacy key farming.
Requirements
BoostDrop 2.1.1 requires:
- Valheim + BepInEx
denikson-BepInExPack_Valheim-5.4.2350ValheimModding-Jotunn-2.30.0
Installation
Mod manager
Install BoostDrop and make sure the same version is installed on:
- the dedicated server;
- every player client.
Manual installation
Copy the plugin files into:
Valheim/BepInEx/plugins/BoostDrop/
For a dedicated server, use the server's own BepInEx/plugins directory.
Do not distribute the private server permission/grant YAML files to clients.
Server files
BoostDrop uses these server-only files under BepInEx/config/:
BoostDrop_permissions.yaml
BoostDrop_grants.yaml
BoostDrop_permissions.yaml stores static rules.
BoostDrop_grants.yaml stores temporary grants created by admin commands or the admin GUI.
Clients receive only resolved runtime policy data needed for gameplay, never the raw permission/grant YAML database.
Simple permission example
defaultMultiplier: 1.0
userIds:
76561198000000001: 2.0
76561198000000002: 1.5
Groups
defaultMultiplier: 1.0
groups:
vip:
multiplier: 2.0
players:
- Odin
userIds:
- 76561198000000001
Per-player category rules
playerDetails:
Odin:
userId: 76561198000000001
multiplier: 2.0
categories:
mining: 3.0
wood: 2.0
fishing: 1.5
pickable: 2.0
mobDrop: 2.5
bossDrop: 3.0
chestLoot: 2.0
combatDamage: 1.5
farming: 2.0
skillXP: 2.0
An explicit 1.0 can be used to keep a category/item vanilla while a broader rule is boosted.
Item overrides
playerDetails:
Odin:
userId: 76561198000000001
multiplier: 2.0
items:
Coins: 1.0
Creature-specific rules
playerDetails:
Odin:
userId: 76561198000000001
multiplier: 2.0
mobs:
Troll:
multiplier: 3.0
items:
TrollHide: 4.0
Coins: 1.0
Temporary boosts
boostdrop grant <player|SteamID64> <multiplier> [duration] [category]
Examples:
boostdrop grant Odin 2 7d all
boostdrop grant Odin 1.5 48h mining
boostdrop grant 76561198000000001 3 30m mobdrop
boostdrop grant 76561198000000001 2 permanent all
Supported durations:
30m 30 minutes
12h 12 hours
7d 7 days
2w 2 weeks
permanent no expiration
A number without a suffix is interpreted as days.
Admin commands
boostdrop grant <player|SteamID64> <multiplier> [duration] [category]
boostdrop revoke <player|SteamID64> [all|category]
boostdrop check <player|SteamID64>
boostdrop list
boostdrop reload
boostdrop cleanup
boostdrop perf
boostdrop gui
boostdrop me
boostdrop me shows only your own effective policy.
boostdrop perf shows lightweight runtime counters such as tracked targets, contributors, policy cache usage and checkpoint writes. It does not enable per-hit logging.
Administrative mutations are revalidated by the server.
Admin GUI
Press F8 to open the BoostDrop admin GUI.
Server admins can grant/update/revoke boosts, inspect rules, list grants, reload YAML files and clean expired grants.
The hotkey can be changed in the local BoostDrop client configuration.
Decimal multipliers
Decimal multipliers are supported.
Example:
4 items at x1.5 -> 6 items
For single-item quantities, the fractional part uses probabilistic rounding so long-term output remains close to the configured multiplier.
Hot reload
BoostDrop watches its server permission/grant files by default.
After editing BoostDrop_permissions.yaml, the server can apply the new rules without a full restart. You can also force it with:
boostdrop reload
Runtime config changes are applied after Jötunn synchronization completes. Changing permission/grant paths rebuilds the file watchers automatically.
Performance design
BoostDrop 2.1.1 was refactored for large multiplayer servers:
- no global player scan for every hit;
- no YAML read for every hit;
- no BoostDrop RPC for every hit;
- no per-entity
Update()component; - no ZDO write for every hit;
- damage contribution is an in-memory dictionary update;
- contribution persistence is compact and checkpointed in batches;
- the leading contributor is maintained incrementally;
- stale targets are cleaned incrementally with a hard safety cap;
- resolved player policies are cached;
- individual policy changes use runtime deltas rather than rebuilding every client state when possible;
- file-watcher echoes from BoostDrop's own grant writes are suppressed.
Important multiplayer notes
- Server and clients must use the same BoostDrop version.
- Server and clients should use compatible Jötunn versions.
- BoostDrop 2.1.1 is a client + server mod.
- Do not distribute
BoostDrop_permissions.yamlorBoostDrop_grants.yamlto players. - Nearby players do not automatically share a multiplier.
- Network ownership does not decide reward attribution.
Updating from an older version
- Stop the server and clients.
- Replace the old BoostDrop DLL everywhere.
- Keep your existing permission file unless the changelog says otherwise.
- Start the server.
- Start clients using the same BoostDrop version.
The old YAML key farming remains accepted for plant growth compatibility. The previously exposed placeholder building category was removed because it did not implement real building-cost behavior.
Troubleshooting
My multiplier is not being applied
Run:
boostdrop me
Admins can inspect another player with:
boostdrop check <player|SteamID64>
I changed the YAML but nothing changed
Run:
boostdrop reload
Also verify that you edited the YAML inside the server's BepInEx/config folder.
F8 does nothing
Verify that:
EnableAdminGuiis enabled;- your account is recognized by Valheim as a server admin;
- the client is running the same BoostDrop/Jötunn setup as the server.
Two nearby players have different multipliers
That is supported. Creature/tree/mining rewards use the highest valid player damage contribution, while pickables use the actual routed picker.
2.1.1 highlights
- Refactored damage attribution into a dynamic contributor ledger suitable for 30+ players.
- Strict player-only damage attribution; no proximity/network-owner guessing.
- Effective-damage correction using target HP before/after the hit when available.
- Batched contribution checkpoints instead of ZDO writes per hit.
- Correct vanilla fallback for non-player final damage, including ownership migration checkpoints.
- Effective policy cache and runtime identity directory.
- Snapshot + delta runtime policy synchronization.
- Sender-authoritative pickable attribution.
- One-time processed markers for chest loot and loose drops.
- Reworked reward context cleanup with generation tokens/finalizers.
- Robust YAML watcher restart/debounce/retry behavior.
- Removed the unused Building placeholder category.
- Renamed Farming behavior to PlantGrowth internally while keeping the legacy YAML alias.
- Added
boostdrop perfdiagnostics without per-hit logging.
License
BoostDrop is distributed under the license included with the package.
