Mods / Quick Stack

Tags: #QoL #Storage #Utility
Author: Hellaeh
Side: Both
Created: Dec 11th 2023 at 2:34 AM
Last modified: 17 hours ago
Downloads: 3249
Follow Unfollow 64

Recommended download (for Vintage Story 1.20.12):
QuickStack-0.7.1.zip  1-click install


Requires Favorite mod to function

It is recommended to keep whitelist (default) mode on

 

Quick Stack:

  • Scans the content of your inventory, while ignoring favorite items
  • Scans nearby containers in radius (configurable)
  • Tries to place items from your inventory into container based on their content, preferring already filled slots

 

Quick Refill:

  • Scans the content of your inventory, while ignoring non-favorite items
  • Scans nearby containers in radius (confugurable)
  • Tries to refill your non-full favorite slots from containers

 

Usage:

  • Assign hotkey for Quick Stack in settings
  • Assign hotkey for Quick Refill in settings
  • Items marked as Favorite will not stack away on quick stack to nearby inventories
  • Items marked as Favorite will be refilled on quick refill from nearby inventories

 

Server Config:

  • MaxRadius - enforces a limit on Radius, keep it reasonable (hard cap is 256)

Client Config:

  • Radius - how far the mod should scan for containers, limited by MaxRadius
  • Mode
    • 0 - Whitelist
    • 1 - Blacklist
  • Whitelist - a list of whitelisted containers, use chat commands to add/remove container
  • Blacklist - a list of blacklisted containers, use chat commands to add/remove container

 

Chat commands:

Values in square brackets [...] are optional, and brackets themself should be omitted in any case
/quickstack maxradius [value] or /qs maxradius [value] - sets or prints "MaxRadius" (need to be a root)
.quickstack or .qs - adds the container you're looking at to the current mode list (or removes if already present)
.qs add - adds the container you're looking at to the current mode list
.qs remove - removes the container you're looking at from the current mode list
.qs mode - toggle between blacklist and whitelist modes
.qs radius [value] - sets or prints "Radius"

 

Currently in alpha. Expect many bugs. Feel free to report any bug found in the comments below or on github

 

Roadmap:

  • Add visual and sound cue to highlight the container that took the items
  • Blacklist / Whitelist for containers partially done
  • Refill from containers
  • Make favorite system a standalone mod
  • More? Write down your wishes in the comments.

Mod Version For Game version Downloads Release date Changelog Download 1-click mod install*
0.7.1 34 17 hours ago QuickStack-0.7.1.zip 1-click install

- fix loading issue (?)
- bump gamedep 1.20.12
- change default hotkeys to unassigned

0.7.0 165 Jun 30th at 4:26 PM QuickStack-0.7.0.zip 1-click install

- add `/quickstack maxradius` and alias `/qs maxradius` commands, requires root
- add `.quickstack radius` and alias `.qs radius` commands

0.6.0 88 Jun 27th at 2:49 PM QuickStack-0.6.0.zip 1-click install
  • add `quickstack` and `qs`(alias) chat commands, toggle add/remove to/from blacklist/whitelist on usage
  • add `add` chat subcommand, add container to blacklist/whitelist on usage
  • add `remove`chat subcommand, remove container from blacklist/whitelist on usage
  • add `mode` chat subcommand, toggle between blacklist/whitelist on usage
  • add "crate" classname by default to whitelist
0.5.1 105 Jun 21st at 11:12 PM QuickStack-0.5.1.zip 1-click install

0.5.1 - fix client radius not being used

forwarded 0.5.0

  •  add client config
  •  add first iteration of blacklist/whitelist feature (not user friendly via client config)
  •  change `Radius` to `MaxRadius` in server config
  •  add `Radius` to client config
  •  bump game dep to `1.20.7`
  •  bump helfavorite dep to `0.3.0`
0.4.2 1448 Jan 18th 2024 at 5:19 PM QuickStack-0.4.2.zip 1-click install

Fix stack\refill from\to sealed barrels - issue
Performance improvements for Quick Refill

0.4.1 350 Dec 30th 2023 at 6:13 PM QuickStack-0.4.1.zip 1-click install

Can no longer stack/refill to/from ground storage (piles, pit kiln) to avoid a crash

0.4.0
1.18.15 - 1.19.0-rc.3
230 Dec 25th 2023 at 9:12 PM QuickStack-0.4.0.zip 1-click install

