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.
StackIT
Server-synced stack, weight and pickup control for Valheim. Tune stacks per resource (wood 3x, metal 2x), cut item weights by a percentage, raise carry capacity, and hold Shift to harvest a whole berry patch
| Date uploaded | 3 weeks ago |
| Version | 0.3.0 |
| Download link | Wubarrk-StackIT-0.3.0.zip |
| Downloads | 564 |
| Dependency string | Wubarrk-StackIT-0.3.0 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350README
StackIT is a small, server-authoritative mod that decides two numbers for every item in the game: how many fit in a slot, and what one of them weighs. Both are multipliers you set once and forget â or, if you want the control, tune per category, per resource and per individual item, with exclusions and a hard ceiling. The server owns the settings and clients sync to it, so nobody has to compare config files.
It also stops you pressing E forty times in a berry patch: hold Shift and the whole patch comes up at once.
It deliberately never makes weapons, armour or tools stackable. Here is why.
ð Contents
â ïļ Upgrading to 0.3
Nothing changes on its own. Every new setting ships switched off: the four resource multipliers in 3 - Stack Resources are
0(follow the category, then the global multiplier),Stack Multiplier Overridesis empty andWeight Reduction Bonus (%)is0. A server that upgrades and touches nothing computes exactly the stack sizes and weights it did on 0.2.3.Everyone needs 0.3.0. The new settings are server-synced and change what the server computes, so clients on an older StackIT are asked to update rather than play with different numbers.
â ïļ Upgrading to 0.2
Harvest All is on by default, and the key is Shift. Shift is also the run key, so sprinting up to a berry bush and pressing Use while still holding it will take the whole patch, not one bush. That is usually what you wanted anyway, but it is worth knowing before it surprises you. Change the key or set
Harvest All = falsein section 7 - Pickup.Nothing else changes on its own.
Auto Pickup Rangeships at 2, which is exactly vanilla â raise it yourself if you want harvests to collect themselves.Everyone needs the same version. The pickup settings are server-synced, so clients on an older StackIT are asked to update rather than play without them.
â ïļ Upgrading from 0.0.1
Weight reduction is on by default. 0.1.1 adds a Weight Multiplier that ships at 0.5, so every item weighs half what it used to the moment you launch. That is a real balance change on an existing server, and it is deliberate â bigger stacks are only worth having if you can carry them. If you want the old behaviour, set
Weight Multiplier = 1.0in section 4 - Weight.Your stack multiplier carries over. It stayed in section
2 - Settingsunder the same key precisely so your existing value survives the upgrade untouched.Everyone needs 0.1.1. Clients still on 0.0.1 will be asked to update, because they would compute different stack sizes to the server.
âïļ Features
ðĶ Bigger Stacks
One multiplier applied to the base stack size of every item that already stacks in vanilla. Defaults to 3x: 50 wood becomes 150, 20 trophies become 60. A Max Stack Size ceiling (default 9999) is applied afterwards, so a big multiplier on an already-big stack can never produce a silly number.
Stack sizes are always recomputed from the vanilla value, never from the current one. Turn the multiplier down mid-session and it genuinely goes down; push a new config from the server ten times and you get the same answer ten times.
ðŠķ Lighter Items
The other half of the problem. A multiplier on every item's weight, defaulting to 0.5 â half of vanilla. Two details matter:
- Items that weigh nothing in vanilla stay weightless. They are meant to be free.
- Everything else gets a Minimum Item Weight floor (default 0.01) so nothing rounds down to free by accident.
On top of the multiplier there is a Weight Reduction Bonus (%): a further percentage taken off
every item. Set it to 25 and everything is 25% lighter than the multiplier alone would make it â at
the default multiplier of 0.5, a log that weighs 2 in vanilla ends up at 0.75. It ships at 0. Categories that have a
multiplier of their own replace the global one, but the bonus is never replaced, so it is the one dial
that moves every weight in the game at once. Weight Overrides and Excluded Items name an exact weight
and are exempt; the minimum-weight floor still holds, so 100 leaves everything at the floor rather
than at nothing.
ð More Carry Weight
Extra Carry Weight is a flat allowance added on top of vanilla's 300 and anything Megingjord is already giving you. It hooks the same call the encumbrance check and the inventory readout use, so the number in the corner of your inventory and the point at which you start waddling always agree. Defaults to 0 â the stack and weight multipliers usually get you there on their own.
ðŋ Harvest All
Hold Shift and press Use on a raspberry bush and you get the whole patch, not one bush. The same goes for mushrooms, thistle, dandelion, flint, branches, stone â anything the game calls a pickable. Let go of Shift and Use behaves exactly as it always did, so nothing you already know changes.
Picking a plant does not put items straight in your pocket: it drops them on the ground where the
plant stood, which is fine for one bush and useless for forty. That is what Auto Pickup Range is
for â the radius loose items are vacuumed in from, 2 in vanilla and up to 64 here. Raise it and a
harvest collects itself. Vanilla's own rules still hold: nothing is pulled in while you are out of
slots or over your carry limit.
The prompt on your crosshair tells you it is there â [Shift + E] Harvest all sits under vanilla's
own [E] Pick up, follows whatever key you bind, and hides itself on a gamepad.
Two guards, because "pick everything nearby" is a sharp tool:
- Max Count (default 50) caps a single harvest, taking the nearest plants first. If a harvest hits the cap you are told so in the corner â it never quietly stops early and lets you believe the patch is empty.
- Same Type Only (default off) restricts a harvest to plants dropping the item you actually picked, for when you want the berries out of a clearing and the mushrooms left where they are.
Plants sitting in tar are skipped rather than each complaining about it, and an Excluded Items list keeps named plants out of every harvest for good.
The modifier key is the one setting in StackIT the server does not decide. Which key you hold is a matter of taste and of keyboard, so it stays local to you â change it to Ctrl, Alt or anything else in
7 - Pickup.
ðïļ Per Category
If one number for the whole game is too blunt, every category has its own override. Leave a category
at 0 and it follows the global multiplier; set anything else and it wins.
| Stacks | Weight | |
|---|---|---|
| Materials | â | â |
| Consumables | â | â |
| Ammo | â | â |
| Trophies | â | â |
| Fish | â | â |
| Misc | â | â |
| Weapons | â | â |
| Armor | â | â |
| Tools | â | â |
Weapons, armour and tools have no stack setting on purpose â see below.
ð§ą Per Resource
The game files wood and metal under the same heading â Materials â but they are nothing alike. Wood is bulk you burn through building; metal is a chain of ore, scrap and smelting. Per Resource splits Materials into four groups so each can have its own number:
| Resource | Covers | Vanilla stack |
|---|---|---|
| Wood | Wood, Finewood, Corewood, Yggdrasil Wood, Ancient Bark, Ashwood, Timberwood | 50 |
| Stone | Stone, Grausten, Black Marble | 50 |
| Metal | Every ore and scrap the smelter and blast furnace take, and every bar they give back â copper, tin, bronze, iron, silver, black metal, flametal and bloodgold | 30 |
| Leather | Hides, pelts, leather scraps and leather straps | 50 (Troll Hide 20) |
[3 - Stack Resources]
Wood = 3
Metal = 2
That is triple wood stacks (50 â 150) and double metal ones (30 â 60), each independent of the other and
of the Materials category. A group left at 0 follows its category, then the global multiplier, so
nothing changes until you set one. The exact prefab names in each group are listed in the config file's
comments, ready to copy into an exclusion or override list.
When more than one setting could apply to an item, the most specific one wins:
- Excluded Items â held at the vanilla stack size.
- Stack Size Overrides â an absolute size.
- Stack Multiplier Overrides â that one item's own multiplier.
- Per Resource â the item's resource group, if it is set.
- Per Category â the item's category, if it is set.
- Stack Multiplier â the global default.
Max Stack Size clamps whatever comes out, and weapons, armour, tools and anything that does not stack in vanilla are never touched.
ðŊ Per Item
For when a category or a resource is still too broad. Two comma-separated lists set absolute values that ignore every multiplier, and a third scales the vanilla stack instead:
Stack Size Overrides = Wood:500, Stone:500, Coins:9999
Weight Overrides = Wood:0.1, Iron:4, BlackMetal:3
Stack Multiplier Overrides = Coal:4, Flint:2
The multiplier list is separate from the absolute one so that Coal:4 can only ever mean "four times
the vanilla stack", never "four per stack". It is also where modded items go, since they belong to no
built-in group. Entries of zero or less are ignored with a warning.
And two more hold specific items at their vanilla numbers, whatever the multipliers say:
[2 - Settings] Excluded Items = Coins, SurtlingCore
[4 - Weight] Excluded Items = Ymirremains
All five lists accept either the prefab name (Wood) or the shared name token ($item_wood),
because item dumps and in-game tooltips do not agree on which one you are looking at. All five are
case-insensitive, and all five are read in invariant culture â a config written on one machine reads
identically on every other one, whatever its decimal separator.
ðĄïļ Why Gear Never Stacks
Plenty of stack mods will happily let you stack swords. StackIT will not, and this is the reason.
Valheim decides whether two items can merge in Inventory.FindFreeStackItem, and it compares
name, quality and world level â it never looks at durability. So if stacking gear were allowed, a
sword at full durability dropped onto a stack of worn ones would simply become a worn one. The game
keeps a single durability value for the whole stack, and the better item's is discarded without a
message.
There is no config flag to turn this on, because there is no version of it that is not silent data loss. Weight reduction still applies to gear in full â a lighter armour set is free of that problem.
The same rule covers anything that does not stack in vanilla, for the same reason. If you point a stack override at one of those items, StackIT ignores it and says so once in the log.
âïļ Configuration
Everything lives in BepInEx/config/wubarrk.stackit.cfg, generated on first launch. Every setting
below is server-synced except Harvest All Modifier, which is a keybind and stays local.
1 - General
| Setting | Default | What it does |
|---|---|---|
| Lock Configuration | true |
Only server admins may change the settings. |
| Verbose Logging | false |
Logs how many item prefabs were touched on each re-apply. Handy while tuning overrides. |
2 - Settings
| Setting | Default | What it does |
|---|---|---|
| Stack Multiplier | 3.0 |
Applied to the base stack size of everything that stacks in vanilla. |
| Max Stack Size | 9999 |
Hard ceiling, applied after the multiplier and after any override. |
| Excluded Items | (empty) | Comma-separated names held at their vanilla stack size. |
| Stack Size Overrides | (empty) | Name:Value pairs setting absolute stack sizes. |
| Stack Multiplier Overrides | (empty) | Name:Multiplier pairs scaling that item's vanilla stack, e.g. Wood:3, IronOre:2. |
3 - Stack Categories
Materials, Consumables, Ammo, Trophies, Fish, Misc â each defaults to 0, meaning
use the global Stack Multiplier.
3 - Stack Resources
Wood, Stone, Metal, Leather â each defaults to 0, meaning use the category multiplier, then the
global Stack Multiplier.
4 - Weight
| Setting | Default | What it does |
|---|---|---|
| Weight Multiplier | 0.5 |
Applied to every item's base weight. 1.0 is vanilla. |
| Weight Reduction Bonus (%) | 0 |
Percentage taken off every item's weight on top of the multipliers. 25 is 25% lighter. Overrides and exclusions are exempt. |
| Minimum Item Weight | 0.01 |
Floor applied after the multiplier. Vanilla-weightless items stay weightless. |
| Excluded Items | (empty) | Comma-separated names held at their vanilla weight. |
| Weight Overrides | (empty) | Name:Value pairs setting absolute weights, ignoring the floor. |
5 - Weight Categories
Materials, Consumables, Ammo, Trophies, Fish, Misc, Weapons, Armor, Tools â each
defaults to 0, meaning use the global Weight Multiplier.
6 - Carry Weight
| Setting | Default | What it does |
|---|---|---|
| Extra Carry Weight | 0 |
Added to every player's carry limit, on top of vanilla and Megingjord. |
7 - Pickup
| Setting | Default | What it does |
|---|---|---|
| Auto Pickup Range | 2.0 |
Radius in metres loose items are vacuumed in from. 2 is vanilla. |
| Harvest All | true |
Whether holding the modifier while pressing Use picks every plant nearby. |
| Harvest All Radius | 8.0 |
Radius in metres searched around the plant you picked. |
| Harvest All Max Count | 50 |
Most plants one harvest may take, nearest first. |
| Harvest All Same Type Only | false |
Restrict a harvest to plants dropping the same item you picked. |
| Excluded Items | (empty) | Comma-separated names never mass-harvested. |
| Harvest All Modifier | LeftShift |
The key you hold. Not server-synced â this one is yours. |
ðĪ Multiplayer
Install it on the server. Configuration is server-authoritative through ServerSync: the server holds the real values and pushes them to every client on connect, and again whenever an admin changes one â no restart, no reconnect, no comparing config files with your friends.
Lock Configuration (on by default) stops clients editing their own copy to give themselves bigger
stacks. The single exception is Harvest All Modifier â a keybind is not a balance setting, so each
player keeps their own. Because MinimumRequiredVersion matches the mod version, a client on an older StackIT is
asked to update rather than quietly playing with different numbers to everyone else.
Single-player and dedicated servers both work with no extra setup. StackIT touches item prefabs only â it does not write to your save.
ðĶ Dependencies
â ïļ Requires: BepInEx
| Dependency | Why |
|---|---|
| BepInExPack Valheim | The mod loader (also provides HarmonyX). |
ðĨ Installation
With Gale (recommended): just install StackIT â the dependency above is pulled in for you.
Manual install:
- Install BepInExPack Valheim.
- Drop
StackIT.dllintoBepInEx/plugins. - Launch once to generate
BepInEx/config/wubarrk.stackit.cfg, then set your multipliers. - On a dedicated server, install it on the server as well â that is the copy that decides.
ð Licence
StackIT is released under the MIT License (LICENSE.md, included in the download). Fork it, ship it, sell it, put it in your
modpack â keep the copyright notice and you are done. No permission needed and none to ask for.
ServerSync.cs (by Blaxxun) is compiled into the DLL and stays under its own author's terms.
Bug reports and suggestions are genuinely wanted â Discord is the fastest way to reach me.
CHANGELOG
Changelog
[0.3.0]
Added
- Stack sizes can be tuned per resource. Wood and metal are both "Materials" to the game, so until
now they shared one multiplier, or had to be overridden one item at a time in absolute numbers - which
meant working out each item's vanilla stack first (wood is 50, every ore and bar is 30). The new
3 - Stack Resourcessection splits Materials into four groups with a multiplier each: Wood (Wood, Finewood, Corewood, Yggdrasil Wood, Ancient Bark, Ashwood, Timberwood), Stone (Stone, Grausten, Black Marble), Metal (every ore and scrap the smelter and blast furnace take, and every bar they give back) and Leather (hides, pelts, scraps and straps).Wood = 3andMetal = 2gives triple wood stacks and double metal ones, independently of each other and of the Materials category. Each group ships at0, meaning follow the category, then the global multiplier, so nothing moves until you set one. - Stack Multiplier Overrides. A per-item list of multipliers -
Wood:3, IronOre:2- for anything the four groups do not cover, modded items included. It sits besideStack Size Overridesrather than extending its syntax on purpose: that list holds absolute sizes, and aWood:3that meant "three per stack" in one list and "three times" in another would be a trap. Like the other lists it takes a prefab name or a$item_token and ignores case. Entries of zero or less are rejected with a warning. - Weight Reduction Bonus (%). A percentage taken off every item's weight on top of the Weight
Multiplier: at the default multiplier of
0.5, a bonus of20makes items 20% lighter again, so a weight-2 log ends up at 0.8. It applies to the categories too - a category's own multiplier replaces the global one, but the bonus still stacks on top - which makes it the one dial that moves every weight in the game at once. Ships at0, which is exactly the old behaviour. Weight Overrides and Excluded Items are exempt, since they name an exact weight, and the Minimum Item Weight floor still applies, so100leaves everything at the floor rather than at nothing. - Verbose Logging says what it applied. The summary line now includes the weight bonus, any resource multipliers that are set, and how many per-item multipliers are loaded, so you can see the mod read your config the way you meant it.
Changed
- A stack size is now decided in this order, first match wins: Excluded Items (vanilla) â Stack Size
Overrides (absolute) â Stack Multiplier Overrides (per item) â resource group â category â global
Stack Multiplier.
Max Stack Sizestill clamps the result last, and gear and anything that does not stack in vanilla are still never touched. - Override lists turn away
NaNand infinity. They used to parse cleanly and flow through the clamp untouched:Iron:NaNin Weight Overrides left iron weighingNaN, andCoal:NaNin Stack Size Overrides left coal with a stack size of -2147483648. They are now ignored with the same warning as any other malformed entry. MinimumRequiredVersionmoved to 0.3.0. The new settings are server-synced and change the numbers the server computes, so clients on an older StackIT are asked to update.
[0.2.3]
Valheim 1.0.16 compatibility
- Rebuilt for Valheim 1.0.16 (client build 25527674 / dedicated server build 25527701, network
version 40). No source change was needed: every Harmony target (
ObjectDB.Awake/CopyOtherDB,ZNetScene.Awake,Player.GetMaxCarryWeight/AutoPickup,Pickable.GetHoverText/Interact) and every game member the item, pickup and category code reads was checked against the 1.0.16 decompile and is unchanged. - No behaviour change.
MinimumRequiredVersionfollows the mod version to 0.2.3, as it always has - everyone updates together.
[0.2.2]
Valheim 1.0.7 compatibility
- Rebuilt for Valheim 1.0.7 (client build 25185596 / dedicated server build 25185644, network
version 39) on BepInEx 5.4.2350. No source change was needed: every Harmony target
(
ObjectDB.Awake/CopyOtherDB,ZNetScene.Awake,Player.GetMaxCarryWeight/AutoPickup,Pickable.GetHoverText/Interact) and every game member the item, pickup and category code reads was checked against the 1.0.7 decompile and is unchanged. The 1.0 trinket slot (ItemType.Trinket) was already mapped to the Armor category. - No behaviour change.
MinimumRequiredVersionfollows the mod version to 0.2.2, as it always has - everyone updates together. - The Thunderstore dependency now names the 1.0 BepInEx pack (
denikson-BepInExPack_Valheim-5.4.2350).
[0.2.1]
Added
- Harvest All is visible on the crosshair. A plant's hover prompt now carries a second line -
[Shift + E] Harvest all- underneath vanilla's own[E] Pick up, in the same idiom the game uses for its other modifier prompts. It follows whatever key you bind rather than naming Shift, and it hides itself on a gamepad, where a keyboard modifier means nothing. Until now the feature was invisible unless you had read the config, which is a poor way to ship a keybind.
Changed
MinimumRequiredVersionmoved to 0.2.1. Nothing about the config changed in this release, so a 0.2.0 client would in fact have synced correctly - but the pin follows the mod version, and loosening it is a decision for a release that needs it.
[0.2.0]
Added
- Harvest All. Hold Shift and press Use on any plant and you pick every other plant within 8 m instead of just that one - a raspberry patch, a mushroom cluster or a thistle stand comes up in a single press. The plant under the cursor is still picked by the game itself; StackIT only adds the rest of the patch. Off-limits by default to nothing, but there is a Max Count (50) so a hold on a dense field cannot strip a whole biome, and you are told when a harvest hits it.
- Auto Pickup Range. The radius loose items are vacuumed in from, defaulting to vanilla's 2 m and raisable to 64. It is the other half of Harvest All: picking a patch scatters the drops across the ground where the plants were, and a wider vacuum is what turns that back into one keypress. Vanilla's own rules still apply - nothing is pulled in while you are encumbered or out of slots.
- Harvest All Modifier, Harvest All Radius, Harvest All Same Type Only and a Harvest
All Excluded Items list, in the new
7 - Pickupsection. Same-type-only restricts a harvest to plants dropping the item you actually picked; the exclusion list accepts either the dropped item's prefab name (Dandelion) or the plant's, and is case-insensitive like the other three lists.
Changed
- The modifier key is the one setting the server does not decide. Everything else in StackIT is server-authoritative; which key you hold is a matter of taste and of keyboard, so it stays local.
- Plants sitting in tar are skipped by a harvest rather than each printing
$hud_itemstucktar, and a harvest takes the nearest plants first, so hitting the cap takes the patch around your feet rather than an arbitrary slice of the sphere. MinimumRequiredVersionmoved to 0.2.0. Clients on 0.1.1 will be asked to update, because the new pickup settings are server-synced and they would not receive them.
[0.1.1]
Added
- Weight reduction. Every item's weight is now multiplied by a configurable factor, defaulting to 0.5 - half of vanilla. Bigger stacks only help if you can carry them, so weight is now the other half of the mod rather than something the stack multiplier quietly makes worse. Items that weigh nothing in vanilla stay weightless, and a Minimum Item Weight floor stops anything rounding down to free.
- Extra Carry Weight. A flat allowance added to every player's carry limit, on top of vanilla's
300 and anything Megingjord contributes. Defaults to 0. It patches
Player.GetMaxCarryWeight, so the encumbrance check and the inventory readout both agree with it. - Per-category multipliers. Stacks and weights can each be tuned per category instead of one
number for the whole game - Materials, Consumables, Ammo, Trophies, Fish and Misc for stacks, plus
Weapons, Armor and Tools for weight. Leave a category at
0and it follows the global multiplier. - Per-item overrides.
Wood:500, Stone:500sets absolute stack sizes that ignore the multiplier entirely;Wood:0.1, Iron:4does the same for weights. Both accept the prefab name (Wood) or the shared name token ($item_wood), and both are case-insensitive. - Exclusion lists. Comma-separated prefab names held at their vanilla stack size or vanilla weight - for the coins, cores and quest items you would rather the multiplier never touched.
- Max Stack Size. A hard ceiling applied after the multiplier and after any override, so a large multiplier on an already-large stack cannot produce an absurd number.
- Verbose Logging toggle, which reports how many prefabs were touched on each re-apply. Useful while tuning overrides.
Changed
- Gear is explicitly never stacked. Weapons, armour and tools are skipped by name, and so is anything that does not stack in vanilla. Valheim merges stacks by item name and quality only - it does not compare durability - so a pristine sword dropped onto a worn stack would silently take the worn item's durability. Weight reduction still applies to gear; only stacking is withheld. An override aimed at an unstackable item is ignored and logged once.
- Mod-added items are picked up more reliably. The sweep now covers
ZNetScene.m_prefabsas well asObjectDB.m_items, so item prefabs that never made it into the ObjectDB are still handled. Each prefab is visited once per pass. - Everything is recomputed from cached vanilla values, never from the live value, so repeated config pushes cannot compound. Lowering a multiplier now genuinely lowers it, and clearing an exclusion restores the vanilla number exactly.
- Overrides parse in invariant culture, so a config written on one machine reads identically on every other one regardless of its decimal separator.
- The config layout gained five new sections. Your existing
Stack Multiplieris preserved - it stayed in2 - Settingsunder the same key specifically so upgrading from 0.0.1 keeps it. MinimumRequiredVersionmoved to 0.1.1. Clients still on 0.0.1 will be asked to update, because they would compute different stack sizes to the server.
Licence
- Relicensed under the MIT License. The previous terms required the author's approval before
anyone could make a derivative work, which is not open source by any usable definition. MIT keeps
the attribution requirement and drops the permission gate.
ServerSync.csis compiled in and stays under its own author's terms; seeLICENSE.md.
[0.0.1]
- Initial release.
- Added dynamic item stack size modifier.
- Configurable multiplier defaults to 3x.
- Integrated
ServerSyncfor server-authoritative configuration.