CrisHaani-ModerWarehouse icon

ModerWarehouse

Server-only multilingual warehouse for Valheim with sorting, requests, automatic labels, stock and rolling statistics boards.

Last updated 2 days ago
Total downloads 135
Total rating 0 
Categories Mods Server-side Utility
Dependency string CrisHaani-ModerWarehouse-1.2.1
Dependants 0 other packages depend on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2333 icon
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.2333
ArgusMagnus-ServersideQoL-2.0.10 icon
ArgusMagnus-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.10

README

Moder Warehouse 1.2.1

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: production test 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.

Moder Warehouse

Example of an expanded warehouse with statistics and stock boards

One possible expansion stage. The pictured chests are examples: Moder Warehouse works with every suitable vanilla storage container, not only the chest type shown here.

Requirements

Install on the dedicated server only:

  1. BepInExPack for Valheim 5
  2. ServersideQoL 2.0.10 or a confirmed compatible later version
  3. Moder Warehouse

BepInEx and ServersideQoL are separate dependencies and are not included. Clients do not need to install this mod.

Installation

  1. Stop the server and create a tested world backup.
  2. Install BepInEx and ServersideQoL from their official project pages.
  3. Copy ModerWarehouse.dll to BepInEx/plugins/ModerWarehouse/ModerWarehouse.dll.
  4. Start the server.
  5. Confirm Loading [Moder Warehouse 1.2.1] 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, warehouse centre and optional language selector
[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:main:STATS] bottom-left anchor of the automatic 4×4 statistics 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.

Internal and cheat-object safety filter

Moder Warehouse sorts only genuine player-handled items. Internal attack prefabs, boss abilities, developer weapons and cheated items are ignored in the player-facing IN chest and remain there for the player to remove. The mod never deletes or rewrites rejected IN contents. Valid items in the same IN chest continue to be sorted.

If the scanner finds a forbidden object in managed storage, it removes only that object; genuine items in the same chest remain untouched. An automatically labelled chest that becomes empty is released for normal use again.

If a genuine item is manually placed in the wrong labelled storage chest, housekeeping moves it to a matching labelled, homogeneous or free chest. It is never deleted. Every correction records item, amount, source and target in the server log. Open or currently used chests remain untouched until a later scan.

[WH:IGNORE] is the explicit quarantine mechanism. Excluded chests are neither scanned nor cleaned.

Valheim stores the persistent m_cheated marker on each individual item. When it is set, even an otherwise ordinary item such as wood or stone is denied sorting. Every scan checks this marker in addition to blocking internal and dedicated cheat prefabs.

Languages

English and German are maintained built-in languages. Set the server-wide default in ch.cris.valheim.moderwarehouse.cfg:

[Localization]
Language = English

Use English, German, en or de. A warehouse can override the server default by adding a second line to its IN sign:

[WH:main:IN]
LANG=DE

Changing LANG= updates the board, help, capacity, request, delivery and automatic chest-label text on the next scans. Physical signs are shared world objects, so one warehouse shows one language to every player. Manually written signs are deliberately never translated or rewritten.

Additional interface languages can be installed as JSON data files. See docs/TRANSLATING.md. Missing entries fall back to English. English and German item names are accepted for searches regardless of display language.

Input and automatic labels

Put unsorted items into the IN chest. Existing matching stacks are filled before empty slots are used.

To prepare a destination explicitly, place one item type into an otherwise unlabeled storage chest. Once the chest contains only that item type, Moder Warehouse recognises it as a destination for matching items. If AutoCreateLabels is enabled, it also gets a persistent white label after AutoLabelDelay (90 seconds by default).

For exact sign placement, attach and orient an ordinary vanilla sign yourself and set its complete text to .... Moder Warehouse reuses that sign instead of creating one. Ordinary storage labels and ... adoption signs must be within LabelDistance of the chest (one metre by default). The separate three-metre MarkerDistance applies to functional signs such as IN, OUT and REQ and is deliberately not used for dense racks. Automatically created labels are placed on the decorated oval front of vanilla chests; older server-generated back-side labels are migrated automatically. Player-built signs are never moved. The first automatic assignment records the underlying Valheim item token. From then on, the label follows LANG=/Language, even while the chest is empty. Do not use ... on a sign that should remain manually controlled.

