You are viewing a potentially older version of this package. View all versions.
Azumatt-AzuAutoStore-3.0.2 icon

AzuAutoStore

This mod pulls nearby items from the ground into containers. Optionally, use a hotkey to store items in your inventory into containers. Read the mod description for more information.

Date uploaded 4 months ago
Version 3.0.2
Download link Azumatt-AzuAutoStore-3.0.2.zip
Downloads 12445
Dependency string Azumatt-AzuAutoStore-3.0.2

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2202 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.

Preferred version: 5.4.2202

README

Description

This mod pulls nearby items from the ground into containers. Optionally, use a hotkey to store items in your inventory into containers. WardIsLove compatible, HotBar items can be ignored (on by default), Quickslots can be ignored (if turned on in the configuration!).

1. Need to know

Version checks with itself. If installed on the server, it will kick clients who do not have it installed.

This mod uses ServerSync, if installed on the server and all clients, it will sync all configs to client

This mod uses a file watcher. If the configuration file is not changed with BepInEx Configuration manager, but changed in the file directly on the server, upon file save, it will sync the changes to all clients.

Features

  • Automatically store dropped resources into nearby containers within a configurable range
  • Restrict specific items from being stored into containers by defining rules in the configuration file in the BepInEx/config folder called Azumatt.AzuAzuStore.yml
  • Toggle the storing of items via a keyboard shortcut for a configurable amount of seconds
  • Favoriting from GoldenRevolver By holding the Favoriting Key (default: Alt) or by using a new button, you can left click on an item to favorite it, or right click to favorite the slot it is in. This prevents the quick storing from player inventory from having the mod affect that item. No accidental storing something you didn't want. The favoriting state is shown with a custom colored border around the slot. If GoldenRevolver's mod is present, it will read his favoriting file and use that instead.

FAQ

2. Configuration (Collapsed due to length. Click to expand)

Available Configuration Options

1 - General

Lock Configuration [Synced with Server]

  • If on, the configuration is locked and can be changed by server admins only.
    • Default Value: On

Must Have Existing Item To Pull [Synced with Server]

  • If on, the chest must already have the item in its inventory to pull it from the world or player into the chest.
    • Default Value: On

Player Range [Synced with Server]

  • The maximum distance from the player to store items in chests when the Store Shortcut is pressed. Follows storage rules for allowed items.
    • Default Value: 5

Fallback Range [Synced with Server]

  • The range to use if the container has no range set in the yml file. This will be the fallback range for all containers.
    • Default Value: 10

Player Ignore Hotbar [Not Synced with Server]

  • If on, the player's hotbar will not be stored when the Store Shortcut is pressed.
    • Default Value: On

Player Ignore Quick Slots [Not Synced with Server]

  • If on, the player's quick slots will not be stored when the Store Shortcut is pressed. (Requires Quick Slots mod, turn on only if you need it!)
    • Default Value: Off

Ping VFX [Synced with Server]

Highlight Containers [Not Synced with Server]

  • If on, the containers will be highlighted when something is stored in them. If off, the containers will not be highlighted if something is stored in them.
    • Default Value: On

Ping Containers [Not Synced with Server]

  • If on, the containers will be pinged with the Ping VFX when something is stored in them. If off, the containers will not be pinged if something is stored in them.
    • Default Value: On

Seconds To Wait Before Storing [Synced with Server]

  • The number of seconds to wait before storing items into chests nearby automatically after you have pressed your hotkey to pause.
    • Default Value: 10

IntervalSeconds [Synced with Server]

  • The number of seconds that must pass before the chest will do an automatic check for items nearby, WARNING: Reducing this will decrease performance!
    • Default Value: 10

2 - Shortcuts

Store Single Item Shortcut [Not Synced with Server]

  • Keyboard shortcut/Hotkey to store a single item that you click from your inventory into nearby containers.
    • Default Value: Mouse2

Store Shortcut [Not Synced with Server]

  • Keyboard shortcut/Hotkey to store your inventory into nearby containers.
    • Default Value: Period

Pause Shortcut [Not Synced with Server]

  • Keyboard shortcut/Hotkey to temporarily stop storing items into chests nearby automatically. Does not override the player hotkey store.
    • Default Value: Period + LeftShift

SearchModifierKeybind [Not Synced with Server]

  • While holding this, you can search nearby chests for the prefab you clicked in your inventory.
    • Default Value: Y

3 - Favoriting

