This is a client-server module for ALE (AzerothCore) that implements a dedicated item storage to hold many items.
Important
This ALE module for AzerothCore is provided for educational purposes only. The developers do not endorse, support, or encourage private servers. This project is intended to demonstrate UI/UX possibilities and game development techniques in the context of MMORPGs.
All intellectual property related to World of Warcraft belongs to Blizzard Entertainment. This project is not affiliated with, endorsed by, or supported by Blizzard Entertainment in any way.
By using this software, you acknowledge that the authors are not responsible for any private server operations, legal issues, or other uses of this module outside of educational or research contexts.
Warning
This software is licensed under the GNU GPL v3 license which implies copyleft. Please refer to the license for more information.
- Holds up to 4 294 967 295 (maximum uint32) items of each type.
- Deposit all command. (
/ivda) - Deposit specific item command. (
/ivd bag slot) - Retrieve item per stack with a simple right click on an item in the vault.
- Full in game item tooltip support.
- Compatible with HD clients that change textures.
- Configurable item limit.
- Improved GUI with search, filtering, categorisation, custom organisation.
- New types of items that can be stored in new dedicated tabs: Gearsets, collectibles, and probably more!
- Better in-game UI with a fully integrated button and ways to easily deposit a single item without commands.
Note
READ CAREFULLY This module depends on two external libraries. There is no way around it. You must install them. Dependencies:
- CSMH by Foereaper
- ALE by AzerothCore
Note
This module has been tested with AzerothCore. It might work with TrinityCore using Eluna. You are welcome to try using Eluna with TrinityCore, but this module comes without any guarantee for Eluna.
You can find the detailed installation instructions on the ALE Github repository.
If you are encountering issues while installing ALE, please ask for support on the AzerothCore Discord server, in the #ac-lua-engine channel. We cannot provide direct support for pure ALE problems.
Since we do not want to bundle and redistribute CSMH ourselves for multiple reasons, we will guide you through the installation of both components.
- Go to the CSMH Github repository.
- Download the ZIP available when clicking on
<> Codeat the top right corner of the screen.
- Extract the ZIP wherever you want.
- Copy the
Serverfolder to yourlua_scriptsdirectory within your ALE installation. We strongly suggest renaming it toSMHforServer Message Handler.
We provide two distinct ways to install Item Vault.
Git repository mirror
Important
This requires using Git on Windows.
If you do not know what that means, you should move on to the next section.
We provide an always stable, read-only, mirror repository of the server part.
Within your lua_scripts folder, run:
git clone [email protected]:ShatteredDawn/item-vault-server-mirror.git item-vaultThis will create a local, read-only, of the server part and nothing else. Whenever a new stable version is released, this mirror is automatically updated. This allows you to simply run:
git pullWithin your copy to update your server.
ZIP Archive
Every time we deploy a new release, a ZIP archive is created and attached as a downloadable artifact of the main repository, not the mirror. It only contains the server files.
It is available in the release section. The file is always called item-vault-server.zip.
You can download this zip and simply extract it within your lua_scripts folder.
The downside of this method is that you will need to manually download each version.
Note
This module has been tested with the 3.3.5a client (regular and HD).
Since we do not want to bundle and redistribute CSMH ourselves for multiple reasons, we will guide you through the installation of both components.
- Go to the CSMH Github repository.
- Download the ZIP available when clicking on
<> Codeat the top right corner of the screen.
- Extract the ZIP wherever you want.
- Copy the
Clientfolder to yourinterface\addonsdirectory within your game client installation. The addon must be namedCMHforClient Message Handler, otherwise our addon will complain about a missing dependency.
We provide two distinct ways to install Item Vault.
Git repository mirror
Important
This requires using Git on Windows.
If you do not know what that means, you should move on to the next section.
We provide an always stable, read-only, mirror repository of the client addon.
Within your interface\addons folder, run:
git clone [email protected]:ShatteredDawn/item-vault-client-mirror.git item-vaultThis will create a local, read-only, of the client addon and nothing else. Whenever a new stable version is released, this mirror is automatically updated. This allows you to simply run:
git pullWithin your copy to update your client addon.
ZIP Archive (Easiest)
Every time we deploy a new release, a ZIP archive is created and attached as a downloadable artifact of the main repository, not the mirror. It only contains the client addons files.
It is available in the release section. The file is always called ItemVault_Client.zip.
You can download this zip and simply extract it within your interface\addons folder.
The downside of this method is that you will need to manually download each version.
Important
Always backup your data. Even though we are professional developers and test our software thoroughly, we remain human. Remember that you should always maintain a backup of your item vault to avoid permanent data loss.
Item Vault uses a dedicated MySQL database called item_vault. It contains a single table called storage.
We recommend using a Cloud integrated backup (Scaleway Glacier Storage is what we use), but you can use a simple local system.
Below is a provided BASH (Linux) script allowing you to automatically backup your data. We recommend adding this script as a periodic CRON job. On our end, we do hourly backups of all data, feel free to tune this interval as you see fit.
Note
Requirements:
mysql-clientgzip
Important
You MUST rename all placeholders (<YOUR_XXX>) with the correct values before running this script.
#!/usr/bin/env bash
set -euo pipefail
LOG_FILE="<YOUR_LOG_FILE_PATH>"
echo "=== Backup started at $(date) ===" >> "${LOG_FILE}"
# Current date in YYYY-MM-DD-HHMMSS format for unique backup filenames
DATE=$(date +%F-%H-%M-%S)
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)
TIME=$(date +%H-%M-%S)
KEY_PREFIX="acore"
# Backup directory on the host
BACKUP_DIR="<YOUR_BACKUP_DIRECTORY>"
mkdir -p "${BACKUP_DIR}"
# Database credentials and details
DB_HOST="<YOUR_DB_HOST>"
DB_USER="<YOUR_DB_USER>"
DB_PASSWORD="<YOUR_DB_PASSWORD>"
declare -a DATABASES_TO_BACKUP=("item_vault")
for db_name in "${DATABASES_TO_BACKUP[@]}"
do
# Backup filename
BACKUP_FILENAME="${BACKUP_DIR}/${db_name}-${DATE}.sql"
echo "Dumping ${db_name} to ${BACKUP_FILENAME}..." >> "${LOG_FILE}"
# Run mysqldump within a new Docker container
mysqldump -h "${DB_HOST}" -u "${DB_USER}" -p"${DB_PASSWORD}" "${db_name}" > "${BACKUP_FILENAME}"
# Compress the backup file
echo "Compressing..." >> "${LOG_FILE}"
gzip "${BACKUP_FILENAME}"
echo "${db_name} backed up successfully." >> "${LOG_FILE}"
done
echo "=== Backup completed at $(date) ===" >> "${LOG_FILE}"
