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.
RunicInventory
Adds an automatic extra row with five equipment-only slots and three quick-use slots, preserving normal backpack space with locks, sorting, and pickup controls.
| Date uploaded | a week ago |
| Version | 1.1.2 |
| Download link | Chazman-RunicInventory-1.1.2.zip |
| Downloads | 1556 |
| Dependency string | Chazman-RunicInventory-1.1.2 |
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
Runic Inventory 1.1.2
Equipped armor is on your body, yet it occupies the same general backpack space as wood, stone, trophies, and everything else you collect. Frequently used tools and consumables compete for the same limited organization.
Runic Inventory adds eight dedicated slots to Valheim's existing inventory. This extra, clearly labeled role row is always enabled with the mod. Your normal backpack rows remain available; no separate extra-row switch is needed.
Major features
- Dedicated helmet, chest, legs, cape, and utility roles.
- Three quick-access roles for frequently used items.
- One additional row, separate from native pocket upgrades, with permanently assigned slot types.
- Automatic placement and safe swapping for recognized equipment.
- Per-slot locks, protected-item behavior, and pickup controls.
- Sorting rules that respect equipment, locked cells, and item state.
How to use it
Equip armor normally: recognized equipped armor moves into the matching slot on the added bottom row.
The five equipment slots accept only the matching helmet, chest, legs, cape, or utility type.
Quick 1-3 accept only consumables, tools, or utility items. Wood, stone, ore, and other unrelated
items cannot enter these slots, including through swapping or automatic transfers. The slot roles
cannot be unlocked or turned into general storage. You can still replace gear and quick-use items.
Place a consumable or tool in Quick 1-3 on the labeled bottom row. Press
Left Alt + 1, 2, or 3 to use those quick slots. With the inventory open, press Left Alt + I
to sort the configured safe rows. Hold Left Alt and right-click a player-inventory cell to lock or
unlock it; focusing a cell and pressing Left Alt + L is the keyboard fallback. Controller chords
can be changed in the BepInEx configuration manager or config file.
To keep food or supplies out of Quick Stack and Store All, install Runic Inventory alongside Runic
Storage, open your player inventory, and Alt-right-click each cell you want protected. A yellow
outline and a lock/unlock message confirm the change, including for empty cells. Locked items
remain usable: select and fire ammunition, eat food, drink potions, use quick-slot items, and
replenish matching stacks normally. Locks still protect against storage transfers, sorting moves,
dropping, and guarded disposal; unlock before deliberately moving or discarding the item.
Cooking, refueling, and processing also allow locked supplies; if RunicSafety is installed,
update it to 1.0.5 or newer for this behavior. Its other item safeguards still apply.
Storage's Sort -> LockedSlots setting only fixes chest
positions during chest sorting and does not create player-inventory locks.
How it feels in-game
Gear stays where gear belongs, quick items remain predictable, and sorting stops scattering the things you deliberately arranged. The inventory still looks and behaves like Valheim's inventory—only more intentional.
Safety and compatibility
The mod adds eight specialized slots, not additional carry weight. Every item remains in the native Inventory with its complete metadata, and death, tombstones, saving, and loading use the native item paths. Unknown modded categories stay ordinary items. Incompatible inventory modifications may prevent row initialization; failed migrations do not remove items.
Native ownership and persistence
Inventory does not maintain a second item store. Every item stays in the
same vanilla Inventory with full item metadata: prefab, stack, durability, equipped state, quality,
variant, crafter identity, custom data, world level, pickup state, weight, and effects.
- Valheim
Inventory.SaveandInventory.Loadremain the item persistence path. - Death and tombstones remain Valheim's native grave-transfer path.
- Topology and locks use a small checksummed custom-data entry; a separate marker records the added row.
- Disable through
General -> Enabledbefore uninstalling. In Configuration Manager, this control is grayed out while normal inventory lacks room for the extra-row items, with an explanation. Free normal cells, then disable; items move into those cells and the row disappears. - An attempted config-file disable with insufficient space is refused and Enabled is restored to true. Freeing space does not automatically disable the mod; you choose when to disable again.
- Avoid an abrupt uninstall with items in the added row: vanilla no longer reserves or maintains those extra slots.
- Sort, lock changes, quick use, and relocation require the exact owning
Player.m_localPlayer.
Mutations use one short-lived mutation scope owned by this mod and perform exact in-memory rollback when a position proof fails. There is no global lock, cross-mod transaction coordinator, durable journal, quarantine, or recovery protocol.
Optional integration
RunicInventory.Api.InventoryIntegrationApi.TryGetProtection(object, out int) is a tiny optional
reflection seam for independently installed mods. It returns state 0 for governed-but-unknown,
1 for proven unlocked, and 2 for locked. A false return means the supplied object is outside
Inventory's active protection domain. Consumers must treat unknown as fail-closed and must not retain
the native item.
TryGetUseProtection(object, out int) provides a separate view for normal cooking, refueling,
and processing: healthy slot-retained items report unlocked for use only. Unknown states and
domain checks are unchanged. Transfer, display, sacrifice, and disposal integrations must keep
using TryGetProtection; the use API is not permission to move items out of protected slots.
Slot locks remain available when valid native slots and lock metadata exist but optional layout
features are unavailable. The dedicated row's item-type restrictions remain in effect while enabled.
A confirmed startup
failure before protection activated yields NotApplicable rather than blocking ordinary cooking.
Stable disabled, unsupported-layout, remote non-owner, and headless states also yield NotApplicable.
Brief load,
rebind, shutdown, malformed-evidence, and exception states remain Unknown and fail closed while the
provider could still govern an owning local inventory. A proven non-owner or headless path remains
NotApplicable because Inventory cannot enforce locks in that read-only context.
Storage, Safety, and Interaction may use this optional reflection API when Inventory is installed; none is a hard dependency in either direction. Inventory loads and functions on its own. The normal workstation repair call receives a narrowly scoped unlocked view, so equipped armor in the protected bottom row can still be repaired; protection resumes as soon as that repair call ends.
Authority modes
AuthoritativeLocal: exact owning local player; gameplay features may mutate through native APIs.RemoteDedicatedCompatibility: a non-local or non-owning player reference is read-only.MigrationSafeCompatibility: topology or item evidence is incompatible, so special mutations stop.Disabled/BatchInert: ordinary vanilla behavior.
A connected dedicated-server client owns its character inventory and can use Inventory normally. The headless server process has no local player, so this mod remains inert there.
Install only BepInEx and Runic Inventory. Existing 1.0.0 configuration and topology metadata remain valid; no data migration or version bump is required.
CHANGELOG
Changelog
1.1.9 - 2026-09-18
- Replaced the exact game-version allowlist with startup API validation. Compatible future patches no longer require a version-only update.
- Incompatible APIs still fail closed; World Engine retains its exact method-body audit.
1.1.8 - 2026-09-18
- Added Valheim 1.0.15 compatibility, including its restored three-argument native stack-search contract.
- Retained support for 1.0.7, 1.0.12, and 1.0.14 and exact API validation.
1.1.7 - 2026-09-17
- Updated the native stack-search contract for the new cheated-item argument; native stacking retains the game's cheated/ordinary item distinction.
- Added Valheim 1.0.14 support while retaining compatibility with 1.0.7 and 1.0.12.
- Retained exact game API checks and rejection of unknown versions.
- Updated installed-game contract verification for the 1.0.14 client.
1.1.6 - 2026-09-14
- Changed player Locked Slots to exclude their contents from Runic Quick Stack only. Requires RunicStorage 1.2.5 or newer for Quick Stack integration; update both mods together.
- Locks no longer prevent manual moves, drops, replacement equipment or tool swaps, crafting upgrades, or sorting. Matching stacks can increase and ammunition, food, and other items remain usable.
- Store All, Restock, consolidation, and general protection consumers ignore player slot exclusions. Dedicated equipment/quiver row protections and independent Safety rules remain in effect.
- Existing saved exclusions stay on their cells, including after the item is replaced or the inventory is sorted.
1.1.5 - 2026-09-14
This release brings the Better Archery fixes since 1.1.2 into the release package. Better Archery could resize the inventory after Runic added its equipment row, leaving items outside the resulting grid and triggering automatic drops. The compatibility guards preserve the separate quiver and equipment rows, and the compact layout removes the unused visual gap without changing saved item positions or capacity.
- Added a compact Better Archery inventory layout that removes unused space above Runic's equipment row.
- Adjusted the panel height to match, with extra space collapsed when no quiver is equipped.
- Added the optional UI setting
CompactQuiverLayout, enabled by default. Inventory capacity, saved item positions, and existing keybindings are unchanged.
1.1.4 - 2026-09-12
- Fixed Better Archery resizing the inventory after Runic prepared its equipment row, causing items to be dropped during character loading.
- Fixed overlapping empty-slot and capacity checks allowing ordinary items into reserved quiver rows.
- Added an item-retention guard before automatic invalid-position cleanup following an unexpected inventory resize.
1.1.3 - 2026-09-12
- Added Better Archery 1.9.99 quiver compatibility, keeping quiver ammunition and Runic equipment/quick slots in separate reserved rows.
- Coordinated inventory resizing, slot visibility, and grave-recovery cleanup for the combined layout.
- Kept quiver cells out of ordinary sorting and automatic storage transfers.
- Prevented overlapping quiver and quick-slot shortcuts from triggering both actions.
1.1.2 - 2026-09-12
- Fixed locked slots blocking normal item use, including ammunition selection and quick-slot food, potions, and tools.
- Allowed matching pickups to replenish locked stacks while keeping their slots protected from sorting and storage transfers.
- Separated normal cooking, refueling, and processing from slot-retention protection. Update RunicSafety to 1.0.5 when using both mods.
- Kept transfer, drop, display, and disposal guards in place.
1.1.1 - 2026-09-11
- Fixed the Valheim 1.0.12 startup check so equipment slots, quick slots, slot locks, and inventory protection initialize again. Retained Valheim 1.0.7 support.
1.1.0 - 2026-09-10
- Added an automatic extra inventory row whenever RunicInventory is enabled, preserving all normal backpack slots.
- Reserved its five equipment slots for their matching armor or utility type and its three quick slots for consumables, tools, or utility items.
- Blocked incompatible items entering the dedicated row through dragging, swapping, and direct-position transfers.
- Migrated equipped armor, existing role items, and slot locks into the added row while keeping native pocket upgrades separate.
- Grayed out the in-game Enabled control when extra-row items cannot fit in normal inventory; unsafe disable attempts are refused with a clear explanation.
1.0.5 - 2026-09-10
- Fixed a failed Inventory startup leaving cooking and other protected actions permanently blocked by an unavailable protection provider.
- Kept slot locks available when equipment-row contents require vanilla-compatible layout, while preserving existing items and lock metadata.
- Made Alt-right-click target the exact clicked cell and added clear lock/unlock confirmation.
- Fixed slot-protection queries rejecting valid negative character IDs.
1.0.4 - 2026-09-10
- Fixed Linux startup rejecting Valheim 1.0.7 because its displayed version includes a platform prefix.
1.0.3 - 2026-09-09
- Updated native inventory resizing and notification paths for Valheim 1.0, including safe preservation and expansion of the new pocket rows.
- Updated right-click, RPC, and cheated-state contracts to the installed Valheim 1.0.7 client and dedicated-server assemblies.
- Updated the BepInEx dependency to 5.4.2350.
1.0.2 - 2026-09-08
- Fixed Runic Safety blocking ordinary cooking when an installed Runic Inventory had deliberately fallen back to vanilla behavior, including migration-safe existing characters, remote non-owner contexts, and headless dedicated servers.
- Made the optional item-lock query report stable inactive modes as NotApplicable, matching Runic Inventory's own guards, while retaining fail-closed Unknown results during live load/rebind, shutdown, malformed evidence, and exceptions that can still affect an owning local inventory. Proven remote non-owner and headless paths remain NotApplicable because they cannot enforce locks.
- Kept authoritative unlocked, explicitly locked, and special-row results unchanged.
- Added one bounded, deduplicated warning for each indeterminate protection reason so future player logs identify the actual topology or lifecycle state without exposing item or player data.
1.0.1 - 2026-09-05
- Reworked the Thunderstore description and README opening to lead with the player problem, the mod's core benefit, major features, in-game feel, and then safety and compatibility details.
- Description-only package update. The plugin DLL and gameplay behavior are byte-for-byte unchanged from 1.0.0.
1.0.0 - standalone runtime architecture
-
Removed mandatory Foundation runtime dependencies (Runic Core, Persistence, and Transactions) without changing the mod version or player topology metadata.
-
Replaced the suite-global mutation gate with one short-lived per-mod mutation scope around native owner-local operations.
-
Removed the durable journal, recovery bridge, quarantine, and cross-mod transaction service.
-
Added a tiny optional reflection API for item-protection consumers; Inventory remains independently installable and consumers continue without it.
-
Kept every gameplay mutation on the native owner-local character inventory path.
-
Added subtle in-inventory labels and an outline for the five equipment roles and three quick roles; no quick-slot HUD is drawn during gameplay, and the diagnostic panel now defaults off.
-
Added empty-role pickup/crafting placement with native equip, plus exact lossless position swapping when the player manually equips a replacement for an occupied armor, cape, or utility role.
-
Fixed ordinary armor replacement falsely entering
MigrationSafeCompatibilitywhen Valheim raisedInventory.Changedafter equipping but before the postfix could relocate the new item. Equipment changes now use an exception-finalized deferred-refresh boundary, genuine role-content failures name the first offending role/item, and a corrected authoritative row reactivates automatically. -
Added Left Alt + right-click as the primary in-inventory lock toggle while keeping the configured Alt+L action as a fallback.
-
Anchored Helmet, Chest, Legs, Cape, Utility, and Quick 1-3 labels and yellow borders to Valheim's exact eight native bottom-row elements.
-
Restored authoritative topology automatically after transient belt/equipment drag states and corrected carried-item protection proof to compare the fresh native item references rather than requiring two separately returned item lists to be the same list object.
-
Made slot lock toggles silent and represented each explicit lock with a bright yellow outline.
-
Yielded the bottom-row overlays whenever a native inventory modal is visible and allowed protected equipment through the exact workstation repair call without weakening protection elsewhere.
1.0.0 — 2026-08-22
-
Implemented Core's provider-neutral
inventory.durable-operationscontract with an independent checksummed atomic local journal, reconnect lock, exact Local-profile current-primary readback, provider-owned profile-source classification, and server-led Cloud/Legacy outstanding-operation adoption. Cloud completion requires an exact account/world/token/manifest/receipt binding plus a later direct session's first pre-mutation provider-recomputed inventory fingerprint; same-session and third-state evidence remains quarantined. -
Added bounded cloned exact-manifest recovery for an owning consumer after restart, with explicit corrupt, file/mirror-conflict, foreign-owner, mismatched-operation, and terminal denial.
-
Replaced Storage's process-only catastrophic rollback flag with a real
IndeterminateInventory crash journal. The three-argument hold seam now succeeds only after an atomic independent flush, exclusive readback, and exact Player mirror; its manifest binds the profile/player identity, failure boundary, and captured/current inventory fingerprints. Disposal and restart retain the quarantine, and 1.0.0 deliberately provides no automatic clear without independent recovery proof. -
Split startup into an early durable safety plane and a later convenience-feature plane. A protocol failure retains native evidence enforcement, while a compatible Core publishes a minimal module plus durable-operation recovery service before topology, gameplay-service, binding, and UI admission. Any later startup or cleanup failure disables new gameplay admission without withdrawing that recovery service, disposing a previously loaded journal runtime, unpatching its native Inventory/Player/death-and-grave guards, or stopping recovery ticks. With no durable evidence, degraded startup continues to yield ordinary vanilla inventory behavior; only final shutdown tears the recovery bridge and safety plane down.
-
Added a bounded provider-owned opaque-state forecast seam for cross-domain intents. Forecast bytes are defensive and side-effect checked, callback/reentrancy faults fail closed, and forecast never substitutes for the separately persisted
TryCaptureLocalPreparedobservation. -
Hardened the independent journal to an exact trusted-root child with reparse-point denial before and after publication, exclusive bounded reread, backup-free atomic replacement, exact-delete identity, and preserved
.new/.bak/.delforensic evidence on every uncertain cut. -
Preserved vanilla death during an unresolved operation:
CreateTombStoneis never suppressed; an exception-finalized exact system-transfer scope journals the spawned grave identity, inventory fingerprint, stable-token evidence when already present, operation-tag counts, and current direct-server session digest. Cloud custody completion requires a different later session; a missing capture-session proof remains locked for server recovery. Added a provider-neutral durable server custody-recovery proof for the crash-before-local-capture cut, requiring the exact issued token/account/world/receipt, conservation evidence, one unique tagged grave, and a later observation session. -
Added an all-or-nothing native bottom row with five equipment roles and exactly three manual quick roles.
-
Kept every item inside Valheim's native inventory; no extra capacity, weight change, stack multiplier, item clone, or secondary item serialization.
-
Added bounded digest-protected slot locks, locked-stack routing, and registered high-level drop, deposit, use, exact upgrade, processing, display, and sacrifice guards.
-
Added deterministic safe regional sort with hotbar/equipment/quick/lock preservation and exception rollback.
-
Added bounded event-driven pickup overflow/encumbrance preview, reserved-row-aware capacity checks, and an exact deny filter with quest-item bypass.
-
Published copied immutable
inventory.topology, legacy coordinate locks, the Core 1.0.0IItemProtectionQueryunderinventory.item-locks, and truthful status services. The typed query proves exact current local membership, protects the full special row, returns false/Unknownonly for NotApplicable external evidence or an explicitly disabled provider, and returns true/Unknownfor unsafe in-domain evidence. -
Added owning-local-player authority for solo, listen-host, and remote dedicated clients. Native player-inventory topology, sort, quick-use, equip relocation, and lock persistence no longer incorrectly require
ZNet.IsServer; non-owner and headless paths remain read-only. -
Corrected headless-client admission so
Application.isBatchModeis never treated as gameplay authority: an exact owningPlayer.m_localPlayerremains eligible on an automated dedicated client, while a true dedicated server with no local Player remains inert and fail closed. -
Added migration-safe dimension/digest/role mismatch behavior with no automatic item movement.
-
Added continuous live-dimension/host-authority revalidation, canonical-location proof for already-equipped gear, deterministic peer patch ordering, and pre-vanilla locked armor-source denial without blocking canonical reload re-equip.
-
Removed the private-reflection/manual-Harmony Storage guard. Storage, Safety, and Interaction consume the Core-owned typed item-protection contract without Inventory reflecting or patching their internals. Storage 1.0.0 is now truthfully a downstream hard consumer of Inventory's separate durable-operation service; Inventory itself still does not hard-reference Storage.
-
Corrected the optional item-protection contract so an explicitly disabled Inventory provider returns NotApplicable before inspecting a player item; Interaction and other optional peers now yield to vanilla transfers while Inventory is disabled, while migration/authority uncertainty remains fail-closed.
-
Closed the complementary lifecycle gap: while Inventory is enabled, any native item queried while the provider is disposed, loading/rebinding, or missing its Player/Inventory now returns in-domain
Unknown. Only explicit disable or bounded exact membership absence can yield NotApplicable, so consumers cannot mutate through a transient unavailable provider. -
Made disabled-topology metadata cleanup sticky across mutation-gate contention, ticks, rebinds, configuration changes, and restart. Inventory now stays fail-closed until the owning local player commits the exact removal, then publishes clean
Disabledstate without requiring another toggle. -
Separated runtime configuration/disable cleanup from optional keybinding refresh. Cleanup now runs first, and failures in either phase are reported and failed closed without suppressing the other.
-
Added bounded once-per-reason verbose diagnostics for every typed item-protection outcome and indeterminate branch without logging item identity, contents, coordinates, or custom data; added direct healthy exact-member
Locked/Unlockedand foreign-item NotApplicable regressions. -
Invalidated cached controller
ButtonDefpaths and active input reservations on Valheim layout-change events, with symmetric shutdown unsubscription. -
Replaced the new-install Quick 1 controller default with layout-independent
JoyMapand normalize only the exact untouched legacy controller set to that route in memory. This closes Valheim Alternative 1'sJoyAltKeys/JoyLBumperleft-shoulder alias without rewriting customized files. Controller validation is now route-local, same-path map/chat aliases remain suppressed, Core registers the actual effective legacy route, and cached steady-state input ticks allocate nothing. -
Declared the exact Runic Core 1.0.0, Runic Persistence 1.0.0, and Runic Transactions 1.0.0 release floors used by the compiled contracts.
-
Added lossless death, tombstone, logout, disable, upgrade, abrupt-uninstall, installed-IL, crash-cleanup, and 100/1,000/10,000 performance regressions.