BorderColorFavoritedItem [Not Synced with Server]

  • Color of the border for slots containing favorited items.
    • Default Value: FFD800FF

BorderColorFavoritedItemOnFavoritedSlot [Not Synced with Server]

  • Color of the border of a favorited slot that also contains a favorited item.
    • Default Value: 80AC80FF

BorderColorFavoritedSlot [Not Synced with Server]

  • Color of the border for favorited slots.
    • Default Value: 0080FFFF

DisplayTooltipHint [Not Synced with Server]

  • Whether to add additional info the item tooltip of a favorited or trash flagged item.
    • Default Value: true

FavoritingModifierKeybind1 [Not Synced with Server]

  • While holding this, left clicking on items or right clicking on slots favorites them, disallowing storing Identical to FavoritingModifierKeybind2.
    • Default Value: Z

FavoritingModifierKeybind2 [Not Synced with Server]

  • While holding this, left clicking on items or right clicking on slots favorites them, disallowing storing Identical to FavoritingModifierKeybind1.
    • Default Value: Z

FavoritedItemTooltip [Not Synced with Server]

    • Default Value: Item is favorited and won't be stored

FavoritedSlotTooltip [Not Synced with Server]

    • Default Value: Slot is favorited and won't be stored

ItemOnFavoritedSlotTooltip [Not Synced with Server]

    • Default Value: Item & Slot are favorited and won't be stored
Installation Instructions

Manual Installation

Note: (Manual installation is likely how you have to do this on a server, make sure BepInEx is installed on the server correctly)

  1. Download the latest release of BepInEx.
  2. Extract the contents of the zip file to your game's root folder.
  3. Download the latest release of AzuAutoStore from Thunderstore.io.
  4. Extract the contents of the zip file to the BepInEx/plugins folder.
  5. Launch the game.

Installation through r2modman or Thunderstore Mod Manager

  1. Install r2modman or Thunderstore Mod Manager.

    For r2modman, you can also install it through the Thunderstore site.

    For Thunderstore Mod Manager, you can also install it through the Overwolf app store

  2. Open the Mod Manager and search for "AzuAutoStore" under the Online tab. Note: You can also search for "Azumatt" to find all my mods. The image below shows VikingShip as an example, but it was easier to reuse the image. Type AzuAutoStore.

  1. Click the Download button to install the mod.
  2. Launch the game.
Example YAML
# Below you can find example groups. Groups are used to exclude or includeOverride quickly. They are reusable lists! 
# Please note that some of these groups/container limitations are kinda pointless but are here for example.
# Make sure to follow the format of the example below. If you have any questions, please ask in my discord.

# Full vanilla prefab name list: https://valheim-modding.github.io/Jotunn/data/prefabs/prefab-list.html
# Item prefab name list: https://valheim-modding.github.io/Jotunn/data/objects/item-list.html

