You are viewing a potentially older version of this package. View all versions.
MilkyTeam-OpenKeep-0.1.0 icon

OpenKeep

Craft from chests, quick stack, sort, trash, salvage, stack sizes, chest sizes, carts as workbenches. Open source, server synced.

Date uploaded 2 weeks ago
Version 0.1.0
Download link MilkyTeam-OpenKeep-0.1.0.zip
Downloads 71
Dependency string MilkyTeam-OpenKeep-0.1.0

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2350 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.2350

README

OpenKeep

Storage and inventory for Valheim in one mod: craft, build and feed stations straight from nearby chests, ship holds and carts; quick stack, restock, sort, route and trash from the inventory panel; a Salvage tab that gives materials back; stack sizes and weights; bigger chests with their contents on hover; and carts that carry a workbench. Every gameplay setting is server synced and lockable, every hotkey is per player, and everything is tunable in the config file and five YAML files that hot reload. Convenience features are on by default; anything that changes balance (stack sizes, weights, chest sizes) defaults to vanilla.

Reach: craft from storage

  • Wherever the game counts what you carry (crafting rows, the craft and upgrade buttons, the hammer's piece list and requirement rows, station hover texts) it now counts your inventory plus every reachable container.
  • Paying takes from the inventory first, then from containers nearest first. The requirement rows show 3 + 12 (inventory plus storage, storage in its own colour), or the total, or the vanilla number (Requirement Display), and flash once after a pull.
  • Stations: use a smelter, kiln, blast furnace, spinning wheel, windmill, campfire, torch, hot tub, cooking station, oven or fermenter with nothing to add in your inventory and one unit comes from the nearest container. Hold Fill Modifier (Shift) to fill it up, hold Pull Modifier (Alt) to move a stack into your inventory instead. Hover texts get a From storage: n line.
  • A reachable container has the game's Container component and is within Range (20 m by default), passes the game's own privacy and ward checks, and is not open by another player (see "Shared chests"). Detection is by component, never by a name list: any object with a container is a container, it is a ship when it carries the game's ship component and a cart when it carries the cart component. Vanilla ships (Karve, Longship, Drakkar), modded ships and modded chests are all found the same way. Standing on a moored ship you craft, build and feed stations from its hold; the ship and cart switches are in section 0. Containers.
  • Toggle Key (Alt + R) switches the whole module off for your character; Link Key (Alt + L) draws lines from every container in range to the stations it serves, and placing a chest draws them too.

Stow: quick stack, restock, sort, trash, route

Buttons under the player grid (Quick stack, Store all, Restock, Sort, a trash can) and a Sort button under the open container. Every action also has a hotkey that works while the inventory is open.

  • Quick stack moves every stack whose item the open container (or, with Quick Stack Nearby, any container within Nearby Range) already holds. Store all moves everything that may move into the open container. Restock tops up every stack in your inventory from the containers. Sort orders by Category, Name, Weight or Value; the hotbar, favourite slots and equipped items stay put; stacks merge.
  • Favourite item (F): the item is never quick stacked, stored, dumped, trashed or salvaged. Favourite slot (Shift + F): the slot's content never moves. Trash flag (X): Trash Flagged (Shift + Delete) destroys every flagged stack; Trash Key (Delete) trashes the hovered stack. Both ask first with the game's popup.
  • Route (Ctrl + click) sends a stack to the nearest container that holds the item, an item of its group, or accepts it in OpenKeep.Stow.yml. Store one (middle click) moves one item. Find (Z) marks every nearby container holding the hovered item with a line and a count. Dump (Alt + D) quick stacks from outside the inventory. Left and right arrows or the mouse wheel over the container grid cycle through the chests around you.
  • Ground pickup (off by default): containers whose prefab has pickup: true in the YAML pull dropped items from the ground after Pickup Delay seconds, only items they already hold unless the YAML says otherwise.

Favourites and flags are saved with the character and follow it between worlds.

Salvage

A third tab, Salvage, after Craft and Upgrade. It lists every stack in your inventory that has a recipe; select one and the requirement rows show what comes back, the craft button reads Salvage. Returns are Return Fraction (0.75) of each material, rounded, at least one, upgrade materials included; never more than the item cost. Trophies, quest items, favourites and items excluded in OpenKeep.Salvage.yml are not listed. Salvage Key (Backspace) salvages the hovered stack after confirmation. If the materials do not fit, nothing happens.

Stacks: stack sizes and weights

Stack Multiplier and Weight Multiplier (both 1 by default) scale every item; OpenKeep.Stacks.yml sets absolute values per item, pattern or group. Values show in tooltips before an item is ever moved. Ignore Teleport Restriction lets everything through portals. Merge Into Chests fills a chest's partial stacks when you drag a stack in. Per Item Config Entries generates one stack and one weight entry per item into the config file for Configuration Manager users. Write Documentation writes OpenKeep.Items.txt (every item, prefab name, vanilla and current values) and OpenKeep.Containers.txt (every container prefab and its size) next to the cfg.

Capacity: container sizes and hover contents

OpenKeep.Containers.yml is filled with every container prefab of your game (modded ones included) and its vanilla size the first time a world loads, all commented out; uncomment a line and change the numbers to resize new and existing containers of that prefab. Hovering a container shows how full it is and up to Hover Lines lines of contents.

Carts as workbenches

Cart Workbench (off by default) gives every cart a workbench: craft (Shift + E on the cart), repair and build within Cart Station Range as if a workbench stood there, no roof needed. Cart Station Level sets its level; workbench extensions near the cart add to it.

Shared chests: several players in one chest

The game gives a chest to the player who opened it and refuses everyone else while it is in use. Shared Chests in section 0. Containers (default Off) changes that:

  • Off: as the game: a chest someone else has open is skipped by every OpenKeep action and refused when you interact with it.
  • View: interacting with a chest another player has open shows its contents read-only, titled Chest (in use by <player>), refreshed as they change; when the other player closes it your panel turns live without closing.
  • Full: as View, and two people can work the same chest at once. Click, drag and drop, the split dialog, Take all and Stack all send a request to the chest owner's game, which applies it or refuses it; nothing is moved on your side until it says yes, so if both of you grab the same stack exactly one gets it and the other sees Someone else got there first. A slot the other player pressed the mouse on is tinted (Touch Colour) and its tooltip says <name> is moving this. A request without an answer after Request Timeout (2 s) counts as refused: The chest did not answer.

OpenKeep's own quick stack, store all, restock, routing, store one, dump and trash work into a shared chest the same way; the message for such a chest arrives when its answer does (Moved n stacks to Chest). Sorting a chest someone else is using is refused. Crafting, building and station feeding never count or pay from a chest another player is using, whatever the mode, so a requirement is never shown as covered by an item the other player may take first. Both players need the mod; a player without it gets the game's usual refusal.

Hotkeys (per player, not synced)

Setting Default Does
1. Reach / Fill Modifier LeftShift held while using a station: keeps adding until it is full
1. Reach / Pull Modifier LeftAlt held while using a station or clicking Craft: materials move into the inventory instead
1. Reach / Toggle Key LeftAlt + R Reach on or off for this character
1. Reach / Link Key LeftAlt + L draws the container to station lines for Link Seconds
2. Stow / Quick Stack Key Q quick stack
2. Stow / Store All Key G store all into the open container
2. Stow / Restock Key R restock from containers
2. Stow / Sort Inventory Key T sort the player inventory
2. Stow / Sort Container Key Y sort the open container
2. Stow / Favourite Item Key F hovered item becomes a favourite
2. Stow / Favourite Slot Key LeftShift + F hovered slot becomes a favourite
2. Stow / Trash Flag Key X hovered item is flagged as trash
2. Stow / Trash Key Delete trash the hovered stack
2. Stow / Trash Flagged Key LeftShift + Delete trash every flagged stack
2. Stow / Route Modifier LeftControl with a left click: route the stack
2. Stow / Store One Key Mouse2 (middle) one item to the open or nearest holding container
2. Stow / Find Key Z mark every nearby container holding the hovered item
2. Stow / Dump Key LeftAlt + D outside the inventory: quick stack to every nearby container
2. Stow / Cycle Previous Key, Cycle Next Key LeftArrow, RightArrow switch to the previous or next chest around you
3. Salvage / Salvage Key Backspace salvage the hovered stack

Single keys only fire while the inventory is open and no Shift, Ctrl or Alt is held, so F and Shift + F never clash.

Config file

BepInEx/config/milkyteam.openkeep.cfg, written on first start. Sections: 0. Containers (Ships, Carts, Player Chests, Honour Wards, Shared Chests), 1. Reach, 2. Stow, 3. Salvage, 4. Stacks (plus 4a. Item Stacks and 4b. Item Weights when per item entries are on), 5. Capacity, 6. Carts, 9. Shared (Request Timeout, Touch Seconds; per player Show Touches, Touch Colour), and General / Lock Configuration. Every entry has a description in the file. Gameplay settings are synced from the server and locked; keys, display formats, confirmations, sort orders and colours are yours.

YAML files

Next to the cfg, created on first start, hot reloaded a few seconds after a save, synced from the server, and editable in game through the Configuration Manager entries Edit YAML. Extra files named OpenKeep.<Module><anything>.yml are merged in. Every list uses the same vocabulary: Wood (prefab name or $item_wood), prefix:Trophy, suffix:Ore, type:Material, group:Ores (a group of the file's groups: map), * (everything). Container keys are prefab names; OpenKeep.Containers.txt lists them all.

OpenKeep.Reach.yml: which containers Reach may use, per prefab range and item lists.

# range: 20
groups:
  Ores: [prefix:CopperOre, TinOre, IronScrap, SilverOre, BlackMetalScrap, FlametalOre]
containers:
  piece_chest_private:
    enabled: false
  Cart:
    range: 10
  VikingShip:
    deny: [type:Trophy]
  piece_chest_blackmetal:
    allow: [group:Ores, type:Material]

Ground pickup is off unless Ground Pickup is on in the config and the chest prefab has pickup: true in the YAML; it is a world tick that runs on the chest owner's client, so turn it on deliberately.

OpenKeep.Stow.yml: groups for routing and the ground pickup rules.

groups:
  Ores: [prefix:CopperOre, TinOre, IronScrap, SilverOre, BlackMetalScrap, FlametalOre]
containers:
  piece_chest_blackmetal:
    pickup: true              # takes items from the ground (needs the cfg Ground Pickup switch)
    accept: [group:Ores]      # taken and routed here even when the chest does not hold them yet
    refuse: [type:Trophy]     # never taken, never routed here

OpenKeep.Salvage.yml: what is never salvaged and per item fractions.

exclude: [type:Trophy, prefix:MeadBase]
overrides:
  SwordIron: { fraction: 1.0 }

OpenKeep.Stacks.yml: absolute stack sizes and weights; the multipliers here replace the cfg ones.

stack multiplier: 2
items:
  Wood: { stack: 100 }
  Stone: { stack: 100, weight: 1.0 }
  group:Ores: { weight: 5 }

OpenKeep.Containers.yml: container grid sizes.

containers:
  piece_chest_wood: { width: 8, height: 4 }
  VikingShip: { width: 8, height: 3 }

Console command

openkeep reload reloads the cfg and every YAML file (admin or host on a server). openkeep containers lists the reachable containers around you with prefab name, distance and item count. openkeep write docs writes OpenKeep.Items.txt and OpenKeep.Containers.txt.

Install

  1. Install BepInEx for Valheim.
  2. Install this mod. On a server, install it on the server and on every client.

For manual install, drop OpenKeep.dll into BepInEx/plugins. The config file and the YAML files are created on the first run. A server pushes its gameplay settings and YAML files to every client; with Lock Configuration on (the default) clients cannot change them while connected.

Warnings

  • Items in the extra rows and columns of an enlarged container are invisible to players without the mod and to the vanilla game. Everyone on a server should run the same container sizes.
  • Lowering a stack multiplier or an absolute stack size, or removing the mod, loses the part of a stack above the new maximum when the inventory that holds it loads. Split large stacks before lowering a limit.

Building

Requirements: .NET SDK 8, Valheim installed with BepInEx, and the ValheimModLibs folder next to this one. pack.ps1 builds the mod and creates a Thunderstore zip in thunderstore/.

dotnet build OpenKeep/OpenKeep.csproj -c Release

Bugs and feature requests

The source is open, at the repository linked from the store page (website_url in thunderstore/manifest.json): https://github.com/geraldjglasgow/ValheimMods. Found a bug or want a feature? Open an issue at https://github.com/geraldjglasgow/ValheimMods/issues and name the mod, its version and what happened.

License

MIT. Copy it, change it, build on it, ship it, free of charge. The only condition is keeping the copyright and license notice from the LICENSE file.

CHANGELOG

Changelog

1.12.0

  • Homestead: choose your bed after death (Bed Choice Seconds, 30). With two beds or more, dying opens the map with all your beds on it, the nearest pulsing, and a countdown in the map's upper right corner. Click a bed to wake there; when the countdown ends you wake in the bed nearest to where you died. The map key or Escape takes the nearest at once. 0 turns the map off (always the nearest).
  • Every bed you own shows on your map with the game's bed icon, not only the last one you slept in (Beds On Map, on, your own choice).
  • Quick respawn (Quick Respawn, on): the closer to where you died you wake, the sooner you wake. The game's 18 seconds (10 of waiting, 8 of loading) shrink with the distance to the bed, or to the world start without one: about a second right beside it (Quick Respawn Seconds), the full wait at Quick Respawn Range (1000 m) and beyond. Clicking a near bed on the map wakes you at once.
  • Stand up on respawn (Stand Up On Respawn, on): after a death you wake standing and can move at once, instead of the game's getting-up animation. Logging in keeps the game's.
  • Quick portals (Quick Portals, on): the closer together two portals are, the quicker the jump, from half a second for portals side by side (Quick Portal Seconds) to the game's 8 seconds at Quick Portal Range (10000 m): about 0.7 s for 250 m, 1.2 s for 1 km. Every long jump counts (the game's portals, Wayfare, the console's goto); dungeon doors are left alone. On a server you never land before the server has sent what is around the far portal, and never wait longer than the game's 8 seconds.
  • A jump to a place already loaded around you keeps the screen clear, no black screen and no teleport swirl; farther jumps show the game's screen while the area loads (Portal Screen Only When Loading, on, your own choice).
  • Quick area loading (Quick Area Loading, on, your own choice): after a long jump and while you wait to respawn, the land and everything on it load as fast as your PC allows instead of the game's slow steady pace. With a high simulation distance a 1 km jump went from about 11 seconds to about 2.

1.11.0

  • OpenKeep leaves the inventory's look alone: the game's armour and weight readouts stay exactly as the game draws them (the brown boxes are PackPanel's), and the trash can is a plate in the game's own style under the armour, showing a bin and "Trash". It sits where trash can mods put theirs, so Jewelcrafting shows it while you drag a stack (its synergy box takes the spot otherwise), CurrencyPocket and OttoPay move it along with the armour, and TrashItems makes no second can. Trash Can On Stat Column off still puts the can in the button row.
  • The trash can no longer stays red after a click.

1.10.0

  • Fixed: since 1.8.0 OpenKeep broke Jewelcrafting and every other mod that adds a box beside the game's armour box (CurrencyPocket, OttoPay, TrashItems, Quick Stack Store Sort Trash Restock). The stat column moved the game's armour and weight boxes into a container of its own, and those mods look for them on the inventory panel by name. Jewelcrafting then threw an error on every item picked up, every inventory close and every input device change, and a chest closed that way stayed in use. The game's boxes now stay where the game has them and are placed in the column from there (GitHub #4, #5).
  • The boxes those mods add join the column instead of covering one of its boxes: Jewelcrafting's synergy box right under the armour, a trash can next to OpenKeep's (TrashItems' takes dragged stacks there), the coin pocket between the armour and the weight.
  • Stow: Trash Can On Stat Column (on, per player). Off puts the trash can at the end of the button row, and OpenKeep then leaves the game's armour and weight boxes exactly as the game has them, for inventory mods that place their own boxes there. Takes effect the next time you enter a world.

1.9.0

  • Homestead: Auto Repair (on): opening a workbench, forge, black forge, galdr table, artisan table or any other station with the game's repair button repairs every item in your inventory that this station can repair at its current level, what you wear included, as if you pressed its repair button once for each: the same items (a forge item waits for a forge, an item needing a higher level waits for the extensions), the same Crafting skill gain, no cost. One repair sound and one message, Repaired 3 items; nothing when nothing needed repair. A cart with Cart Workbench on repairs like a workbench. Synced; off leaves only the game's button.
  • Stow: a full chest no longer stops a stack. Ctrl + click and Store one (V) send what the chosen container has no room for on to the next nearest container that holds the item, and the next, until the stack is gone or none is left within Nearby Range: Sent Wood to Chest and 1 more. A stack routed to a chest only for its group or its accept list still stays in your inventory when that chest is full.
  • Stow: with Shared Chests = Full, what a chest another player has open had no room for after a quick stack or dump goes on to the next nearest chest holding the item, with a line in the top left saying where; before, it stayed in your inventory.
  • Stow: ground pickup leaves each drop to one chest: a chest already holding the item before one that only accepts it, then the one nearest to the drop, and the next when that one is full. Before, whichever chest swept first took it. A kiln's coal or a smelter's bars dropped at the station's output go into the nearest pickup chest holding them.
  • Reach: a unit borrowed from a chest for a station that the station did not take goes back to the nearest chest holding that item, before other chests that accept it.

1.8.0

  • Batch crafting: the Craft tab of every crafting station (and crafting by hand) has - and + buttons with the amount between them, left of the Craft button; Craft makes that many at once, in one bar, through the game's own multi-craft, so each item costs, earns skill and rolls the crafting bonus as if crafted alone. Click the number to type an amount. Shift steps by tens, Ctrl jumps to 1 or to as many as you can make, the D-pad steps on a gamepad. The amount stops at your materials (nearby chests count with Reach), your free space and Max Amount (100), and goes back to 1 when you pick another recipe. Not on the Upgrade or Salvage tab. It takes the place of the game's Shift + Craft (5 at once), which Enabled = false brings back. New section 10. Batch Crafting (Enabled, on; Max Amount), both synced. Reach's Pull modifier + Craft pulls materials for the whole batch.
  • Works with PackPanel, the new inventory mod (a bigger grid, labelled armour, utility, food, mead and ammo slots, a coin purse, a key ring and backpacks): with both installed, the button row and the trash can sit inside the inventory panel, quick stack, store all, dump, sort and a shared chest's stack all use PackPanel's whole grid and never touch its slots or key ring, and PackPanel's Key Stack is written with OpenKeep's stack sizes, so an OpenKeep.Stacks.yml entry for a key still wins. Neither mod needs the other.
  • Stow: Shift + click on the trash can starts trash mode: the pointer becomes the trash can and every stack you click in the inventory or the open chest is destroyed at once, with no popup even with Confirm Trash on (favourites and worn items are kept); let go of Shift to stop. A click without Shift still destroys a dragged stack.
  • Stow: the trash can's plate sits right under the armour plate, so a plate another mod adds to the column goes below it.
  • Hotkeys with a modifier (LeftAlt + D and the like) now fire while you walk; before, holding any other key (such as W) blocked them.
  • Homestead: tamed animals eat from chests (Pets Eat From Chests, on; Pet Chest Range, 10 m): a hungry tame walks to a container within range that holds food it eats and eats one item, as it would from the ground. Food on the ground still comes first, and animals still being tamed eat only from the ground. The containers: rules of the Reach YAML apply, as for fires.
  • Homestead: Auto Feed Leave (1): stations that feed themselves leave that many of each item in every chest, so a chest keeps its last ore, wood or coal and quick stack still sends that item to it. 0 takes everything, as before; feeding a station by hand is not limited.
  • Homestead: Auto Feed Range is 4 m by default (was 2 m), so chests a step away from a station feed it too. An existing .cfg keeps the value it has.

1.7.0

  • Capacity: OpenKeep.Stations.yml sets how much each workstation holds: items: (ore, wood, flax, barley) and fuel: (coal, wood) for the smelter, blast furnace, charcoal kiln, eitr refinery, spinning wheel, windmill, hot tub and every modded station built like them, from 1 to 1000. The first world load lists every station with its vanilla values, commented out. Synced from the server, hot reloaded, editable in game, and switched off with Capacity's Enabled. Lowering a cap loses nothing: a fuller station keeps working and takes more once it is below the cap. openkeep write docs also writes OpenKeep.Stations.txt.
  • Homestead: Auto Feed Stations (on): smelters, blast furnaces, charcoal kilns, eitr refineries, spinning wheels, windmills and hot tubs you built take what they work (ore, scrap, wood, soft tissue, flax, barley) and their fuel (coal, sap, wood) from the containers beside them, one item and one fuel a second while there is room. Auto Feed Range (2 m) runs from the station's outer edge to the middle of a container. Auto Feed Skip names items never taken (default FineWood, RoundLog, so the charcoal kiln burns only plain wood). The stations: and containers: rules of the Reach YAML apply, as for fires.
  • Homestead: Rested Delay (5 s): the Rested buff comes after 5 seconds of resting by a fire instead of the game's 20. How long it lasts, the comfort level and what counts as resting are unchanged; 20 keeps the game's wait.
  • Homestead: Area Repair (on): repairing a piece with the hammer also repairs the damaged pieces touching it (only its direct neighbours, at most 64 a swing), each with the checks of a repair by hand (its crafting station in range, access to its ward). One swing's stamina and hammer wear pays for all of them.
  • Homestead: Torch Switch Key (O, per player): look at a torch and press it to keep that torch lit day and night; press it again to put it back on the night schedule (by day it goes out at once). The hover shows the key and what it does, the choice is stored in the torch for every player, and a ward keeps out players without access.
  • Homestead: Torch Margin (1 in-game hour, 0 to 4): torches light that long before nightfall and go out that long after daybreak. An in-game hour is 75 seconds of the game's 30 minute day; 0 keeps the game's own night.
  • Homestead: Auto Fuel skips fuel from a lower world level (New Game+), which the game refuses by hand too.

1.6.0

  • Homestead: new section 8. Homestead, synced from the server.
  • Homestead: Nearest Bed Respawn (on): every bed you own is a spawn bed. After death you wake in your own bed nearest to where you died, or the next nearest when that one is gone or no longer yours. Any of your beds lets you sleep (the hover says Sleep instead of Set spawn point). Beds claimed before this version count once you have been near them.
  • Homestead: Build On Wood (default fire_pit): campfires can be built on wooden floors. The list takes the other pieces the game keeps off wood too (bonfire, smelter, charcoal_kiln and more); empty keeps the game's rule. In the Ashlands, or with the Fire world key, the campfire's embers can set the floor alight.
  • Homestead: Honey Per Day sets how much honey each beehive makes per in-game day (0, the default, keeps the game's 1.5 a day); Honey Per Player Online makes it the number of players on the server. A hive still holds at most 4.
  • Homestead: Auto Fuel (on): campfires, hearths, braziers, torches and every other fire you built refill themselves with their own fuel (wood, resin, coal, guck, greydwarf eyes) from containers within Auto Fuel Range (20 m) of the fire, a unit at a time as they burn; the stations: and containers: rules of the Reach YAML apply.
  • Homestead: Torches Night Only (on): the standing torches and the sconce light at nightfall and go out at daybreak, saving their fuel; Torch Pieces lists which fires (braziers, lanterns and the resin candle can be added). A torch out for the day says Lights at nightfall. Turn it off before removing OpenKeep: the game has no switch to light them again.
  • Stow: the tooltips of the armour, trash and weight plates (and Elite Creatures Reborn's world tier plate, once that mod is rebuilt with this version of the plate column) show in a dark box with a gold border, pinned just right of the plate instead of following the mouse.
  • Stow: ground pickup's Pickup Range defaults to 2 m instead of 10. A config written by an earlier version keeps the value it saved: set it to 2 there.

1.5.0

  • Stow: the armour, trash and weight plates on the right of the player panel each show a tooltip on hover saying what they are.
  • Stow: the plates are one column other mods can add to. With Elite Creatures Reborn 3.8.0 its world tier plate sits under the weight, and all four move up and stay evenly spaced.

1.4.2

  • Stow: quick stack, store all and dump leave the hotbar alone, as the sort always has. Items on the hotbar stay there; Store one, Ctrl + click routing and the trash still act on a hotbar item you pick, and top up still refills stacks there.

1.4.1

  • The openkeep signs and openkeep write docs console commands call the Signs and Stacks code directly instead of looking it up by name through reflection. No change in behaviour.

1.4.0

  • Stow: quick stack, store all, dump and sort only work on the rows of the player inventory that the game gives you (four, more once bought from the trader). Mods such as ExtraSlots keep their equipment, food and ammo slots in rows below those: these actions no longer empty them into chests, and the sort no longer pulls items out of them or fills them. Top up still refills the stacks there.
  • Stow: new per-player setting Main Inventory Rows (0: the game's rows). Set a number when a mod adds ordinary inventory rows that should be stowed and sorted too.
  • Stow: the trash can moved off the button row onto its own wood plate, with a new icon, between the armour and weight readouts on the right of the player panel. The row below the panel is now four buttons and re-centred.
  • Stow: the armour and weight readouts show their icon larger and centred on the plate, with the number on top, and both stay where they are when the inventory grows with rows bought from the trader.
  • Stow: Confirm Trash now defaults to off, so the Trash Key, the trash can and Destroy Junk act at once. A config written by an earlier version keeps the value it saved: set it to false there to lose the popup. Turn it on to get the game's popup back.
  • Stow: the Stow all button is Store all again, next to Store one; Stow All Key is Store All Key and a cfg from 1.1.0 or 1.2.0 keeps its binding. The section 2. Stow and OpenKeep.Stow.yml keep their names.
  • Salvage: new synced settings Skip Items With Mod Data (on) and Mod Data Prefixes (ecf_). An item carrying custom item data under one of the prefixes — data another mod keeps on it, such as EliteCrafting's magic affixes — is no longer listed in the Salvage tab and the Salvage Key refuses it with a reason, so salvaging cannot destroy what that mod added. With EliteCrafting installed, OpenKeep salvages ordinary items into materials and EliteCrafting grinds its magic items into shards.

1.2.0

  • Reach: new stations: map in OpenKeep.Reach.yml — per station prefab enabled and allow / deny item lists for station feeding (interact, Fill, Pull and the From storage hover line). Deny a meat and it is never pulled onto the cooking station; crafting and building still see it. Unlisted stations behave as before.
  • Stow: new per-player setting Sort Favourite Items (on, the old behaviour). Off: the sort leaves favourite items where they are — for items kept in extra slots other mods add, which the sort used to pull into the main inventory.

1.1.1

  • Multiplayer: joining a busy server no longer fails with "you have no copy" when every player runs the same version. The join check raced the config push over the same connection and gave up after a single 5 s deadline; it now greets first, retries every 5 s and only refuses after 20 s without any answer.
  • Capacity: a container entry uncommented without its indentation (at the top of the file instead of inside containers:) is now applied anyway, with a warning explaining the indentation. Generated files comment entries as # piece_chest_wood: ... so removing the # keeps the indentation.

1.1.0

  • Stacks: config and YAML edits now reach items already picked up, items lying in the world and an open chest.
  • Server sync moved to Charter, our own library. Existing config files work unchanged.
  • Version mismatch refuses the join with a named reason and a code in both logs.
  • New console command charter: status, diff, versions.
  • Salvage: YAML key exclude renamed deny. A file still using exclude: warns once and its list is ignored.
  • Stow: keys renamed — Store All Key → Stow All Key (G), Restock Key → Top Up Key (R), Trash Flag Key → Junk Key (J), Trash Flagged Key → Destroy Junk Key (LeftShift + Delete). Store One Key now V. Existing bindings carry over.
  • Stow: junk marks move to OpenKeep.junk in character data. Marks from 1.0.0 are not read.
  • Stow: buttons moved below their panels so they never cover the last item row; new Button Row Offset.
  • Removed the unused Hover Preview and Cart Upgrade Piece settings.

1.0.0

  • First full release: the 0.2.0 build under its final version number, no code changes.

0.2.0

  • Signs: a vanilla sign above every player-built container naming its contents, most numerous first. Per-prefab switch, offset and rotation in OpenKeep.Signs.yml. Off by default. Edited signs keep your words; a sign removed with the hammer stays gone until reset. None on ships, carts, dungeon chests or spawned treasure.
  • Console: openkeep signs, signs reset, signs rewrite.

0.1.0

  • First release.
  • Reach: crafting, upgrading, building and station feeding count and pay from nearby containers, ship holds and carts. Fill and Pull modifiers, per-character toggle, link lines, per-container rules.
  • Stow: quick stack, stow all, top up and sort with hotkeys, favourites, junk marks and a trash can, routing by click, store one, find, dump, chest cycling, ground pickup by rule.
  • Salvage: a Salvage tab and hotkey; return fraction, rounding, upgrade materials, recipe and station requirements, per-item fractions.
  • Stacks: stack and weight multipliers, absolute values, ignore teleport restriction, merge into chests.
  • Capacity: container sizes per prefab, fill and contents in the hover text.
  • Carts: a workbench on every cart, with its own level and range.
  • Shared chests: View shows a chest another player has open, read-only; Full lets two players work the same chest, every change sent to the owner's game to apply or refuse.
  • Console command openkeep. Every gameplay setting synced and lockable, every YAML file synced and hot reloaded.