Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
ModerWarehouse
Server-only automatic warehouse for Valheim with sorting, requests, stock targets and an interactive 4x4 stock board.
By CrisHaani
| Date uploaded | 6 days ago |
| Version | 1.0.0 |
| Download link | CrisHaani-ModerWarehouse-1.0.0.zip |
| Downloads | 37 |
| Dependency string | CrisHaani-ModerWarehouse-1.0.0 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2333ArgusMagnus-ServersideQoL
Serverside-only QoL mod, compatible with vanilla/console (e.g. XBox, PS, Switch) clients. Stack player inventories into chests, generated portal hub, auto-sort chests, refuel smelters from containers, infinite building/farming stamina and much more
Preferred version: 2.0.10README
Moder Warehouse 1.0.0
Moder Warehouse is a free, unofficial, server-only warehouse automation mod for Valheim. Players connect with unchanged vanilla clients. The server sorts an input chest, fulfils withdrawal requests, tracks target stock and displays totals on an interactive rotating 4×4 board.
Author: Cris Haani
License: MIT
Status: first public release candidate
Moder Warehouse is not affiliated with or endorsed by Iron Gate Studio or Coffee Stain Publishing. Use it at your own risk and back up the world before installing or updating it.

Requirements
Install on the dedicated server only:
- BepInExPack for Valheim 5
- ServersideQoL 2.0.10 or a confirmed compatible later version
- Moder Warehouse
BepInEx and ServersideQoL are separate dependencies and are not included. Clients do not need to install this mod.
Installation
- Stop the server and create a tested world backup.
- Install BepInEx and ServersideQoL from their official project pages.
- Copy
ModerWarehouse.dlltoBepInEx/plugins/ModerWarehouse/ModerWarehouse.dll. - Start the server.
- Confirm
Loading [Moder Warehouse 1.0.0]and the initialization message in the BepInEx log.
Quick start
Choose a warehouse id such as main. Place ordinary signs no more than three metres
from their intended chests:
| Sign text | Purpose |
|---|---|
[WH:main:IN] |
input chest and warehouse centre |
[WH:main:OUT] |
output chest |
[WH:main:REQ] |
request and target-stock sign |
[WH:main:INFO] |
live container-capacity sign |
[WH:main:BOARD] |
bottom-left anchor of the automatic 4×4 board |
[WH:IGNORE] |
exclude the nearest container |
[WH:DELETE] |
remove a generated warehouse sign |
[WH:CLEAN] |
clean overlapping generated signs at one position |
All suitable ordinary containers within 100 metres of the input chest are managed by default. Private, open, in-use, cart and unsuitable auto-destroy containers are not used. Items stay safely in the input chest when no destination has capacity.
Input and automatic labels
Put unsorted items into the IN chest. Existing matching stacks are filled before
empty slots are used. A homogeneous unlabeled storage chest receives a persistent
white German label after 90 seconds. Place a correctly oriented vanilla sign containing
... if you want the server to reuse your chosen position immediately.
Requests
Initialize a request sign once with [WH:main:REQ]. Its warehouse association is
stored persistently, after which the sign accepts requests such as:
Wood 100
Stone 10, Wood 20, Resin 5
German names, English names and internal prefab names are supported. Each comma- separated request receives its own result. Available items are delivered even if another requested item is missing. Results remain visible for 30 seconds by default.
Target stock
Store a persistent shopping list on the initialized REQ sign:
SOLL Wood 1000, Stone 500, Resin 100
Red means missing or critically low, orange means below target and green means the target has been met. Normal withdrawal requests remain available at any time.
INFO sign
[WH:main:INFO] shows free unlabeled chests, empty reserved/labeled chests and occupied
chests versus total managed capacity. The warehouse association persists after the
first successful initialization.
Interactive 4×4 stock board
Place [WH:main:BOARD] as the bottom-left cell and leave space to its right and
above. The server creates fifteen additional vanilla signs. The sign's written face
defines the board front; the board grows right and upward.
The top row shows warehouse, filter, page and container occupancy. Twelve alphabetical item totals are shown below it. Pages rotate every seven seconds.
- Edit BESTAND with a prefix such as
Gto filter and freeze the list. - Edit SEITE with a page number to hold that page.
- Use both controls together when required.
- Enter
AUTOor clear the control to resume rotation immediately. - Automatic rotation resumes after 60 seconds without another filter change.
The board wakes while a player is within five metres. Otherwise it displays a large
sleep message and stops rotating. On waking it briefly shows stock changes since the
last visit. After input sorting it shows an EINGELAGERT delivery confirmation.
Container occupancy is green below 80 percent, orange from 80 percent, and red with an expansion warning from 95 percent.
Expanding and running multiple warehouses
Build more suitable chests within the configured radius; capacity updates on the next
scan. Use another id for an independent site, for example [WH:harbour:IN] and
[WH:harbour:OUT].
Configuration defaults
| Setting | Default | Meaning |
|---|---|---|
Enabled |
true |
enable warehouse processing |
Radius |
100 |
storage radius around the IN chest |
MarkerDistance |
3 |
maximum sign-to-chest distance |
ScanInterval |
3 |
seconds between scans |
MaxMovesPerCycle |
250 |
safety limit for stack movements |
AutoCreateLabels |
true |
create automatic chest labels |
AutoLabelDelay |
90 |
seconds before automatic labeling |
ResultDisplaySeconds |
30 |
request-result display time |
BoardPageSeconds |
7 |
stock-board page duration |
BoardWakeDistance |
5 |
stock-board wake distance |
DeliveryNoticeSeconds |
6 |
delivery-message duration |
VisitSummarySeconds |
12 |
visit-difference duration |
CapacityWarningPercent |
80 |
orange capacity threshold |
CapacityCriticalPercent |
95 |
red capacity threshold |
Test configuration changes on a world copy. Very short scan intervals and very large radii may increase server load.
Troubleshooting
- Plugin does not load: verify BepInEx and ServersideQoL, remove duplicate DLLs,
and check the log for
Loading [Moder Warehouse 1.0.0]. - IN or OUT is not detected: verify exact spelling, matching warehouse id and a sign-to-chest distance below three metres.
- Items remain in IN: check capacity, matching stacks, private/open containers and
nearby
[WH:IGNORE]signs. - Request fails: use
Item amount, separate entries with commas, and keep enough free space in OUT. - Board grows incorrectly: the anchor is the bottom-left cell; clear the space to
the right and above, remove it with
[WH:DELETE]or[WH:CLEAN], then rebuild once.
Updating, rollback and removal
Stop the server and back up both the world and old DLL before every update. After an update, verify the log and test one small deposit and withdrawal. For rollback, restore the matching world backup and previous DLL together.
Before removal, optionally delete generated boards and signs with [WH:DELETE].
Then stop the server, back up the world and remove ModerWarehouse.dll. Chests and
their contents are vanilla world objects; generated signs may remain as ordinary signs.
Privacy, support and license
Moder Warehouse contains no telemetry, analytics, advertising or intentional external network communication. Remove passwords, IP addresses and platform identifiers before sharing logs.
Reports should include the Valheim, BepInEx, ServersideQoL and Moder Warehouse versions, server operating system, reproduction steps and a privacy-cleaned log excerpt.
The source code is available under the MIT License. Use, modification and redistribution are allowed while retaining the copyright and license notice. The software is supplied without warranty and is used entirely at your own risk.
CHANGELOG
Changelog
All notable changes to Moder Warehouse are documented here.
1.2.1 - 2026-09-20
- Changed IN safety filtering to be non-destructive: internal, cheated and otherwise invalid items remain in the player-facing IN chest and are ignored by sorting.
- Kept automatic cleanup for forbidden items found in managed storage containers.
- Prevented rejected custom or unknown prefabs from poisoning later legitimate IN transfers through stale live-container state.
- Added a separate one-metre storage-label association radius while retaining the three-metre functional-marker radius for IN, OUT and control signs.
- A blank
...sign directly at a chest now supersedes an obsolete hidden label that the mod previously generated for the same chest. - Fixed automatic labels being placed behind vanilla chests. New labels use the decorated oval side, and previously generated back-side labels migrate once.
- Added housekeeping for genuine items manually placed in the wrong labelled storage chest. They are safely refiled and every move logs item, amount, source and target.
- Stock and statistics boards now wake when a player approaches any of their 16 signs, rather than measuring only from the bottom-left anchor.
1.2.0 - 2026-09-20
- Added an optional automatic 4x4 statistics board using
[WH:<id>:STATS]. - Added rolling daily movement history with automatic pruning after 90 days and no player identity tracking.
- Added four statistics pages for period totals, comparisons, trends/forecast and dated records.
- Added interactive period and page controls, including freely selectable periods from 1 to 90 days and automatic return to rotation after 60 seconds.
- Added a combined control sign below the board for commands such as
27 TREND,30 3,HEUTE UEBERSICHTandAUTO. - Added safe migration of the earlier 3x3 statistics prototype to the final 4x4 layout while preserving recorded history.
- Added clear insufficient-data reporting for projections instead of presenting immature forecasts as reliable results.
- Fixed item routing collisions caused by one label being contained in another name,
such as German
SteinmatchingBernsteinorHolzmatchingEdelholz. - Automatic labels now route by their persisted internal item id. Ambiguous manual
translations such as German
Harzrequire a matching sample item in the chest, preventing the server from guessing between distinct item types. - Fixed the stock board and visit-difference snapshot failing when two distinct item
tokens share the same localized display name, such as two English
Clubentries. - Added a safety filter for Valheim's persistent per-item
m_cheatedmarker. Cheated items are rejected at IN with a visible red board message and removed from managed storage without touching legitimate items in the same chest. - Added protection against internal attack, boss-ability, developer and cheat prefabs that technically expose ItemDrop data but are not real player inventory items.
- Added
[WH:IGNORE]as an explicit quarantine escape hatch: ignored containers are never scanned or cleaned by the safety filter. - Fixed persistent automatic labels becoming associated with a merely nearby chest while their originally linked chest was temporarily unloaded.
- Validated blank automatic assignment and routing against a 1,081-prefab laboratory run, followed by a physical per-container inventory audit.
1.1.0 - 2026-09-18
- Added maintained English and German interface localization.
- Added global
Languageconfiguration and per-warehouseLANG=overrides. - Added external JSON translation files with English fallback and a generated template.
- Added English and German item-name lookup for deposits, requests and target stock.
- Automatic chest labels now follow the selected warehouse language while manually written signs remain untouched.
- Existing linked automatic labels are migrated safely when their origin can be identified.
- Fixed target-stock shopping lists overwriting newly entered withdrawal requests and their result messages.
- Preserved server-side request transfers and automatic labels across restarts.
1.0.0 - 2026-09-18
- First public release candidate.
- Server-only sorting from one input chest into nearby storage containers.
- Safe multi-player input ownership and open-container protection.
- Output requests by German, English or internal item name.
- Persistent multi-item target stock lists with coloured status.
- Interactive rotating 4x4 stock board with filters, pages and sleep mode.
- Delivery confirmation and changes-since-last-visit display.
- Capacity warnings and live warehouse information signs.
- Persistent automatic labels for homogeneous storage chests.
- Administrative markers for ignoring containers and removing generated signs.