# There are several predefined groups set up for you that are not listed. You can use these just like you would any group you create yourself.
# These are the "All", "Food", "Potion", "Fish", "Swords", "Bows", "Crossbows", "Axes", "Clubs", "Knives", "Pickaxes", "Polearms", "Spears", "Equipment", "Boss Trophy", "Trophy", "Crops", "Seeds", "Ores", "Metals", and "Woods" groups.
# The criteria for these groups are as follows:
# groups:
#   Food:
#     - Criteria: Both of the following properties must have a value greater than 0.0 on the sharedData property of the ItemDrop script:
#         - food
#         - foodStamina
#   Potion:
#     - Criteria: The following properties must meet the specified conditions on the sharedData property of the ItemDrop script:
#         - 'food' > 0.0
#         - 'foodStamina' == 0.0
#         - Any status effect names/categories contain "potion"
#   Fish:
#     - itemType: Fish
#   Swords, Bows, Crossbows, Axes, Clubs, Knives, Pickaxes, Polearms, Spears:
#     - itemType: OneHandedWeapon, TwoHandedWeapon, TwoHandedWeaponLeft, Bow
#     - Criteria: Items in these groups have a specific skillType on the sharedData property of the ItemDrop script. Each group corresponds to the skillType as follows:
#         - Swords: skillType == Skills.SkillType.Swords
#         - Bows: skillType == Skills.SkillType.Bows
#         - Crossbows: skillType == Skills.SkillType.Crossbows
#         - Axes: skillType == Skills.SkillType.Axes
#         - Clubs: skillType == Skills.SkillType.Clubs
#         - Knives: skillType == Skills.SkillType.Knives
#         - Pickaxes: skillType == Skills.SkillType.Pickaxes
#         - Polearms: skillType == Skills.SkillType.Polearms
#         - Spears: skillType == Skills.SkillType.Spears
#            Example:   An item with itemType set to OneHandedWeapon and skillType set to Skills.SkillType.Swords would belong to the Swords group.
#   Armor:
#     - itemType: Chest, Legs, Shoulder, Helmet
#   Equipment:
#     - itemType: Torch, Bow, OneHandedWeapon, TwoHandedWeapon, TwoHandedWeaponLeft, Helmet, Chest, Legs, Shoulder, Utility, Shield
#   Weapons:
#     - itemType: OneHandedWeapon, TwoHandedWeapon, TwoHandedWeaponLeft, Bows, Swords, Crossbows, Axes, Clubs, Knives, Pickaxes, Polearms, Spears
#   Shield:
#     - itemType: Shield
#   Round Shield:
#     - itemType: Shield
#     - Criteria: sharedData.m_timedBlockBonus > 0.0 "round"
#   Tower Shield:
#     - itemType: Shield
#     - Criteria: sharedData.m_timedBlockBonus <= 0.0 "tower"
#   Chest:
#     - itemType: Chest
#   Legs:
#     - itemType: Legs
#   Shoulder:
#     - itemType: Shoulder
#   Helmet:
#     - itemType: Helmet
#   Utility:
#     - itemType: Utility
#   Ammo:
#     - itemType: Ammo
#   Arrows:
#     - itemType: Ammo
#     - Criteria: sharedData.m_ammoType == "$ammo_arrows"
#   Bolts:
#     - itemType: Ammo
#     - Criteria: sharedData.m_ammoType == "$ammo_bolts"
#   ElementalMagic:
#     - itemType: ElementalMagic
#   BloodMagic:
#     - itemType: BloodMagic
#   Boss Trophy:
#     - itemType: Trophy
#     - Criteria: sharedData.m_name ends with any of the following boss names:
#         - eikthyr, elder, bonemass, dragonqueen, goblinking, SeekerQueen
#   Trophy:
#     - itemType: Trophy
#     - Criteria: sharedData.m_name does not end with any boss names
#   Crops:
#     - itemType: Material
#     - Criteria: Can be cultivated and grown into a pickable object with an amount greater than 1
#   Seeds:
#     - itemType: Material
#     - Criteria: Can be cultivated and grown into a pickable object with an amount equal to 1
#   Ores:
#     - itemType: Material
#     - Criteria: Can be processed by any of the following smelters:
#         - smelter
#         - blastfurnace
#   Metals:
#     - itemType: Material
#     - Criteria: Is the result of processing an ore in any of the following smelters:
#         - smelter
#         - blastfurnace
#   Woods:
#     - itemType: Material
#     - Criteria: Can be processed by the charcoal_kiln smelter
#   All:
#     - Criteria: Item has an ItemDrop script and all needed fields are populated. (all items)




groups:
  BronzeGear: # Group name
    - ArmorBronzeChest # Item prefab name, note that this is case sensitive and must be the prefab name
    - ArmorBronzeLegs
    - ArmorBronzeHelmet
  Tier 2 Items:
    - Bronze
    - PickaxeBronze
    - ArmorBronzeChest
    - ArmorBronzeLegs


# By default, if you don't specify a container below, it will be considered as you want to allow storing all objects into it.
# If you are having issues with a container, please make sure you have the full prefab name of the container. Additionally, make sure you have range and exclude or includeOverride set up correctly.
# Worst case you can define a container like this. This will allow everything to be pulled from the container within a range of 30.
# rk_barrel:  
#   range: 30
#  includeOverride: []

## Please note that the below containers are just examples. You can add as many containers as you want.
## If you want to add a new container, just copy and paste the below example and change the name of the container to the prefab name of the container you want to add.
## The values are set up to include everything by using the includeOverride (aside from things that aren't really a part of vanilla recipes, like Swords or Bows). 
## This is to give you examples on how it's done, but still allow everything to be stored into the container.

Player_tombstone: # This is to exclude the tombstone from randomly picking up items that fall near it.
  range: 10
  exclude:
    - All

Player: # This is to exclude backpacks from randomly storing items into them.
  range: 10
  exclude:
    - All

