I assume "nothing" you meant is lack of extra slots items. Pls check for errors in log file around time of death. Error can easily prevent items from restoring to inventory after death.
If there are no error pls try to reproduce the error with only ExtraSlots installed. There are couple of mods in your list that can cause issue on player death.
Yes, my bad! The items didn’t stay equipped, nor did they go into the tombstone. The log output had no errors displayed. Maybe I didn’t have it set to log them though, let me go onto a test world and check the settings and find something to kill me to test with.
If you know of some conflicting mods could you let me know which ones so maybe I could find alternatives for those ones?
Okay, so to help figure this out I did some testing! I made and equipped a couple items to test out if they'd disappear when I died. These appeared after enabled logging and debug logging.
[Info :Extra Slots] $item_chest_leather 1,6 pruned last taken slot [Info :Extra Slots] $bmp_advance_magicbook 1,7 pruned last taken slot
I then spawned a monster to kill me, then had these show;
[Info : Unity Log] [04/11/2025 13:42:06] Spawn time :1.4901 ms [Info : Unity Log] [04/11/2025 13:42:34] Vis equip model set to 1 [Info : Unity Log] [04/11/2025 13:42:44] Starting respawn [Message:Extra Slots] Extra slots backup saved 2025-04-11 1:42:44 PM, world TestyMcTester, items 0, size 0.0 kb, compressed 0.0 kb [Warning: Unity Log] [04/11/2025 13:42:44] Local player destroyed
I then tried to loot the tombstone to see if by chance it went in there despite settings;
[Info :Extra Slots] Inventory.GetEmptySlots: 35, AutoPickup: False [Info : Unity Log] [04/11/2025 13:43:14] Grave should fit in inventory, loot all [Info :Extra Slots] Destroyed tombstone component New Game Object (UnityEngine.GameObject) to prevent NRE on AutoPickup
Well yes apparently there are no items to keep on death. I've made version with more details for drop on death debug logging. Could you try it? Github link. It will log which items were temporary removed from inventory and then returned back. If there are no such lines then some other mod is destructively messing with on death behaviour.
First suspect was CLLC but I've checked the code and it's fine.
I am not aware if this mods do things on death. Unlikely, but worth the check:
AzuMiscPatches
BowsBeforeHoes
HelmetBeGone
RuneTablet
TeleportEverything
Complex system mods often have some ondeath behaviour:
RustyAlmanacClasses
Skyheim
Valheim Legends
It would help if you test with only ExtraSlots installed first to eliminate the doubts if the issue is in the mod itself.
I can not reproduce it myself with ExtraSlots only installed. And there are not particularly plenty of reported issues. You are the second to report this. So I guess there should be some incompatibilities with other mods. I made a version with additional logging to narrow down a potential cause and I need to know what mod is causing issues to start fixing. Without that just testing every mod by myself is very time consuming since I've never played any of a mentioned mods. If you wish to get it fixed I need your help in narrowing down what mod I have to check.
Yeah, I use too much mod and narrowing it down gonna take much time lol.
After few trials with your config, I found a workaround.. In the config, find the Auto Equip on Tombstone Pickup, then change the "equip all equipment slots" to true.
The equipment that were dropped (and gone) is going to appear in the equipment slot, you just need to re-equip it.
Well that's weird because this config does only one thing. After you took everything from tombstone it checks if items should be equipped. It doesn't move items anywhere or change the items at all. I guess some other mod is been messing with items after extraction from tombstone or something. Could you pls check mod list in the beginning of this comment section and see if there are mods that both of you use. It might help finding the issue.
The description says you can expand your general inventory rows, but I'm not seeing how this is done outside of configuration manager. How do you organically acquire inventory rows in game? Am I blind and I missed it somewhere?
Max amount of extra rows is controlled by Extra slots -> Amount of extra inventory rows config entry. Default is 0 rows. The progression is controlled by Extra slots -> Inventory rows progression enabled config entry. It is disabled by default which means you will get all rows available at any moment.
If you have progression enabled then you can define the order and moment when row is obtained. It is controlled by Progression - Inventory - Player keys and Progression - Inventory - Items config sections.
Every previous condition should be met for next condition to be checked. For example * you've set amount of 3 extra rows * you have rows progression enabled * you have default route in Progression - Inventory - Items like $item_wishbone, $item_dragontear, $item_yagluththing
In that case if you touch Dragon Tear without touching Wishbone first you will not have 2 extra rows. You have to touch every previous items for rows to be active. The same logic applies to Progression - Inventory - Player keys.
HELP! Mod will not even show up! I had "Equipment and quick slots" installed and running (but the hot keys never worked so I am trying yours). I removed the "Equipment and quick slots" file and installed yours. Your program shows up in the "Equipment Mgr" but no extra slots for anything or change to my inventory screen.
I'm running a clean install of windows 11, Thunderstore, loading Valheim from Steam. I setup a profile that only has this mod in it and I keep getting the following error:
[Error : Unity Log] NullReferenceException: Object reference not set to an instance of an object Stack trace: Localization.SetLanguageFromLocale () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0) Localization.SetStartupLanguage () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0) Localization..ctor () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0) Localization.Initialize () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0) Localization.get_instance () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0) LocalizationManager.Localizer.Load () (at <1e5f85703b18470d9506f30c2977e1b7>:0) ExtraSlots.ExtraSlots.Awake () (at <1e5f85703b18470d9506f30c2977e1b7>:0) UnityEngine.GameObject:AddComponent(Type) BepInEx.Bootstrap.Chainloader:Start() UnityEngine.GameObject:.cctor() SteamManager:Initialize() PlatformInitializer:InitializePlatform()
Well this error is related to Localization component of vanilla game. Do you have similar error in vanilla Player.log file if you run the game without mods at all? Could you try installing my other mod Waystones and check if the error persists (it uses similar LocalizationManager). Do you have previous log messsage "Setting language from locale"?
No, I don't see the error if I run Vanilla mode. I also tried it in Vortex with just BepinEX enabled and no error. I get the same error if I enable Waystones.
And I should have addded the whole part of the log loading ExtraSlots: [Info : HarmonyX] Patching bool Localization::LoadCSV(UnityEngine.TextAsset file, string language) with 0 prefixes, 1 postfixes, 0 transpilers, 0 finalizers 1 postfixes: * static void LocalizationManager.Localizer::LoadLocalization(Localization __instance, string language)
Could you pls use thunderstore, r2modman or gale mod manager and try to reproduce it. You can install only this mod and mod manager will install proper bepinex with it.
Fixed it! Unfortunately I don't know if it was switching to spanish and then back to english or clearing the cache of old mods. I did both and then tested unfortunately. My guess is it was a cached old mod causing a headache.
I'm running Extra Slots, but for some reason I cannot get the player inventory list to expand. The one time I did I had disabled all the other slots. I've checked your compatibility list and currently have no conflicts. I've even ensured the conflicts brought by Valheim Plus and Extended Archery are marked. Is anyone else getting this issue?
It's hard to get from your description so what exactly is your goal? You mentioned "player inventory list", I assume you mean extra rows of regular inventory. Extra dedicated slots and extra rows of regular inventory are handled by slots progression system enabled by default. You can disable it to get every slot and rows from the start. Otherwise you have to achieve certain goals in game to get more slots and rows.
There are many mods touching inventory system so there is always a room for issues. Mods listed in incompatibility list are hard incompatibilities doing the same thing as this mod.
We have this mod running on a dedicated server. One of the players is missing the 3rd utility slot (if I recall, you get it once you've killed Bonemass). Any way to check his specific progress/apply the 3rd slot?
If you didn't change default settings of slots progression you can give them a Wishbone to touch. That should make second Utility slot and third Quick slot to appear.
We gave him a wishbone and a swamp key, still no 3rd utility slot. All of the settings are set to default for this mod, besides the addition of 1 extra row. Extra Utility Slots is set to the default value of 2.
$item_demister,$mod_epicloot_assets_goldrubyring,$mod_epicloot_assets_silverring for third utility slot (Wisplight from Vanilla, Gold Ruby ring and Silver ring from EpicLoot)
in case anyone is having the issue of quickslot items getting removed and going back to inventory when you open said inventory, it's a conflict issue with simplesort mod. making them incompatible.
I am using it; I was testing the other mod when I noticed they were incompatible, figured I'd point out it here, maybe add it to the incompatible list. Great Mod by the way.
Just faced this issue, too. To be fair, one could argue it is intended behavior. I got suspicious because I was also wondering why my player inventory got sorted all the time. Turns out I somehow accidentally activated PlayerStickySort property of the Simple Sort mod. However, deactivating it also solves the equipment issue. In fact, I don't like my inventory auto sorted anyways. So I stick with Simple Sort as I don't like all the alternatives.
Currently it is not possible due to BepInEx input handling only working for mouse + keyboard in Valheim. Controller handling in Valheim has to be done in its own way. I have that feature in my todo list but can't say when.
Is not possible to set only one key for hotkeys? for example quick slot 1 in "q"? I tried, but the key pressing is just ignored. All the other things works great, awesome mod, thank you!
This mod does not call either MessageHud.ShowMessage or InventoryGrid.OnLeftClick at all. This is another mod causing this. Check for any mod updated earlier than March 04 2025.
328 comments
Here’s a google drive link to my config files and a screenshot of my mod list, hopefully you can help narrow it down! Thank you so much for such an awesome mod! https://drive.google.com/drive/folders/1Il8YeyecQbuS_kD0YZOZUzfkaZfQDPlH
If there are no error pls try to reproduce the error with only ExtraSlots installed. There are couple of mods in your list that can cause issue on player death.
If you know of some conflicting mods could you let me know which ones so maybe I could find alternatives for those ones?
Okay, so to help figure this out I did some testing! I made and equipped a couple items to test out if they'd disappear when I died. These appeared after enabled logging and debug logging.
[Info :Extra Slots] $item_chest_leather 1,6 pruned last taken slot
[Info :Extra Slots] $bmp_advance_magicbook 1,7 pruned last taken slot
I then spawned a monster to kill me, then had these show;
[Info : Unity Log] [04/11/2025 13:42:06] Spawn time :1.4901 ms
[Info : Unity Log] [04/11/2025 13:42:34] Vis equip model set to 1
[Info : Unity Log] [04/11/2025 13:42:44] Starting respawn
[Message:Extra Slots] Extra slots backup saved 2025-04-11 1:42:44 PM, world TestyMcTester, items 0, size 0.0 kb, compressed 0.0 kb
[Warning: Unity Log] [04/11/2025 13:42:44] Local player destroyed
I then tried to loot the tombstone to see if by chance it went in there despite settings;
[Info :Extra Slots] Inventory.GetEmptySlots: 35, AutoPickup: False
[Info : Unity Log] [04/11/2025 13:43:14] Grave should fit in inventory, loot all
[Info :Extra Slots] Destroyed tombstone component New Game Object (UnityEngine.GameObject) to prevent NRE on AutoPickup
I've made version with more details for drop on death debug logging. Could you try it? Github link.
It will log which items were temporary removed from inventory and then returned back.
If there are no such lines then some other mod is destructively messing with on death behaviour.
First suspect was CLLC but I've checked the code and it's fine.
I am not aware if this mods do things on death.
Unlikely, but worth the check:
Complex system mods often have some ondeath behaviour:
It would help if you test with only ExtraSlots installed first to eliminate the doubts if the issue is in the mod itself.
I made a version with additional logging to narrow down a potential cause and I need to know what mod is causing issues to start fixing. Without that just testing every mod by myself is very time consuming since I've never played any of a mentioned mods. If you wish to get it fixed I need your help in narrowing down what mod I have to check.
After few trials with your config, I found a workaround..
In the config, find the Auto Equip on Tombstone Pickup, then change the "equip all equipment slots" to true.
The equipment that were dropped (and gone) is going to appear in the equipment slot, you just need to re-equip it.
Thanks for the help!
Could you pls check mod list in the beginning of this comment section and see if there are mods that both of you use. It might help finding the issue.
Love the mod. Thanks.
The progression is controlled by Extra slots -> Inventory rows progression enabled config entry. It is disabled by default which means you will get all rows available at any moment.
If you have progression enabled then you can define the order and moment when row is obtained.
It is controlled by Progression - Inventory - Player keys and Progression - Inventory - Items config sections.
Every previous condition should be met for next condition to be checked.
For example
* you've set amount of 3 extra rows
* you have rows progression enabled
* you have default route in Progression - Inventory - Items like $item_wishbone, $item_dragontear, $item_yagluththing
In that case if you touch Dragon Tear without touching Wishbone first you will not have 2 extra rows.
You have to touch every previous items for rows to be active.
The same logic applies to Progression - Inventory - Player keys.
Maybe I am dense, LOL. I only see hotkeys in the configuration file. Am I missing something? - Never mind found it
Mod will not even show up! I had "Equipment and quick slots" installed and running (but the hot keys never worked so I am trying yours). I removed the "Equipment and quick slots" file and installed yours. Your program shows up in the "Equipment Mgr" but no extra slots for anything or change to my inventory screen.
[Error : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
Localization.SetLanguageFromLocale () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization.SetStartupLanguage () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization..ctor () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization.Initialize () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization.get_instance () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
LocalizationManager.Localizer.Load () (at <1e5f85703b18470d9506f30c2977e1b7>:0)
ExtraSlots.ExtraSlots.Awake () (at <1e5f85703b18470d9506f30c2977e1b7>:0)
UnityEngine.GameObject:AddComponent(Type)
BepInEx.Bootstrap.Chainloader:Start()
UnityEngine.GameObject:.cctor()
SteamManager:Initialize()
PlatformInitializer:InitializePlatform()
Any ideas?
Thx
Do you have similar error in vanilla Player.log file if you run the game without mods at all?
Could you try installing my other mod Waystones and check if the error persists (it uses similar LocalizationManager).
Do you have previous log messsage "Setting language from locale"?
I get the same error if I enable Waystones.
And I should have addded the whole part of the log loading ExtraSlots:
[Info : HarmonyX] Patching bool Localization::LoadCSV(UnityEngine.TextAsset file, string language) with 0 prefixes, 1 postfixes, 0 transpilers, 0 finalizers
1 postfixes:
* static void LocalizationManager.Localizer::LoadLocalization(Localization __instance, string language)
[Info : HarmonyX] Running ILHook manipulator on bool Localization::LoadCSV(UnityEngine.TextAsset file, string language)
[Info : HarmonyX] Writing postfixes
[Info : Unity Log] 04/08/2025 20:33:22: Loaded localization file #0 - 'localization' language: 'English'
[Info : Unity Log] 04/08/2025 20:33:22: Loaded localization file #1 - 'localization_extra' language: 'English'
[Info : Unity Log] 04/08/2025 20:33:22: Loaded localization file #2 - 'heightmap_message' language: 'English'
[Info : Unity Log] 04/08/2025 20:33:22: Loaded localization file #3 - 'localization_witch' language: 'English'
[Info : Unity Log] 04/08/2025 20:33:22: Loaded localization file #4 - 'localization_emotes' language: 'English'
[Info : Unity Log] 04/08/2025 20:33:22: Loaded localization file #5 - 'localization_ashlands' language: 'English'
[Info : Unity Log] 04/08/2025 20:33:22: Loaded localization file #6 - 'localization_captions' language: 'English'
[Info : Unity Log] 04/08/2025 20:33:22: Language has not been set explicitly yet
[Info : Unity Log] 04/08/2025 20:33:22: Setting language from locale
[Error : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
Localization.SetLanguageFromLocale () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization.SetStartupLanguage () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization..ctor () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization.Initialize () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization.get_instance () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
LocalizationManager.Localizer.Load () (at <458236d2b1704a4eaa8e3e00ef792122>:0)
ExtraSlots.ExtraSlots.Awake () (at <458236d2b1704a4eaa8e3e00ef792122>:0)
UnityEngine.GameObject:AddComponent(Type)
BepInEx.Bootstrap.Chainloader:Start()
UnityEngine.GameObject:.cctor()
SteamManager:Initialize()
PlatformInitializer:InitializePlatform()
Don't know if this helps or not. Btw, I did have this working on Windows 10 before I upgraded to Windows 11.
Thx
[Message: BepInEx] BepInEx 5.4.22.0 - valheim (4/7/2025 8:08:07 PM)
[Message: BepInEx] User is running BepInExPack Valheim version 5.4.2202 from Thunderstore
[Info : BepInEx] Running under Unity v2022.3.50.12835711
[Info : BepInEx] CLR runtime version: 4.0.30319.42000
[Info : BepInEx] Supports SRE: True
[Info : BepInEx] System platform: Bits64, Windows
[Message: BepInEx] Preloader started
[Info : BepInEx] Loaded 1 patcher method from [BepInEx.Preloader 5.4.22.0]
[Info : BepInEx] 1 patcher plugin loaded
[Info : BepInEx] Patching [UnityEngine.CoreModule] with [BepInEx.Chainloader]
[Message: BepInEx] Preloader finished
[Message: BepInEx] Chainloader ready
[Message: BepInEx] Chainloader started
[Info : BepInEx] 2 plugins to load
[Info : BepInEx] Loading [Display BepInEx Info In-Game 2.0.2]
[Info : BepInEx] Loading [Extra Slots 1.0.28]
[Info : Unity Log] 04/10/2025 09:45:06: Loaded localization file #0 - 'localization' language: 'English'
[Info : Unity Log] 04/10/2025 09:45:06: Loaded localization file #1 - 'localization_extra' language: 'English'
[Info : Unity Log] 04/10/2025 09:45:06: Loaded localization file #2 - 'heightmap_message' language: 'English'
[Info : Unity Log] 04/10/2025 09:45:06: Loaded localization file #3 - 'localization_witch' language: 'English'
[Info : Unity Log] 04/10/2025 09:45:06: Loaded localization file #4 - 'localization_emotes' language: 'English'
[Info : Unity Log] 04/10/2025 09:45:06: Loaded localization file #5 - 'localization_ashlands' language: 'English'
[Info : Unity Log] 04/10/2025 09:45:06: Loaded localization file #6 - 'localization_captions' language: 'English'
[Info : Unity Log] 04/10/2025 09:45:06: Language has not been set explicitly yet
[Info : Unity Log] 04/10/2025 09:45:06: Setting language from locale
[Error : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
Localization.SetLanguageFromLocale () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization.SetStartupLanguage () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization..ctor () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization.Initialize () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
Localization.get_instance () (at <4a69146fe1fd41f99ef64de6f63dd7e9>:0)
LocalizationManager.Localizer.Load () (at <458236d2b1704a4eaa8e3e00ef792122>:0)
ExtraSlots.ExtraSlots.Awake () (at <458236d2b1704a4eaa8e3e00ef792122>:0)
UnityEngine.GameObject:AddComponent(Type)
BepInEx.Bootstrap.Chainloader:Start()
UnityEngine.GameObject:.cctor()
SteamManager:Initialize()
PlatformInitializer:InitializePlatform()
[Message: BepInEx] Chainloader startup complete
There are many mods touching inventory system so there is always a room for issues. Mods listed in incompatibility list are hard incompatibilities doing the same thing as this mod.
- $item_wishbone for second utility slot (Wishbone)
- $item_demister,$mod_epicloot_assets_goldrubyring,$mod_epicloot_assets_silverring for third utility slot (Wisplight from Vanilla, Gold Ruby ring and Silver ring from EpicLoot)
So it's intended behaviour.tried in the config but no luck ?
[Error : Unity Log] MissingMethodException: Method not found: void .MessageHud.ShowMessage(MessageHud/MessageType,string,int,UnityEngine.Sprite)
Stack trace:
(wrapper dynamic-method) InventoryGrid.DMD<InventoryGrid::OnLeftClick>(InventoryGrid,UIInputHandler)
UIInputHandler.OnPointerDown (UnityEngine.EventSystems.PointerEventData eventData) (at <7820629c8f264377b368aa712114272c>:0)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerDownHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at <49bb92c18012429a9df399f241c8071d>:0)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at <49bb92c18012429a9df399f241c8071d>:0)
UnityEngine.EventSystems.EventSystem:Update()