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

OpenKeep

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

Date uploaded 4 days ago
Version 1.4.2
Download link MilkyTeam-OpenKeep-1.4.2.zip
Downloads 431
Dependency string MilkyTeam-OpenKeep-1.4.2

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; 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; and a sign above every chest that names what is inside. 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, hold Pull Modifier (Alt) to move a stack into your inventory instead. Hover texts get a From storage: n line. The stations: map in OpenKeep.Reach.yml narrows this per station prefab: deny keeps items out of the feeding (raw meat you want to keep raw, say), allow limits it to a list, enabled: false leaves a station entirely alone — crafting and building are untouched.
  • 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: 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), 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: 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 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 E and 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 Enabled off 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, 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, 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.

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), 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

  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.
  • 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 / Enabled off before removing the mod to have them taken down.

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