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.
Inventory Tweaks
Client-side inventory improvements: combine and arrange stacks, pin item slots, filter automatic pickups with Ctrl + middle-click, and save bindings, filters and settings separately for each character.
| Date uploaded | a day ago |
| Version | 1.0.7 |
| Download link | Xtasy-Inventory_Tweaks-1.0.7.zip |
| Downloads | 12 |
| Dependency string | Xtasy-Inventory_Tweaks-1.0.7 |
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.2351README
Inventory Tweaks
Combine stacks, reserve inventory slots for your favorite items, and keep a separate setup for each Valheim character.
Client-side only. No dedicated server installation is required. The interface uses Russian when the game language is Russian and English for all other languages.
Features
- Combine stacks: a small button beneath the inventory fills matching stacks to their maximum size. For example,
45 / 25 / 50 / 20becomes50 / 50 / 40when the stack limit is 50. Pinned stacks are filled first. - Arrange on Combine: pressing Combine also places matching items into their pinned cells. Foreign occupants move to free ordinary or matching cells. Safe swaps can use the source item's vacated cell, including full-inventory cycles. If no valid layout is available, that move is left unchanged. Correctly placed items stay in place.
- Pin slots: middle-click an item to bind its type to that cell. Middle-click again, including an empty pinned cell, to remove the binding.
- Pickup filter: Ctrl + middle-click drops the selected stack and blocks that prefab from automatic pickup. A native inventory cell with the full-size item icon and a thin red cross appears below the buttons (without quantity, quality or durability labels); left-click it to remove the filter. Filters ignore quality, durability and crafter, remain separate for each character, and survive rejoining. Refused drops do not add a filter. Manual pickup and chest transfers remain available.
- Reset: clear all bindings and the automatic pickup filter for the active character with one click. The empty layout is saved immediately; items, mode settings and other characters are unaffected.
- Visible bindings: a small golden lock and a thin yellow border mark pinned cells. Empty pinned cells show a translucent grayscale item icon.
- Wrong-item indicator: a small yellow exclamation mark at the bottom-left of a pinned cell indicates that its occupant does not match the binding. It has the same size as the lock icon, respects crafter/quality rules and does not intercept clicks.
- Crafted items: bindings match the prefab and crafter. Quality matching is optional and disabled by default. Durability is always ignored for binding. Other items are bound by prefab.
- A / M toggle: the square button to the left of Combine switches between automatic consolidation after picking up items (A, default) and manual consolidation (M).
- Strict / Free toggle: strict automatic placement reserves pinned cells for matching items. Free placement allows other incoming items to occupy them. Matching items still prefer their available pinned cells.
- Manual placement: by default, you can manually place another item into a pinned cell without removing its binding. This can be disabled independently of Strict / Free.
- Move items freely: manually moved items stay where you place them until you explicitly press Combine. Ordinary clicks, saving and automatic A mode do not trigger pinned-cell arrangement.
- Expandable inventory: buttons follow the lower edge of the inventory panel when its size changes. Bindings use cell coordinates and retain out-of-bounds cells if the inventory temporarily shrinks.
- Separate characters: every character has its own bindings, pickup filter, modes, quality policy, manual placement policy and interface settings. Changes are saved immediately.
- Live configuration: edit settings without restarting the game.
Installation
Install with Thunderstore Mod Manager, r2modman, or another compatible mod manager. BepInExPack Valheim is the only required dependency.
For manual installation, install BepInExPack Valheim, then place InventoryTweaks.dll in BepInEx/plugins/InventoryTweaks/.
When upgrading from a manually installed test build, replace that DLL rather than keeping duplicate copies in different plugin folders.
Controls
| Control | Action |
|---|---|
| Middle mouse button on a cell | Pin or unpin the slot |
| Combine | Consolidate compatible stacks and arrange items by slot bindings |
| Ctrl + middle mouse button on an item | Drop the selected stack and block its prefab from automatic pickup |
| Left mouse button on a crossed-out icon | Remove that prefab from the automatic pickup filter |
| Reset | Clear every binding and the pickup filter for the current character |
| A / M | Automatic combining after pickups / manual combining |
| Strict / Free | Restrict automatic placement / allow other pickups in pinned cells |
All four buttons and the filter anchor directly to the inventory window bottom-left corner; background image bounds do not affect their position. Filter icons appear below them on the inventory panel background, retain the native cell tint and wrap to another row as needed. Hover over buttons and filter icons for tooltips.
Automatic consolidation runs after an actual ground pickup completes and waits while an item is being dragged. It does not produce repeated status messages. In M mode, Valheim's normal stacking of newly added items remains active; the mod's additional consolidation runs only when you click Combine.
Pinned-cell arrangement is a manual action on the Combine button in either A or M mode. It respects the current crafter and quality binding criteria, uses space freed by consolidation, and never sends a foreign item into another unrelated pinned cell.
Configuration
The configuration file is generated automatically:
BepInEx/config/com.xtasy.InventoryTweaks.cfg
Default values for a new character:
[Combining]
AutoCombineOnPickup = true
[Pinning]
UseCraftedItemQualityForPinning = false
AllowManualPlacementIntoOtherPinnedSlots = true
StrictAutoPickup = true
[Interface]
CombineButtonOffset = {"x":-5.0,"y":-10.0}
GhostOpacity = 0.35
| Setting | Effect |
|---|---|
| AutoCombineOnPickup | true: A mode; false: M mode. The A/M button saves this setting. |
| UseCraftedItemQualityForPinning | Also match the quality of crafted items. Durability is still ignored. |
| AllowManualPlacementIntoOtherPinnedSlots | Allow manual placement of other items while retaining the cell's original binding. |
| StrictAutoPickup | true: Strict; false: Free. The placement-mode button saves this setting. |
| CombineButtonOffset | Offset of the buttons and filter from the panel's outer bottom-left edge. Defaults: X=-5, Y=-10. Positive X moves right; negative Y moves down. |
| GhostOpacity | Empty pinned icon opacity, from 0.05 to 0.8. |
Saved configuration edits are normally detected within 0.75 seconds. Compatible configuration managers can apply changes immediately.
Character persistence
Each character is identified by its stable numeric character ID, not its name or account. Its setup is saved immediately to:
BepInEx/config/InventoryTweaks/pins/<character-ID>.json
A .bak file retains the previous saved revision. Bindings, pickup filters and settings are also mirrored into the character's save data. Existing bindings from older versions are imported when no separate file exists.
The .cfg file reflects the active character. Editing it or using the mode buttons changes that character's settings. Selecting another character restores that character's own values, including A/M and Strict/Free. New characters start with the defaults above.
Empty pinned cells, pickup filters and explicitly cleared bindings/filters are preserved after rejoining.
Stacking and compatibility
Consolidation preserves differences in prefab, crafter, quality, variant, world level, cheat state, durability of durable items and custom item data. Items with different metadata are not collapsed into a single stack. Ignoring quality for binding does not erase item quality during stacking.
Other mods that replace inventory UI, stacking or placement rules may require additional compatibility work. This package was built against the locally installed Valheim assemblies; compatibility with every inventory mod or future game update is not guaranteed.
Upgrading from 1.0.3
Version 1.0.4 fixes an initialization failure when an older character save contains only {"version":1}. This legacy format has no cell bindings, so any missing bindings need to be assigned again. Existing valid layouts remain readable. A binding-load error no longer blocks the Combine action.
Русский
Inventory Tweaks — клиентский мод для объединения стопок и закрепления предметов за ячейками. На выделенном сервере установка не требуется.
- Кнопка «Объединить» заполняет одинаковые стопки до максимума. При лимите 50 набор
45 / 25 / 50 / 20превращается в50 / 50 / 40. Приоритет у закреплённых стопок. - При нажатии «Объединить» предметы также занимают свои закреплённые ячейки, а чужие освобождают их, если есть подходящее место. Поддерживаются безопасные обмены. Если места нет, невозможное перемещение не выполняется. Эта расстановка не запускается от обычных щелчков и автоматического объединения A.
- Средняя кнопка мыши закрепляет тип предмета за ячейкой. Повторное нажатие снимает закрепление, в том числе с пустой ячейки.
- Ctrl + СКМ выбрасывает выбранную стопку и запрещает автоматический подбор предметов этого префаба, без учёта качества, прочности и создателя. На подложке с текстурой панели инвентаря под кнопками появляется штатная ячейка с полноразмерной иконкой и тонким красным крестом, без количества, качества и прочности; ЛКМ по ней удаляет запись из фильтра. Фильтр сохраняется после перезахода отдельно для каждого персонажа. При отказе выброса новая запись не создаётся; ручной подбор и перенос из сундуков доступны.
- «Сброс» снимает все закрепления и очищает фильтр автоподбора активного персонажа, сразу сохраняя результат. Предметы, остальные настройки и другие персонажи не изменяются.
- Закрепление отмечено замком и тонкой жёлтой рамкой. Пустая ячейка показывает серую полупрозрачную иконку.
- Если в закреплённой ячейке лежит другой предмет, слева внизу появляется маленький жёлтый «!», размером с замок. Знак исчезает, когда ячейка освобождается, закрепление снимается или предмет соответствует условиям закрепления.
- Для созданных предметов учитываются префаб и создатель. Учёт качества включается отдельно и по умолчанию выключен. Прочность при закреплении не учитывается. Для остальных предметов достаточно префаба.
- Квадратная кнопка A/M слева от «Объединить» переключает автоматическое объединение после подбора и ручное объединение. По умолчанию включён A. В M штатное добавление новых предметов в стопки игры сохраняется.
- «Строго» резервирует закреплённые ячейки для подходящих автоматически добавляемых предметов. «Свободно» позволяет занимать их другими предметами, сохраняя само закрепление.
- Разрешение вручную класть другой предмет в закреплённую ячейку настраивается отдельно и по умолчанию включено.
- Перемещённый вручную предмет остаётся на новом месте до явного нажатия «Объединить». Кнопки и фильтр привязаны напрямую к нижнему левому краю окна и следуют за расширением инвентаря. Границы фонового изображения больше не вызывают смещение за край экрана.
- У каждого персонажа свои закрепления, фильтр автоподбора и настройки, включая A/M, Строго/Свободно, качество, ручное размещение, положение кнопок и прозрачность иконок. Изменения сохраняются сразу по уникальному ID персонажа.
- Правки файла конфигурации применяются без перезапуска, обычно в течение 0,75 секунды. Конфиг отображает настройки активного персонажа.
Установка: через менеджер модов либо вручную — InventoryTweaks.dll в BepInEx/plugins/InventoryTweaks/. Требуется только BepInExPack Valheim. При обновлении тестовой сборки замените прежнюю DLL, чтобы не оставить две копии мода.
Конфиг: BepInEx/config/com.xtasy.InventoryTweaks.cfg. Отдельные настройки персонажей: BepInEx/config/InventoryTweaks/pins/<ID-персонажа>.json.
При русском языке игры интерфейс русский; для остальных языков — английский. Подсказки кнопок переведены.
Обновление с 1.0.3: исправлена блокировка закрепления и объединения при чтении старого формата {"version":1}. В нём нет списка ячеек, поэтому отсутствующие закрепления нужно назначить заново. Существующие корректные раскладки читаются как прежде.
License
MIT. See LICENSE.
The default button/filter offset is X=-5, Y=-10. Saved custom offsets are preserved; live configuration edits and resetting this setting to its defaults remain supported.
CHANGELOG
Changelog
1.1.2
- Fix manual stacking, pickup stacking and Combine for selected arrows and bolts marked equipped by the game.
- Fill selected ammunition first up to its stack maximum, retaining the selected item object and its selection.
- Keep other equipped item types protected and preserve metadata compatibility and stack limits.
- Add selected-ammo regression checks, including 500 randomized inventories.
1.1.1
- Move the pin lock icon to the top center of inventory cells so it no longer covers the item quality label. Keep its size and top padding.
1.1.0
-
Add white localized control hints below the buttons, matching their font and font size.
-
Show hints only when the pickup filter is empty; restore them when its last entry is removed or Reset is used. Hide them for storage windows.
-
Add ShowControlHints (default true), with live configuration and per-character persistence.
-
Add a square border toggle beside A/M: yellow when enabled, inventory brown when disabled. Uses ShowPinnedSlotBorder, retains locks/bindings and includes localized tooltips.
-
Add ShowPinnedSlotBorder (default true) to toggle yellow slot borders while retaining lock icons and bindings. Applies live and saves per character.
-
Add Hide filter / Show filter beside Reset to toggle icon visibility while automatic pickup filtering remains active.
-
Save filter visibility per character and support live configuration changes with ShowPickupFilter (default true).
-
Keep matching items in their pinned cells when holding Use or clicking Move similar items to deposit into storage.
-
Protect complete stacks before any partial merge, respecting crafter identity and the active quality setting while ignoring durability.
-
Preserve normal transfer rules for foreign occupants and items outside their matching pinned cells, and keep manual transfers available.
-
Add production-hook regression checks for matching criteria, destination/source scope and nested or failed operations.
1.0.8
- Hide the mod buttons and pickup-filter strip while a chest or another storage container is open.
- Restore them when the container closes, preserving bindings, filters and settings.
- Refresh visibility immediately on opening and closing, and after the native storage panel updates.
1.0.7
- Add an automatic pickup filter: Ctrl + middle-click drops the selected stack and blocks automatic pickup of that item type.
- Show filtered items below the inventory buttons with crossed-out icons; left-click an icon to remove its filter.
- Save filters separately for each character. Reset clears both slot bindings and the pickup filter.
1.0.6
- Make the manual Combine button also arrange items into their pinned cells after consolidating stacks.
- Move foreign pinned-cell occupants to available ordinary or matching cells.
- Support safe swaps and displacement cycles, including full inventories; roll back impossible chains without overwrites or item loss.
- Keep correctly placed items in place and preserve all item instances and metadata.
- Keep automatic A mode limited to consolidation; ordinary clicks and manual moves do not trigger arrangement.
- Add arrangement checks covering 500 randomized inventories, full-inventory cycles, unavailable space, crafting criteria and expanded grids.
1.0.5
- Add a small yellow exclamation mark at the bottom-left of pinned cells occupied by nonmatching items.
- Match the marker's size to the lock icon and keep mouse input unobstructed.
- Respect crafter identity and the active quality-matching setting when deciding whether to show the marker.
1.0.4
- Fix migration of legacy saves containing only
{"version":1}, which prevented pinning and combining in 1.0.3. - Define explicit JSON data contracts and restore defaults for omitted optional fields.
- Keep stack consolidation available when binding data cannot be read, preserving unreadable data.
- Add Reset to clear the active character's bindings and persist the empty layout without changing modes or other characters.
- Avoid repeated configuration reloads after the reload itself updates the file timestamp.
1.0.3
- Save slot bindings and all mod settings separately for each character's unique ID.
- Write changes immediately to per-character files and mirror them into character save data.
- Preserve empty pinned cells and explicitly cleared layouts across sessions.
- Add atomic file replacement, backup recovery and migration of legacy embedded bindings.
- Guard the complete character-loading process against premature initialization.
1.0.2
- Restrict button actions to direct pointer clicks to prevent slot clicks and shared Submit input from activating Combine.
- Remove forced relocation of manually moved items.
- Add a square A/M toggle to the left of Combine, with automatic combining enabled by default.
- Consolidate after actual ground pickups, deferring work while an item is being dragged.
- Add Russian and English tooltips for the new mode.
1.0.1
- Add a thin yellow border to pinned cells, alongside the lock icon.
- Initialize button tooltips with native game templates to fix hover exceptions.
1.0.0
- Add stack consolidation across any number of compatible stacks.
- Add persistent slot bindings, middle-click pinning and translucent grayscale icons for empty pinned cells.
- Add Strict/Free automatic placement modes and optional crafted-item quality matching.
- Add configurable manual placement into pinned cells and live configuration reload.
- Add Russian UI with English fallback for other game languages.
- Anchor inventory buttons to the panel so they follow inventory expansion.