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.
OpenKeep
Craft from chests, quick stack, sort, trash, salvage, stack sizes, chest sizes, carts as workbenches, contents signs. Open source, server synced.
| Date uploaded | 3 days ago |
| Version | 1.6.0 |
| Download link | MilkyTeam-OpenKeep-1.6.0.zip |
| Downloads | 523 |
| Dependency string | MilkyTeam-OpenKeep-1.6.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.2350README
OpenKeep
Storage and inventory for Valheim in one mod: craft, build and feed stations straight from nearby chests, ship holds and carts; stow, top up, sort, junk and route from the inventory panel; a Salvage tab that gives materials back; stack sizes and weights; bigger chests with their contents on hover; carts that carry a workbench; a sign above every chest that names what is inside; and a few base tweaks: respawn at your nearest bed, campfires on wooden floors, honey per day, fires that refuel from nearby chests and torches lit only at night. Every gameplay setting is server synced and lockable, every hotkey is per player, and everything is tunable in the config file and six 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, holdPull Modifier(Alt) to move a stack into your inventory instead. Hover texts get aFrom storage: nline. Thestations:map inOpenKeep.Reach.ymlnarrows this per station prefab:denykeeps items out of the feeding (raw meat you want to keep raw, say),allowlimits it to a list,enabled: falseleaves a station entirely alone — crafting and building are untouched. - A reachable container has the game's
Containercomponent and is withinRange(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 section0. 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: stow, top up, sort, junk, route
A row of buttons just below the player panel (Quick stack, Store all, Top up, Sort), a trash can on its
own wood plate between the armour and weight readouts on the panel's right (those two show a larger icon behind
their number and stay put when the inventory grows; hover any of them for what it is), and a Sort button below the open container's panel, under
its Take all line; Button Row Offset moves the rows up or down if your screen layout needs it. Every action also has a hotkey that works while the inventory is open. The module is
one workflow for coming home with a full inventory. Open a chest and stow: quick stack (Q) moves every stack
whose item the open container (or, with Quick Stack Nearby, any container within Nearby Range) already holds,
and Store all (G) moves everything that may move into the open container; neither touches your hotbar. Then top up (R): every stack you
carry that is not full is refilled from the chests, so you leave with what you came with. Sort (T for the
inventory, Y for the container) orders by Category, Name, Weight or Value; the hotbar, favourite slots
and equipped items stay put and stacks merge; with Sort Favourite Items off, favourite items stay put too —
turn it off when another mod keeps items in extra slots the sort would pull out, and favourite those items. Quick
stack, store all, dump and sort work only on the rows the game gives you (four, more once you buy them from the
trader). Mods that add equipment, food or ammo slots keep them in rows below those, so these actions leave the
slots alone, and top up still refills the food and ammo there. If a mod adds ordinary inventory rows you want
stowed and sorted too, set Main Inventory Rows to the number of rows to use. What you never want to keep is junk: mark an item with J, and
Destroy Junk (Shift + Delete) destroys every junk stack in one go; Trash Key (Delete) destroys the hovered
stack and the trash can takes a dragged one, at once (turn on Confirm Trash for the game's popup first). What does not belong in
the open chest is routed: 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 (V) sends a single item; Find (Z) marks every nearby
container holding the hovered item with a line and a count; Dump (Alt + D) quick stacks to every nearby container
without opening the inventory; the left and right arrows or the mouse wheel over the container grid cycle
through the chests around you.
- Favourite item (
F): the item is never quick stacked, stowed, dumped, trashed or salvaged. Favourite slot (Shift + F): the slot's content never moves. Top up still refills favourites. - Ground pickup (off by default): containers whose prefab has
pickup: truein the YAML pull dropped items lying withinPickup Range(2 m) from the ground afterPickup Delayseconds, only items they already hold unless the YAML says otherwise.
Favourites and junk marks 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 on the deny list of OpenKeep.Salvage.yml are not listed. Nor are
items carrying another mod's item data (Skip Items With Mod Data, on; Mod Data Prefixes, default ecf_), so
salvaging never destroys affixes or other state a mod keeps on the item. Salvage Key (Backspace) salvages the
hovered stack after confirmation. If the materials do not fit, nothing happens.
With EliteCrafting installed: OpenKeep salvages ordinary crafted items into materials and leaves EliteCrafting's magic items alone; those are ground into shards by EliteCrafting's own Salvage key.
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.
Signs: what is in the chest, without opening it
Off by default (7. Signs / Enabled). When on, every container a player has built gets a real vanilla sign
floating just above it, facing the same way, that lists the contents most numerous first: Wood, Stone, Resin, Flint, or Wood 120, Stone 45 with Show Counts. The sign is rewritten within Update Seconds (2) of any
change by whoever owns the chest at the time, lists at most Max Items (4) kinds, never exceeds Max Characters
(50) and ends with an ellipsis when something was left out; an empty chest shows Empty Text (blank by default).
Height (0.1 m above the chest's top) and Rotation (degrees added to the chest's facing) move every sign;
OpenKeep.Signs.yml switches prefabs off and moves or turns the sign per prefab.
- Your own words win: edit a sign with
Eand the mod leaves it alone until you clear the text. - Removing a sign with the hammer means "no sign here": the chest gets none again, even after a reload, until
openkeep signs reset. A sign a troll smashes simply comes back. Automatic signs never crumble or rot: they need no support and no roof (player-placed signs are unchanged). - Removing the chest removes its sign. Ship holds, carts, dungeon chests and spawned treasure get no sign; the private chest gets one.
- The sign costs nothing, but it is the vanilla sign: removing it with the hammer returns one wood, so a removed
sign is a wood each. The signs are ordinary pieces of the world: every player sees them, they are saved with the
world, and they stay in the world when the mod is removed (they just stop updating). Switch
Enabledoff before removing the mod if you want them gone; the chest owners' games take every sign down as the chests load.
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, titledChest (in use by <player>), refreshed as they change; when the other player closes it your panel turns live without closing.Full: asView, 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 seesSomeone 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 afterRequest Timeout(2 s) counts as refused:The chest did not answer.
OpenKeep's own quick stack, store all, top up, 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.
Homestead: beds, campfires on wood, honey, fires and torches
Section 8. Homestead, synced from the server like every gameplay setting.
- Beds (
Nearest Bed Respawn, on): every bed you own is a spawn bed. When you die you wake in your own bed nearest to where you died; if that bed is gone or no longer yours the next nearest is tried, and only when none is left do you wake at the world's start. Any of your beds lets you sleep, with the game's usual checks (night, no enemies, roof, fire, dry), and the bed you last claimed or slept in stays your spawn point for your first spawn in a world. Your beds are remembered per character and per world when you claim one, use one or come near one you own, so beds claimed before the mod count once you have been near them. Off: only your last bed counts, as in the game. - Campfires on wooden floors (
Build On Wood, defaultfire_pit): the game refuses a campfire on a wooden floor; the pieces listed here may be built on wooden floors and other wooden pieces anyway. The game has the same rule forbonfire,smelter,charcoal_kiln,blastfurnace,eitrrefinery,piece_FrostKilnandwindmill: add them comma separated, or leave the value empty for the game's rule. Every other placement rule stays (nearly level, no clipping into walls, wards, no-build zones). The fire burns, smokes and warms as on the ground and rests on the floor like any piece, so removing the floor breaks it. Fires already built stay when you take a name out. - Honey (
Honey Per Day, default 0 = the game's 1.5 a day): how much honey each beehive makes per in-game day. WithHoney Per Player Onlineon, each hive makes as much honey per day as there are players on the server (1 in single player), following players as they join and leave. A hive still holds at most 4 honey, so at high rates empty it more often. Changing the rate keeps the progress a hive has made toward its next honey. Bird nests keep the game's rate. - Fires that feed themselves (
Auto Fuel, on;Auto Fuel Range, 20 m): every fire you built that burns an item (campfires, hearths, bonfires, braziers, standing torches, sconces, the jack-o-turnip, the snow lantern and modded fires) takes its own fuel (wood, resin, coal, guck or greydwarf eyes) from the nearest containers within range of the fire, not of you. A burning fire stays full while a chest nearby has fuel, and one that burned out while you were away fills up when you come back. Fires with endless fuel, the resin candle (it cannot be refilled) and torches out for the day are left alone. Reach's rules apply:enabled: falsefor a fire in thestations:map ofOpenKeep.Reach.ymlstops it, itsallow/denynarrow the fuel, and thecontainers:map and the switches of section 0 decide which chests give. Chests another player has open, private chests and wards you have no access to are skipped: the game of whoever is nearest runs the fire and uses that player's access. On a dedicated server the fires right around the world's centre are run by the server and do not feed themselves. - Torches at night (
Torches Night Only, on;Torch Pieces): the standing torches (wood, iron, green, blue) and the sconce light at nightfall and go out at daybreak (the game's own night), so they burn fuel only in the dark. A torch out for the day gives no light, burns nothing, and its hover saysLights at nightfall. Other fires can be added toTorch Pieces(braziers, the jack-o-turnip, the snow lantern, the resin candle); campfires, hearths and braziers also give the warmth beds and resting need, which is gone while they are out. Each torch is switched once at nightfall and once at daybreak, so a fire you can switch by hand (the resin candle) keeps your choice until the next one; the game has no hand switch for the torches themselves.
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 / Top Up Key |
R | top up 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 / Junk Key |
J | hovered item is marked as junk |
2. Stow / Trash Key |
Delete | trash the hovered stack |
2. Stow / Destroy Junk Key |
LeftShift + Delete | destroy every junk stack |
2. Stow / Route Modifier |
LeftControl | with a left click: route the stack |
2. Stow / Store One Key |
V | 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 |
2. Stow / Button Row Offset |
0 | moves the button row up (positive) or down (negative) by that many pixels; applies at once |
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, 7. Signs (Enabled,
Show Counts, Max Items, Max Characters, Update Seconds, Height, Rotation, Empty Text), 8. Homestead
(Nearest Bed Respawn, Build On Wood, Honey Per Day, Honey Per Player Online, Auto Fuel, Auto Fuel Range,
Torches Night Only, Torch Pieces), 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, and what each station
prefab may be fed (feeding, Fill, Pull and the hover line only; crafting and building are untouched).
# 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]
stations:
piece_cookingstation:
deny: [NeckTail] # never pulled onto the cooking station; crafting still sees it
smelter:
allow: [group:Ores]
charcoal_kiln:
enabled: false # no feeding, filling, pulling or hover line for this station
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.
deny: [type:Trophy, prefix:MeadBase]
overrides:
ArrowFlint: { fraction: 0.5 }
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 }
OpenKeep.Signs.yml: which containers get a contents sign and where it sits. offset moves the sign from the
computed place (the middle of the container's top, Height metres up) in the container's own axes, x right, y up,
z forward, in metres; rotation is added to the container's facing on top of the Rotation setting.
containers:
piece_chest_wood: { enabled: true, offset: [0, 0, 0.3], rotation: 0 }
piece_chest_private: { enabled: false }
Server settings
Gameplay settings come from the server. With Lock Configuration on (the default), every player uses the server's
values and cannot change them locally; server admins can still edit them in game. With it off, each player uses
their own file. In the console (F5), charter status shows whether the server binds your settings, charter diff
lists where the server's values differ from your own file, and charter versions lists the mods on both sides.
Joining with a missing or mismatched version of the mod shows one screen naming the mod and both versions, with a
refusal code that is also written to the server's and your own log.
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. openkeep signs lists the loaded containers with their sign
state (sign, player text, no sign, opted out); openkeep signs reset (admin or host on a server) allows signs
again on containers whose sign was removed with the hammer; openkeep signs rewrite rewrites the sign of every
loaded container your game owns.
Install
- Install BepInEx for Valheim.
- 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.
- Signs are real vanilla signs. They stay in the world when the mod is removed, and each one removed with the
hammer returns one wood. Switch
7. Signs / Enabledoff before removing the mod to have them taken down. - In the Ashlands, and on worlds with the Fire world key, campfires and bonfires throw embers that set nearby wood alight. A campfire built on a wooden floor there sets that floor on fire; put a stone floor under it.
- A torch that
Torches Night Onlyput out for the day stays dark without the mod, and the game has no switch to light it. Before removing OpenKeep, turn the setting off and visit your bases by day (or rebuild the torches).
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.
Shout outs
- The BepInEx and Harmony teams, for the tools every Valheim mod stands on.
- Iron Gate Studio, for Valheim.
- Thunderstore, for hosting this page.
- The Valheim modding community, for the hard work and dedication that keeps enhancing an already great game.
- Every modder who keeps their mods open source so others can collaborate, learn and build on them.
License
GNU General Public License v3.0 (GPL-3.0). You are free to use, study, share and modify it, and anything you distribute that is built from it must carry the same freedoms and be released under the same licence, with source. See the LICENSE file for the full terms.
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 atQuick 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 atQuick 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'sgoto); 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 Columnoff 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 withCart Workbenchon 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 withinNearby Range:Sent Wood to Chest and 1 more. A stack routed to a chest only for its group or itsacceptlist 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 andMax 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), whichEnabled = falsebrings back. New section10. 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.ymlentry 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 Trashon (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 + Dand 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. Thecontainers: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 Rangeis 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.ymlsets how much each workstation holds:items:(ore, wood, flax, barley) andfuel:(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'sEnabled. Lowering a cap loses nothing: a fuller station keeps working and takes more once it is below the cap.openkeep write docsalso writesOpenKeep.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 Skipnames items never taken (defaultFineWood, RoundLog, so the charcoal kiln burns only plain wood). Thestations:andcontainers: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 Fuelskips 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(defaultfire_pit): campfires can be built on wooden floors. The list takes the other pieces the game keeps off wood too (bonfire,smelter,charcoal_kilnand 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 Daysets how much honey each beehive makes per in-game day (0, the default, keeps the game's 1.5 a day);Honey Per Player Onlinemakes 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 withinAuto Fuel Range(20 m) of the fire, a unit at a time as they burn; thestations:andcontainers: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 Pieceslists which fires (braziers, lanterns and the resin candle can be added). A torch out for the day saysLights 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 Rangedefaults 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 signsandopenkeep write docsconsole 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 Trashnow 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 allbutton isStore allagain, next toStore one;Stow All KeyisStore All Keyand a cfg from 1.1.0 or 1.2.0 keeps its binding. The section2. StowandOpenKeep.Stow.ymlkeep their names. - Salvage: new synced settings
Skip Items With Mod Data(on) andMod 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 inOpenKeep.Reach.yml— per station prefabenabledandallow/denyitem lists for station feeding (interact, Fill, Pull and theFrom storagehover 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
excluderenameddeny. A file still usingexclude: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 KeynowV. Existing bindings carry over. - Stow: junk marks move to
OpenKeep.junkin 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 PreviewandCart Upgrade Piecesettings.
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:
Viewshows a chest another player has open, read-only;Fulllets 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.