piece_chest:
  range: 10 # This is the range that the container will store items. This overrides the global range set in the config.
  exclude: # Exclude these items from being able to be stored into the container
    #- Food # Exclude all in group
    - PickaxeBronze # Allow prefab names as well, in this case we will use something that isn't a food
  includeOverride:
    # - Food # This would not work, you cannot includeOverride a group that is excluded. You can only override prefabs from that group.
    - PickaxeBronze # You can however, be weird, and override a prefab name you have excluded.

# It's highly unlikely that you will need the armor, swords, bows, etc. groups below. These are just in case you want to use them. 
# They were also easy ways for me to show you how to use the groups without actually excluding something you might want to always pull by default.

piece_chest_wood:
  range: 10
  exclude:
    - Swords # Exclude all in group
    - Tier 2 Items # Exclude all in group
    - Bows # Exclude all in group
  includeOverride: # If the item is in the groups above, say, you were using a predefined group but want to override just one item to be ignored and allow pulling it
    - BowFineWood
    - Wood
    - Bronze
    - PickaxeBronze
    - ArmorBronzeChest
    - ArmorBronzeLegs

piece_chest_private:
  range: 10
  exclude:
    - All # Exclude everything

piece_chest_blackmetal:
  range: 10
  exclude:
    - Swords # Exclude all in group
    - Tier 2 Items # Exclude all in group
    - Bows # Exclude all in group
  includeOverride: # If the item is in the groups above, say, you were using a predefined group but want to override just one item to be ignored and allow storing it
    - BowFineWood
    - Wood
    - Bronze

rk_cabinet: # rk_ is typically the prefix for containers coming from RockerKitten's mods
  range: 10
  exclude:
    - Food
  includeOverride:
    - Food

rk_cabinet2:
  range: 10
  exclude:
    - Food
  includeOverride:
    - Food

rk_barrel:
  range: 10
  exclude:
    - Armor
    - Swords

rk_barrel2:
  range: 10
  exclude:
    - Armor
    - Swords

rk_crate:
  range: 10
  exclude:
    - Armor
    - Swords

rk_crate2:
  range: 10
  exclude:
    - Armor
    - Swords

Feel free to reach out to me on discord if you need manual download assistance.

Author Information

Azumatt

DISCORD: Azumatt#2625

STEAM: https://steamcommunity.com/id/azumatt/

For Questions or Comments, find me in the Odin Plus Team Discord or in mine:

https://i.imgur.com/XXP6HCU.png

CHANGELOG

Version Update Notes
3.0.4 - Fix for Bog Witch update.
3.0.3 - Remove treasure prefix check, instead check creator only.
- Fix containers remaining in use after storing.
3.0.2 - Default exclude tombstones and the player (for backpack mods) in the yml file, updated example file to match on README. If you delete the yml it will regenerate with these defaults. If you don't have them, you can now find the examples in the mod description to add them manually if needed.
- Ensure that the ping effect will destroy after the allotted time, correctly.
3.0.1 - Fix casting issue now that I moved to interfaces for the containers.
3.0.0 - When using the vanilla Place Stacks button or the open to place stacks feature, it now respects your favorited items/slots.
- Integration with Smoothbrain's Backpacks & KG's ItemDrawers. You can now store to them. There is a configuration option added to prevent storing to any backpacks. Found in Section 1 called "Don't Store to Backpacks"
Add in global config that prevents storing into chests from the ground when toggled off (Chests Pickup From Ground in Section 1).
2.1.12 - Fix logical issue in removing invalid containers that was causing valid ones to be removed.
2.1.11 - If toggle.
2.1.10 - Fix NRE that can occur when teleporting.
2.1.9 - Fix item loss issue with new feature.
- New feature will now also tell you if the item you attempt to store is in nearby containers or not when Must Have Existing Item To Pull setting is on.
2.1.8 - Add in a configuration option/logic for a key that you can press (Default: Mouse2 a.k.a. Middle Click). This key, when pressed while hovering an inventory item, will store just that item into nearby containers.
2.1.7 - Recompile for Ashlands
2.1.6 - Even more compatibility with QuickStackStore. Creating our stuff after theirs now duplicated their element under mine. I destroy the dupe now. All is well. Their update also make sure to never grab our elements. WOOT
2.1.5 - Sup vikings. Fixed some issues found when this mod is installed next to QuickStackStore, we now for sure create our stuff after their mod so when they grab the first element...it's not ours! We also search for our element instead of assuming.
- Additionally, fixed some issues that might cause NREs on world load.
2.1.4 - Salutations, Keyboard Warriors and Mouse Monarchs! It's me again, your friendly neighborhood coder (or car warranty guy if you're annoyed with me), armed with another hotfix update hotter than a graphics card in a marathon gaming session. A quirky bug where your beloved player character decided to take an unexpected permanent vacation when using AdventureBackpack alongside this mod was found. Since Goldenrevolver also had the same issue, he got me the fix as well. Shoutout to him.
- But wait, there's more! I added a component that will reduce the amount of times a container is pinged. And because I know that nobody likes to be pinged over and over (looking at you, group chats), this feature has manners. It won't ping a container that's already felt the sweet ping of attention. That's one less issue to clutter your adventure.
2.1.3 - At this point, I should be the car warranty guy. It's me again, with a fix for another NRE caused by an optimization I made.
2.1.2 - Update ServerSync
- Add a message for when you search for an item using the azuautostoresearch command. It will now tell you if something is/isn't found and how much of that something.
- The search command can now be invoked simply by left clicking on an item in your inventory while holding down the SearchModifierKeybind found in the 2 - Shortcuts section.
- Using the command or searching via an item in your inventory, it will now point you to the closest that contains the item you are looking for.
- Now limit the searching of new items in the world causing the search to trigger in the next second...to those that are close to a container.
- Add a configuration option in the 1 - General section to speed up the search interval should you wish to do that called IntervalSeconds.
- Add some null checks in places they probably should have been to start with.
- Probably fixed some other shit I don't remember.

