SorosQualityOfLife
Co-op QoL: Production Chests (Input/Output, + Reinforced) feed and empty stations, Transfer Chest, Craft Totem (craft from chests), full-duration food, Recycle tab, shared chests, animal feeding, fuel-free lights. AI-assisted.Soro's Quality of life mod
⚠️ AI disclosure
This mod was developed with the help of an AI assistant and has had limited in-game testing so far. Please back up your world and report any problems.
BepInEx 5 mod for Valheim (GUID soro.qualityoflife, DLL SorosQualityOfLife.dll).
Install it on every player's game, including the host. When you're connected to a host, the host's config values are used. Clients keep their own file but ignore it while connected.
Install: copy SorosQualityOfLife.dll into BepInEx\plugins\. Config file: BepInEx\config\soro.qualityoflife.cfg.
Features (each can be switched off in the config)
1. Production Chest and Reinforced Production Chest (hammer → Misc, need a Workbench)
- Production Chest: cloned from the wood chest, costs 10 Wood + 2 Resin.
- Reinforced Production Chest: cloned from the reinforced chest, so it has the larger inventory, costs 10 Fine Wood + 2 Iron. It works exactly like the Production Chest.
Regular chests are never touched. Each Production Chest (either size) has a role, chosen in its window (default: Input):
- Input pushes its contents into nearby stations: ore, wood, raw food, mead bases and fuel.
- Output takes finished products from nearby stations: bars, coal, cooked food, mead, honey, sap and so on.
- Custom name: type a name (up to 30 characters) in the field at the top of the Settings panel and press Save or Enter. It shows in the hover text, e.g.
"My Coal Chest" (Production Chest), and as the chest window title. Leave it empty for the default name. Formatting tags are removed. While you type, game controls and hotkeys are paused. - The role and station type are saved on the chest, so every player sees the same setting. Hovering over the chest shows both.
- Upgrading from 1.0.8 or older: old Input (Feeder) and Output (Collector) chests are converted automatically into Production Chests when their area loads. They keep their contents and station setting; Feeders become Input and Collectors become Output. (Old chests were not shown in 1.0.9–1.0.12, but they come back with 1.0.13 if the world still has them.) Converted Input chests start with feeding paused, so their stored items aren't pushed into nearby stations right away. Open the chest, press Settings and click Resume feeding when you're ready.
- Open the chest and press the Settings button (next to "Place stacks") to show the picker panel. It starts closed and closes with the chest. In it you choose the role (Input/Output) and the station type: All, Smelter, Blast Furnace, Kiln, Eitr Refinery, Fermenter, Beehive, Sap Collector, Cooking Station, Oven, Windmill, Spinning Wheel, Fuel, and Animal Feeding (Input only). Modes that don't apply to the current role are hidden. Chests set to the old combined "Windmill/Spinning Wheel" option keep serving both until you pick a new option.
- Fuel mode (Input only) refuels every fuel-burning station in range with whatever fuel each one accepts: campfires, hearths, smelters, kilns, furnaces, ovens and hot tubs. It doesn't put in ore or food.
- "All" means every station type, but not animals.
- Range: each chest has its own range, set with the slider in its Settings panel (1 m steps). It goes from 5 m up to the host's
Max Rangeconfig (default and limit 30 m). Saved values are always kept within 5–30 m. Chests without their own value use theRangeconfig (default 10 m). The value is saved on the chest and applies to feeding, collecting, fuel and animals. - Co-op safety:
- Only the player who currently "owns" the chest in the network runs it.
- Input chests only feed stations and animals owned by the same player, and each item is checked: if the station doesn't accept it (full, wrong item, not lit), the item goes back into the chest. Items are never used up without the station taking them.
- Each station has its own cooldown.
- If the first Output chest is full, items go to the next Output chest in range. If none has room, they drop at the station, so nothing is lost.
1b. Transfer Chest (hammer → Misc, needs a Workbench, 10 Wood + 2 Resin + 1 Bronze)
- A wood-chest-sized chest that always works as Output, so it has no role selector. It collects products from stations in range like an Output Production Chest.
- It has the same Settings button, station-type picker, custom name and range slider. Its slider goes from 5 to 50 m.
- Target chest name: set it in the Settings panel. The chest regularly moves its contents into the chest(s) with that custom name (any Production, Reinforced Production or Transfer Chest), matched case-insensitively and trimmed.
- Targets must be within 50 m of the Transfer Chest and in a loaded area. It never transfers to itself.
- If no target is found or the targets are full, the items stay in the Transfer Chest.
- Hovering shows
→ "target name"and the status: ready, ready but nothing to move, target not found, or target full. - Co-op: only the chest's owner moves items. Items going to a chest owned by another player are handed over through that chest's owner, and anything that doesn't fit is sent back, so nothing is duplicated or lost.
- Don't point two Transfer Chests at each other, or items will move back and forth.
2. Animal feeding
A Production Chest (either size) in the Input role set to Animal Feeding feeds hungry tamed animals in range. It also feeds hungry wild tameable animals, so they tame by themselves. Each animal only gets food it accepts. Only animals owned by the same player as the chest are fed, so the game's normal "ate food" logic runs right away and no food is wasted. Vanilla taming still requires a player to be nearby and the animal to be calm.
3. Full-duration food
Food gives its full health, stamina and eitr until it runs out.
4. Recycle tab
At a crafting station, a Recycle tab appears next to Craft/Upgrade. It lists items you can recycle and what you get back. The default return is 100% and can be changed. By default you must be at the item's own station and level. It only changes your own inventory.
5. Multi-user chests
Up to 3 players (configurable) can have the same chest open at once. Only the chest's network owner changes its contents. Other players' clicks are sent to the owner as take/put requests. Items are always removed from one side before they're handed to the other, so they can't be duplicated. If an item doesn't fit, it's returned or dropped.
- Supported for other players: click to take, Shift-click to take half, drop an item onto a slot, Ctrl/Shift-click to move from your inventory, and Take All.
- Stack All is only available to the first player using the chest.
6. Craft Totem (hammer → Misc, needs a Workbench, 10 Wood + 10 Stone + 2 Greydwarf Eye)
Inside its radius (default 50 m, configurable), crafting and building can use materials from accessible player-built chests in range. Carts, ships and warded chests you don't have access to are excluded. Recipes and build pieces count your inventory plus all those chests. When you craft or build, the shortfall is taken from the chests instantly: chests you own are used first, and other players' chests remove the items through their owner. There's no waiting and no second press.
7. Lights need no fuel
Torches, sconces, braziers, lanterns, lamps and candles stay lit forever. Campfires, hearths, kilns, smelters, furnaces, ovens and other stations still use fuel. Only the light's network owner writes the fuel value.
Support
If you enjoy the mod and want to support its development: Patreon
Building from source
dotnet build -c Release. Reference DLLs go in lib/ (public "publicized" reference packages). To build against your own game install, use -p:GameRefs=<folder>.
Credits & licences
- Multi-user chests are based on MultiUserChest (No-Chest-Block) by MSchmoecker, used under the MIT licence:
MIT License
Copyright (c) 2022 Maximilian Schmöcker
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- Fuel-free lights are based on TorchesEternal (WTFPL). Thanks to its author.
- Craft Totem (crafting/building from chests) is inspired by aedenthorn's CraftFromContainers (public domain). Thanks, aedenthorn.
- All other features are original code.