Existing non-empty manual labels still reserve and route their nearest chest, but their text is never translated. Older automatic signs are migrated only when the mod can identify them safely; if an old label does not switch language, clear its text to ... once and let Moder Warehouse adopt it.

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. Keep the OUT chest closed while the server performs a request. The saved target-stock list returns after the result display time and never overwrites a fresh command.

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 G to filter and freeze the list.
  • Edit SEITE with a page number to hold that page.
  • Use both controls together when required.
  • Enter AUTO or 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.

4×4 statistics board

Place one vanilla sign as the bottom-left anchor and write:

[WH:main:STATS]

The server creates fifteen signs to the right and above. Four pages rotate automatically: today, a direct 7/30/90-day comparison, trends/forecast, and dated records. Metrics include deposits, withdrawals, balance, daily average, top items, current total, item types, current and average chest usage, peak/low stock, strongest trends, the item expected to run out first, and the input/output ratio.

Movement history is stored as compact daily aggregates on the anchor sign. Windows roll every day instead of resetting at the start of a month. Data older than 90 days is automatically removed, so storage cannot grow forever. Player identities are not recorded. Forecasts are simple flow projections, not guarantees. The statistics board uses the same wake distance and sleep behaviour as the stock board.

Two cells are interactive: edit PERIOD to any whole number from 1 to 90, and edit PAGE to 1, 2, 3 or 4. The server restores its rendered text after reading the command. A separate control sign is created below the board and accepts combined commands such as 27 TREND, 30 3, TODAY OVERVIEW or AUTO. German commands such as 27 TREND, HEUTE UEBERSICHT and VERGLEICH are accepted too. Manual selection returns to normal page rotation after 60 seconds without another input. Forecasts remain marked as insufficient until a useful data basis exists.

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].

Tested limits and performance

Moder Warehouse 1.2.1 supports up to 1,081 simultaneously loaded storage chests per warehouse inside the configured radius. This is the practically validated and supported ceiling for this release. There is no artificial shutdown at chest 1,082, but larger warehouses are untested and are not claimed as supported.

MaxMovesPerCycle = 250 is not a chest limit. It limits stack transfers in one processing cycle so a large delivery cannot monopolise the server; remaining work is continued in later cycles. Chests are scanned every three seconds by default and after relevant changes. Very large warehouses need time after arrival for Valheim to load the surrounding zones and for ServersideQoL to register every chest. In the 1,081- chest stress test this took roughly 10 to 15 seconds. This is an observation, not a guarantee; hardware, network and world state affect it.

Validation performed for 1.2.0

  • construction and registration of 1,081 chests inside one 100-metre warehouse
  • a complete one-item-per-chest run followed by a physical audit of every chest for empty, mixed or multiple-slot destinations
  • automatic assignment of blank chests and prepared fixed-label routing
  • German/English displays, search names and mod-managed automatic labels
  • ambiguous names such as Stein/Bernstein, Holz/Edelholz, and identical English display names backed by different internal items
  • statistics board, period controls, sleep/wake and rolling 90-day retention
  • open-container protection and processing after the container is closed
  • legitimate IN sorting, passive retention of cheated IN items, managed-storage cleanup and unchanged cheat quarantine through [WH:IGNORE]
  • server restart, persistent labels and restoration from a verified world backup

The stress test intentionally used a private laboratory helper. That helper and its test objects are not included in the public package. The number 1,081 describes tested chests, not 1,081 officially playable Valheim items.

Configuration defaults

Setting Default Meaning
Enabled true enable warehouse processing
Language English default interface and automatic-label language
Radius 100 storage radius around the IN chest
MarkerDistance 3 maximum sign-to-chest distance
LabelDistance 1 maximum storage-label or ... sign 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.2.1].
  • 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.
  • Automatic label stays in the old language: only mod-managed labels are rewritten. Manual signs stay untouched. Replace an old automatic label's text with ... once to let the mod adopt it safely.
  • 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.