1.19 ready

Added quick refill functionality. Default hotkey "CTRL+X". Summary:
Items marked as favorite will be refilled from nearby containers.

0.3.1 222 Dec 23rd 2023 at 4:03 PM QuickStack-0.3.1.zip 1-click install

Split into "Quick Stack" and "Favorite"
Add "Favorite" as dependency

0.2.2 261 Dec 15th 2023 at 2:02 AM QuickStack-0.2.2.zip 1-click install

Added sound cue on the container that took at least one item

0.2.1 169 Dec 13th 2023 at 6:56 PM QuickStack-0.2.1.zip 1-click install

Fix stacking to the same container

0.2.0 171 Dec 12th 2023 at 9:15 PM Empty QuickStack-0.2.0.zip 1-click install

17 Comments (oldest first | newest first)

💬 Hellaeh , 17 hours ago

Hopefully i fixed the issue. You have to update both this and "favorite" mods.

Bov1ne, BulletSponge 

💬 Bov1ne, 21 hours ago

I'm a new player and just installed the most recent stable. I only installed 4 mods including favorite and this one. The default quickstack key (X) doesn't seem to do anything when I tried putting half a stack of cattails in a chest, but mods do work as the 'bed respawn' I also installed works. I noticed in the keymappings that 'favorite toggle' or something was present (not sure if that's part of the favorite mod or not but I thought it might be). I didnt' see anything for quick stack to map it though. I noticed X which you say is your default guy was mapped by default to 'swap left and right hands'. I changed that mapping to something else, but X didn't quick stack when I tried it after. 

 

I tried 'stack attack' mod and that one lets me quickstack, the controls also show up in the mapping. If yours starts with 'Q' it wasn't showing in the bindings search, but this other mod does. Hope that helps narrow down troubleshooting a bit for you.

💬 Hellaeh , 4 days ago

I do sometimes wonder if my mod works at all for you guys? Judging by the comments it does work for some. 

💬 Hellaeh , 4 days ago

A quick checklist:

  • Are versions of the mod and the game listed as compatible?
  • Are there any errors in the logs? "users/../appdata/roaming/vintagestorydata/logs" specifically "client-main.log" and "server-main.log".

 

💬 BulletSponge, 5 days ago

Hey Hellaeh sorry for a delayed reply, I was trying to stack like-blocks in creative in a standard chest. I had non-favorited blocks of "low fertility soil", "hay-bale" and "slate cobblestone". I had about 10 of each in my inventory, and about 20 of each in the chest. Tried it with and without other mods, no dice. 

💬 Hellaeh , Jun 29th at 10:42 AM

What exactly are you trying to stack? Just an FYI - this is not quick deposit mod, it will stack only identical (or similar things), that are not favorited, from your inventory to nearest compatible whitelisted container.  BulletSponge

If you're sure what you're doing is correct, then try to disable other mods if you have any (aside from "favorite" mode), and test it in creative.

Edit: If container is empty, then no stack will happen as there's nothing to stack.

💬 BulletSponge, Jun 29th at 12:11 AM

I can see the config files, and the option in key configuration. Mode is whitelist, and the chests I'm interacting with are added to that list, but nothing seems to happen when pressing X, tried it with different keys, same result.

💬 GarnetAnimations, Jun 23rd at 12:18 AM

I don't see the keys for the mod in settings & pressing X in game doesn't do anything it seems. I have favorites installed as well

💬 Hellaeh , Jun 21st at 11:17 PM

Post classnames of inventories you want to add by default. Test them first tho, because i will not.

💬 Hellaeh , Jun 21st at 11:05 PM

Explanation of client config keys:

"Mode": 0 - whitelist (default), 1 - blacklist
"Whitelist": works only if `Mode == 0` contains an object with key-value pairs example `{"inventoryClassName": { "ApplicableTo": 0 }}`
"Blacklist": works only if `Mode == 1` otherwise same as whitelist

"Radius": self-explanatory

So if you want to add a new container type you would need to get it's inventory classname and add a new entry to `Blacklist`/`Whitelist` respectively. 

Inner object inside value with "ApplicableTo" does nothing atm, but still needed, don't forget about when adding a new container.

💬 Hellaeh , Jun 21st at 10:46 PM

Ughhh, i really didn't wanna release it this early. But otherwise it will take forever (i'm too lazy). 0.5.0 by default is in whitelist mode with only chests and barrels allowed to quickstack/refill. You can add/change it in client config (yeah, not very user friendly, ik).
JustaKobold 