Example of the new Feature:
2.1.1 - Fix NRE that can be thrown when a mob dies
2.1.0 - Performance improvements when storing things. It now checks more on an interval of 10 seconds. Though, if you throw out an item it will check within the next second. Also, reduced checks that might be a little expensive.
- Add in Favoriting from Goldenrevolver By holding the Favoriting Key (default: Alt) or by using a new button, you can left click on an item to favorite it, or right click to favorite the slot it is in. This prevents most features of this mod from affecting it. No accidental quick stacking, sorting, storing or trashing. The favoriting state is shown with a custom colored border around the slot. None of the configuration options related to favoriting are synced with the server.
2.0.3 - Revert a small bit of code that fixes an issue. The issue is that some items were not being added to the correct groups as expected.
- Add ElementalMagic and BloodMagic predefined categories
2.0.2 - Fix Potion criteria
- Fix Equipment category to include more items like it originally should have.
- Add more predefined groups. I added the following Armor, Equipment, Weapons, Shield, Chest, Legs, Shoulder, Helmet, Utility, Ammo, Arrows, and Bolts.
- A file will now be created next to the dll called PredefinedGroups.txt which will contain all of the current items in the predefined groups (modded and vanilla, populates when you go into a server/world)
2.0.1 - Fix some item deletion, add ability to pause the execution of storing items (LeftShift + Period by default and 10 second wait by default)
- If the pausing feature doesn't work like intended, I have code queued up to potentially fix the issue. Please report bugs
2.0.0 - MAJOR VERSION UPDATE
- Everything about the configuration has changed. Please delete your old config file and boot the game once with this mod installed to get a clean one.
- Move as many of the configuration options that make sense to YAML configuration. Please read the mod page for details on where to find and read the file for how to use. Ask questions if you need to in my discord. As frequent questions are asked, they will be added to the wiki tab for this mod. Read the FAQ section on the mod page for more details on that.
- If you have used AzuCraftyBoxes in the past, the configuration is pretty much the same! Works the same, just in reverse (because we are storing things!)
- Main difference between this and AzuCraftyBoxes configurations is that the range can be set in the yaml per container.
- TLDR; This update breaks shit because it's a major change, if you are using the mod, delete everything (configuration file and dll). Start over. Read the mod page you lazy person...or figure it out on your own if you're not a smoothbrain
1.1.5 - Update for Valheim's latest version.
1.1.4 - Small update to fix an error on server connection
1.1.3 - Hildir Update
1.1.2 - Updated for Valheim 0.216.9
1.0.2 - Fixes that I can't remember. ALo helped find the bugs
- Added a new config option to allow you to disable the chest highlight
- Prevent typing your hotkey while any UI is open so you don't store your items in the chest by accident
1.0.1 - AmmoNonEquipable item type missing fixed
1.0.0 - Initial Release