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
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 Resources section 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 = 3 and Metal = 2 gives
triple wood stacks and double metal ones, independently of each other and of the Materials category.
Each group ships at 0, 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 beside Stack Size Overrides rather than
extending its syntax on purpose: that list holds absolute sizes, and a Wood:3 that 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 of 20 makes 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 at 0, 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, so
100 leaves 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 Size still clamps the result last, and gear and anything that does not
stack in vanilla are still never touched.
Override lists turn away NaN and infinity. They used to parse cleanly and flow through the clamp
untouched: Iron:NaN in Weight Overrides left iron weighing NaN, and Coal:NaN in Stack Size
Overrides left coal with a stack size of -2147483648. They are now ignored with the same warning as any
other malformed entry.
MinimumRequiredVersion moved 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.MinimumRequiredVersion follows 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.MinimumRequiredVersion follows 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
MinimumRequiredVersion moved 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 - Pickup section. 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.
MinimumRequiredVersion moved 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 0 and it follows the global multiplier.
Per-item overrides.Wood:500, Stone:500 sets absolute stack sizes that ignore the multiplier
entirely; Wood:0.1, Iron:4 does 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_prefabs as well
as ObjectDB.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 Multiplier is preserved - it
stayed in 2 - Settings under the same key specifically so upgrading from 0.0.1 keeps it.
MinimumRequiredVersion moved 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.cs is compiled in and stays
under its own author's terms; see LICENSE.md.
[0.0.1]
Initial release.
Added dynamic item stack size modifier.
Configurable multiplier defaults to 3x.
Integrated ServerSync for server-authoritative configuration.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.