💬 JustaKobold, Jun 20th at 5:04 PM

I have a crash happening, i used quick stack to sort some of my inventory, i also have primitive survival and had some of the smokers around, one of the smokers already had fire wood on it and it seems it stacked more firewood into it, i noticed it sticking out of it weirdly and tried to break it to retrieve the fire wood, it then crashed. Crash report shows Primitive survival crashing but its due to Quick stack putting fire wood where it can go, is it possible to blacklist the smokers?

 

here is the log if its helpful

 

System.Exception: Can't create itemstack without item!
at Vintagestory.API.Common.ItemStack..ctor(Item item, Int32 stacksize) in VintagestoryApi\Common\Collectible\ItemStack.cs:line 225
at PrimitiveSurvival.ModSystem.BESmoker.OnBreak() in C:\net7repos\primitivesurvival\primitivesurvival\ModSystem\blockentity\besmoker.cs:line 339
at PrimitiveSurvival.ModSystem.BlockSmoker.OnBlockBroken(IWorldAccessor world, BlockPos pos, IPlayer byPlayer, Single dropQuantityMultiplier) in C:\net7repos\primitivesurvival\primitivesurvival\ModSystem\block\blocksmoker.cs:line 112
at Vintagestory.API.Common.CollectibleObject.OnBlockBrokenWith(IWorldAccessor world, Entity byEntity, ItemSlot itemslot, BlockSelection blockSel, Single dropQuantityMultiplier) in VintagestoryApi\Common\Collectible\Collectible.cs:line 586
at Vintagestory.GameContent.ItemAxe.OnBlockBrokenWith_Patch2(ItemAxe this, IWorldAccessor world, Entity byEntity, ItemSlot itemslot, BlockSelection blockSel, Single dropQuantityMultiplier)
at Vintagestory.Client.NoObf.ClientMain.OnPlayerTryDestroyBlock(BlockSelection blockSelection) in VintagestoryLib\Client\ClientMain.cs:line 1751
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.ContinueBreakSurvival(BlockSelection blockSelection, Block block, Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 798
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 598
at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt) in VintagestoryLib\Client\Systems\Player\MouseInWorldInteractions.cs:line 85
at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 188
at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 996
at Vintagestory.Client.GuiScreenRunningGame.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 242
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 695
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 670
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 127
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 334
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 130
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93

💬 Hellaeh , Jan 19th at 12:44 PM

I did a brief testing on 1.20. There were no API changes, so everything should work as expected. I'm working on a generic approach to mod compatibility issues - blacklisting\whitelisting, but it will take a while. Desolae

💬 Desolae, Jan 17th at 9:57 PM

Really hoping for a 1.20 version!

💬 Hellaeh , Dec 23rd 2023 at 4:05 PM

After 0.3.0 requires Favorite Mod to function

💬 Hellaeh , Dec 21st 2023 at 12:21 PM

Thank you for feedback! My keyboard mapping is indeed different from defaults.
You're supposed to change 'X' to whatever suitable for you.
I will split this mod into two - `Quick Stack` and `Favorite` in 0.3.0, which will address a lot of issues like marking item, not slot, as favorite, and ability to change modifier key.

As for your wishlist:
Item switching - is already implemented in some mod (I don't remember which, sorry), and it is outside of `Quick Stack` mod functionality.
Crafting grid - same reasons as above.

Ailith

💬 Ailith, Dec 21st 2023 at 7:17 AM

Perhaps I'm missing something about how to use the mark slots alt+LC, or you're in a keyboard layout with different defaults, but the us layout default function of alt with the backpack open is to lock the cursor back to fps look, so you can't click and inventory slot with default controls. Also x is swap hands by default and also didn't work until I remapped that.

There doesn't appear to be a controls setting to change the way favouriting works so I have to remap default alt to something else either permenantly, or any time I want to change my saved slots?

Not dealbreakers but odd choices.

As for a wishlist - Item switching (broken tools, emptied slots, on the hotbar replace with inventory stacks) and a modifier key to send items to the crafting grid if that's even possible (and not somehow something I failed to figure out you can already do) or either are in the scope of this mod would be cool.

 (edit comment delete)