About BestAutoSort
From ThunderstoreStandalone storage mod: shared chests, quick-stack, restock, rules, crafting from chests, autofeed, upgrades, sort.
BestAutoSort
Standalone storage mod for Valheim (GUID dev.maks2204.bestautosort). Updated and tested for Valheim 1.0.12.
- Shared chests: every player can open the same chest at the same time, no lockouts
- Quick-stack: hotkey moves matching items into nearby storage
- Lock and restock: Alt + left-click cycles an item through Locked → Replenish → Nothing
- Storage rules: per-chest item/category filters, presets, reserves
- Crafting and building: materials from nearby chests within radius
- Fuel and ingredients: machines, cooking stations, kilns, smelters, fermenters pull from nearby chests
- Animal feeding: hungry tame animals fed automatically from nearby chests
- Chest upgrades: wooden → Reinforced / Black Metal / Grausten tiers, contents kept
- Sort and trash: LeftAlt + S sorts the open chest, Trash button deletes
Notes:
- Own plugin folder (
BepInEx/plugins/BestAutoSort/), own config (dev.maks2204.bestautosort.cfg). - Console command:
bestautosort. - All players + server must run the same version (exact-match hello gate).
> 0.6.x server authority: the 0.6.x-Dedicated-Test line makes the > server/host the permanent owner of eligible chests (option-B ZDO manager: > Take / Add / Move / Sort / UpgradeRequest / Destroy served server-side — > validate → apply → Save() → revision → respond; upgrades charge > target-minus-current with pocket refunds). Live-verified single-peer > (Accepted end-to-end, incl. upgrades with marker/dims/look). The > multi-peer invariant is not yet claimed (2-player flow, hammer > destroy on the run, autofeed soak pending). Mode/hello gate: peers must > match on version AND auth mode (version;auth=N); mismatched peers > are rejected. Vanilla (mod-less) clients are unsupported for managed > chests (view-only grant at best; local vanilla takes fork ghost items). > Remote chest upgrade runs only via the server-mediated > TxOp.UpgradeRequest contract (legacy direct-upgrade frames refused); > see docs/remote-upgrade-mediated.md including its 4 documented residuals.
Multiplayer protocol (ChestTX)
+----------------+
| ONE CHEST |
| ONE OWNER | <- ZDO owner = SERVER, permanent, never migrates
| ONE TX | <- validate -> apply -> Save() -> revision -> respond
| AT A TIME | (per-chest serial queue, main thread)
+----------------+
Details: docs/CHEST_TX.md.
Actors & channels
+----------+ TxRequest +----------------------+ TxResponse +----------+
| CLIENT | -----------> | CHEST ZNetView | -----------> | CLIENT |
| (any peer| (no target: | (engine routes the | (targeted | (same |
| incl. | straight to | packet to the ZDO | at the | peer) |
| server) | the owner) | owner = SERVER) | requester) | |
+----------+ +----------------------+ +----------+
TxFlights (target 0 = broadcast, loopback included) ----------> EVERYBODY
MultiUserHello (version string, exact match) -----------------> EVERYBODY
Packets (ZPackage, nested)
| Packet | Layout | |---|---| | Request outer | [txId:long] txId = peerId<<32 \| counter + [body:ZPackage] | | Request body | [proto:int=2/3] [op:int] [baseRev:uint] [playerId:long] [actorPos:vec3] [enforceRule:bool] [respectReserves:bool] [op-body...] (+ v3 trailing [isTransientRetry:bool]) | | Response | [txId:long] [status:int] [revision:uint] [totalsOnly:bool] [body:ZPackage] | | Take body | [count:int] then per entry [prefabHash:int] [item:ZPackage] [accepted:int] | | Add body | [count:int] then per entry [accepted:int] | | Item snapshot | [prefabHash] [itemPkg] [amount] [x] [y] [maxStack]; itemPkg = ItemData.Save (quality/variant/durability/stack/crafter/customData/world/gridPos) | | Ops | Add / AddBatch / Take / TakeBatch / Move / Sort / Upgrade (legacy direct frames refused on managed chests) / UpgradeRequest (server-mediated, v3) / SetRule / ViewerOpen / ViewerClose / Query | | Statuses | Accepted / Partial / Rejected / Duplicate / UnknownTx / TransientUnavailable (v3, non-terminal: retain same txId, never terminal-forget) |
Take one stack (GUI drag)

Deposit batch (quick-stack, per chest)

Viewers (many GUIs, one chest) + feeding

Install
- Install BepInExPack Valheim
- Drop
BestAutoSort.dllintoValheim/BepInEx/plugins/BestAutoSort/
Build from source
# Game path (if not D:/SteamLibrary/steamapps/common/Valheim)
$env:VALHEIM_INSTALL = "D:/SteamLibrary/steamapps/common/Valheim"
# Debug build + auto-deploy to the game
dotnet build BestAutoSort.csproj -c Debug
# Thunderstore release zip
.\package.ps1
See DEV.md.
Highlights
From source dataLoaders
Runs on BepInEx.
Footprint
Rated a light load on a server.
Dependencies
Needs 1 other project installed alongside it.
BestAutoSort 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
- Optional 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.6.28, released 2026-09-29
Game versions by loader
| Loader | Game versions | Newest |
|---|---|---|
| BepInEx |
From 8 recorded builds of BestAutoSort.
Recent builds
| Build | Released | Game versions | Loaders |
|---|---|---|---|
| 0.6.28 | 2026-09-29 | n/a | BepInEx |
| 0.4.0 | 2026-09-22 | n/a | BepInEx |
| 0.3.2 | 2026-09-17 | n/a | BepInEx |
| 0.3.1 | 2026-09-16 | n/a | BepInEx |
| 0.2.0 | 2026-09-15 | n/a | BepInEx |
| 0.1.10 | 2026-09-14 | n/a | BepInEx |
Dependencies
- Required: BepInExPack Valheim
Declared by the newest build that lists any. Required ones are installed with it on one-click installs.
Run BestAutoSort 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 catalogQuality of life & UI
Small conveniences, tweaks and interface improvements players notice straight away.
Works on a server
From source side supportThunderstore lists server-side support for BestAutoSort as optional: it can run on a server, but isn’t required there.
Compatibility
- Game
- Valheim
- Loaders
- BepInEx
- Runs on
- Serveroptional on the server
- Requires
- One-click install needs a BepInEx server. 1 other project installed alongside it.
Verified at the source
- ✓ThunderstoreOfficial listing, checked 2026-10-01Open ↗
- ✓Authormaks2204, as published on Thunderstore
- ✓LicenseNot published by the sourceFree




