diff --git a/config/module-manifest.json b/config/module-manifest.json index 4fb20d3..2063dee 100644 --- a/config/module-manifest.json +++ b/config/module-manifest.json @@ -11,7 +11,7 @@ "config_cleanup": [ "playerbots.conf*" ], - "category": "uncategorized", + "category": "npc-service", "order": 1, "special_message": "\ud83e\udd16 Foundation module: Enables AI-powered companions for solo and group content", "status": "active", @@ -28,7 +28,7 @@ "config_cleanup": [ "mod_aoe_loot.conf*" ], - "category": "uncategorized", + "category": "quality-of-life", "status": "active", "order": 5000, "requires": [], @@ -58,7 +58,7 @@ "config_cleanup": [ "mod_fireworks.conf*" ], - "category": "uncategorized", + "category": "progression", "status": "active", "order": 5000, "requires": [], @@ -75,7 +75,7 @@ "config_cleanup": [ "individual_progression.conf*" ], - "category": "uncategorized", + "category": "progression", "status": "active", "order": 5000, "requires": [], @@ -107,7 +107,7 @@ "AutoBalance.conf*" ], "description": "Module for AzerothCore(MaNGOS -> TrinityCore -> SunwellCore)", - "category": "uncategorized", + "category": "progression", "status": "active", "order": 5000, "requires": [], @@ -124,7 +124,7 @@ "transmog.conf*" ], "description": "Plug&Play transmog module for AzerothCore, based on Rochet2 works", - "category": "uncategorized", + "category": "customization", "status": "active", "order": 5000, "requires": [], @@ -141,7 +141,7 @@ "npc_buffer.conf*" ], "description": "A NPC that buffs players", - "category": "uncategorized", + "category": "npc-service", "status": "active", "order": 5000, "requires": [], @@ -292,7 +292,7 @@ "mod-time_is_time.conf*" ], "description": "Azerothcore Module to adjust the Da/Night time cycle for the World of Warcraft 3.3.5a", - "category": "uncategorized", + "category": "quality-of-life", "status": "active", "order": 5000, "requires": [], @@ -353,7 +353,7 @@ "requires": [ "MODULE_ELUNA" ], - "category": "uncategorized", + "category": "pvp", "status": "active", "order": 5000, "notes": "Discovered via GitHub topic 'azerothcore-module'", @@ -371,7 +371,7 @@ "npc_beastmaster.conf*" ], "description": "An NPC that lets you tame beasts.", - "category": "uncategorized", + "category": "npc-service", "status": "active", "order": 5000, "requires": [], @@ -388,7 +388,7 @@ "npc_enchanter.conf*" ], "description": "Creates an NPC that enchants the player's gear", - "category": "uncategorized", + "category": "progression", "status": "active", "order": 5000, "requires": [], @@ -420,7 +420,7 @@ "levelGrant.conf*" ], "description": "AzerothCore Module that allows quests to grant leveling tokens", - "category": "uncategorized", + "category": "progression", "order": 5000, "requires": [], "notes": "Discovered via GitHub topic 'azerothcore-module'", @@ -436,7 +436,7 @@ "arac.conf*" ], "description": "Module & patches - \"All Races All Classes (ARAC)\"", - "category": "uncategorized", + "category": "tooling", "server_dbc_path": "patch-contents/DBFilesContent", "status": "active", "order": 5000, @@ -451,7 +451,7 @@ "type": "cpp", "post_install_hooks": [], "description": "The assistant is a npc spawned in the world and lets a player obtain heirlooms, glyphs, gems, utilities like faction change and race change. The player can also spend gold in order to increase their profession skills", - "category": "uncategorized", + "category": "npc-service", "status": "active", "order": 5000, "requires": [], @@ -466,7 +466,7 @@ "type": "cpp", "post_install_hooks": [], "description": "Reagent Bank Module for AzerothCore", - "category": "uncategorized", + "category": "npc-service", "status": "active", "order": 5000, "requires": [], @@ -502,7 +502,7 @@ "block_reason": "Compilation error: Override signature mismatch on OnGiveXP", "post_install_hooks": [], "description": "Challenge Modes Module for AzerothCore", - "category": "uncategorized", + "category": "progression", "status": "blocked", "order": 5000, "requires": [], @@ -517,7 +517,7 @@ "type": "cpp", "post_install_hooks": [], "description": " mod-ollama-chat is an AzerothCore module that enhances the Player Bots module by integrating external language model (LLM) support via the Ollama API.", - "category": "uncategorized", + "category": "npc-service", "status": "active", "order": 5000, "requires": [], @@ -535,7 +535,7 @@ ], "post_install_hooks": [], "description": "The Bot Level Brackets module for AzerothCore ensures an even spread of player bots across configurable level ranges (brackets). It periodically monitors bot levels and automatically adjusts them by transferring bots from overpopulated brackets to those with a deficit. ", - "category": "uncategorized", + "category": "progression", "status": "active", "order": 5000, "config_cleanup": [], @@ -553,7 +553,7 @@ "fix-statbooster-api" ], "description": "Random Enchant module for Azeroth Core", - "category": "uncategorized", + "category": "quality-of-life", "order": 5000, "requires": [], "config_cleanup": [], @@ -569,7 +569,7 @@ "block_reason": "Upstream override signature mismatch (OnBeforeTeleport); awaiting fix", "post_install_hooks": [], "description": "A module for AzerothCore that teleports players to the start of the dungeon upon death.", - "category": "uncategorized", + "category": "quality-of-life", "order": 5000, "requires": [], "config_cleanup": [], @@ -583,7 +583,7 @@ "type": "cpp", "post_install_hooks": [], "description": "This is a template, a skeleton of a module to use as a base for your new modules.", - "category": "uncategorized", + "category": "developer", "status": "active", "order": 5000, "requires": [], @@ -601,7 +601,7 @@ "requires": [ "MODULE_ELUNA" ], - "category": "uncategorized", + "category": "pvp", "notes": "DBC files in client-side/DBFilesClient are CLIENT-ONLY. Server data must be downloaded separately from releases. \nDiscovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -616,7 +616,7 @@ "post_install_hooks": [], "block_reason": "Compilation error: Method name mismatch (getLevel vs GetLevel)", "description": "This module is a collection of custom features that have been implemented privately on AzerothShard project.", - "category": "uncategorized", + "category": "content", "status": "blocked", "order": 5000, "requires": [], @@ -634,7 +634,7 @@ "requires": [ "MODULE_ELUNA" ], - "category": "uncategorized", + "category": "tooling", "server_dbc_path": "data/patch/DBFilesClient", "notes": "Requires client patch installation; server DBC files must be deployed to /azerothcore/data/dbc/ \nDiscovered via GitHub topic 'azerothcore-module'", "status": "active", @@ -652,7 +652,7 @@ ], "post_install_hooks": [], "description": "Eluna-TS converts TS files to Lua scripts compatible with the Eluna system", - "category": "uncategorized", + "category": "scripting", "status": "active", "order": 5000, "config_cleanup": [], @@ -778,7 +778,7 @@ "copy-standard-lua" ], "description": "Lua script for Azerothcore with ElunaLua to spawn an NPC and have it exchange mats as configured.", - "category": "scripting", + "category": "npc-service", "status": "active", "order": 5000, "config_cleanup": [], @@ -892,7 +892,7 @@ "copy-standard-lua" ], "description": "Multivendor Module written in Lua for AzerothCore! If u want to use it on TrinityCore read the description!", - "category": "scripting", + "category": "npc-service", "status": "blocked", "block_reason": "Linker error: Missing script loader function", "order": 5000, @@ -1195,7 +1195,7 @@ "config_cleanup": [ "duelreset.conf*" ], - "category": "uncategorized", + "category": "pvp", "status": "active", "order": 5000, "requires": [], @@ -1225,7 +1225,7 @@ "morphsummon.conf*" ], "notes": "Allows customization of summoned creature appearances (Warlock demons, Death Knight ghouls, Mage water elementals); NPC ID: 601072 \nDiscovered via GitHub topic 'azerothcore-module'", - "category": "uncategorized", + "category": "npc-service", "status": "active", "order": 5000, "requires": [], @@ -1314,7 +1314,7 @@ "config_cleanup": [ "GlobalChat.conf*" ], - "category": "uncategorized", + "category": "social", "status": "active", "order": 5000, "requires": [], @@ -1382,7 +1382,7 @@ "type": "cpp", "post_install_hooks": [], "config_cleanup": [], - "category": "uncategorized", + "category": "admin", "status": "active", "order": 5000, "requires": [], @@ -1447,7 +1447,7 @@ "post_install_hooks": [], "config_cleanup": [], "notes": "NPC ID: 100155 \nDiscovered via GitHub topic 'azerothcore-module'", - "category": "uncategorized", + "category": "npc-service", "status": "active", "order": 5000, "requires": [], @@ -1463,7 +1463,7 @@ "config_cleanup": [ "mod_aq_war_effort.conf*" ], - "category": "uncategorized", + "category": "content", "status": "active", "order": 5000, "requires": [], @@ -1489,7 +1489,7 @@ "repo": "https://github.com/BeardBear33/mod-guild-village.git", "description": "Module for WoW 3.3.5a (AzerothCore \u2013 Playerbots). Tested on Ubuntu.", "type": "cpp", - "category": "uncategorized", + "category": "database", "notes": "Disabled due to runtime error: MODULE_mod-guild-village_001_creature_template.sql tries to insert duplicate creature ID 987400 (ERROR 1062)", "status": "blocked", "order": 5000, @@ -1505,7 +1505,7 @@ "repo": "https://github.com/Day36512/mod-craftspeed.git", "description": "AzerothCore module that globally modifies the cast speed of crafting and tradeskill spells.", "type": "cpp", - "category": "uncategorized", + "category": "economy", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1520,7 +1520,7 @@ "repo": "https://github.com/Flerp/mod-autofish.git", "description": "A built in, customizeable fishing bot for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1535,7 +1535,7 @@ "repo": "https://github.com/sogladev/mod-vanilla-naxxramas.git", "description": " AzerothCore custom module that brings back vanilla Naxxramas", "type": "cpp", - "category": "uncategorized", + "category": "content", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1550,7 +1550,7 @@ "repo": "https://github.com/BeardBear33/mod-treasure.git", "description": "Module for WoW 3.3.5a (AzerothCore \u2013 Playerbots). Tested on Ubuntu.", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1565,7 +1565,7 @@ "repo": "https://github.com/BeardBear33/mod-real-online.git", "description": "Module for WoW 3.3.5a (AzerothCore \u2013 Playerbots). Tested on Ubuntu.", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1580,7 +1580,7 @@ "repo": "https://github.com/BeardBear33/mod-instance-tools.git", "description": "Module for WoW 3.3.5a (AzerothCore \u2013 Playerbots). Tested on Ubuntu.", "type": "cpp", - "category": "uncategorized", + "category": "database", "notes": "Disabled due to runtime error: MODULE_mod-instance-tools_Creature.sql tries to insert duplicate creature ID 987456-0 (ERROR 1062)", "status": "blocked", "order": 5000, @@ -1596,7 +1596,7 @@ "repo": "https://github.com/noisiver/mod-learnspells.git", "description": "The module will give players new spells when leveling up or when entering the world", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1611,7 +1611,7 @@ "repo": "https://github.com/Flerp/mod-swift-travel-form.git", "description": "A swift travel form mod that requires no DBC or spell edits", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1626,7 +1626,7 @@ "repo": "https://github.com/azerothcore/mod-chat-transmitter.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "social", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1641,7 +1641,7 @@ "repo": "https://github.com/azerothcore/mod-notify-muted.git", "description": "A module for AzerothCore that notifies if interlocutor is muted", "type": "cpp", - "category": "uncategorized", + "category": "social", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1656,7 +1656,7 @@ "repo": "https://github.com/NathanHandley/mod-ah-bot-plus.git", "description": "Modified version of the AHBot for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1671,7 +1671,7 @@ "repo": "https://github.com/Rimovals2/openProjects.git", "description": "Open Projects \u2013 World of Warcraft Server Development Hub This repository contains a structured collection of projects focused on WoW server development and ecosystem tools, including: AzerothCore modules and C++ gameplay systems server patches, fixes and performance optimizations scripting tools (AI, quests, spells, bots, DB) WoW addons and UI", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1686,7 +1686,7 @@ "repo": "https://github.com/NathanHandley/mod-dungeon-scale.git", "description": "Mod for AzerothCore servers to modify the difficulty of dungeons (forked from AutoBalance)", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "block_reason": "Linker failure: duplicates AutoBalance utility symbols (GetCurrentConfigTime, LoadMapSettings, etc.) when built alongside mod-autobalance", @@ -1717,7 +1717,7 @@ "repo": "https://github.com/jorge990125/mod-hardcore-makgora.git", "description": "Systema HardCore con duelos Makgora", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1732,7 +1732,7 @@ "repo": "https://github.com/Day36512/mod-geddon-binding-shard.git", "description": "A module for azerothcore that makes Baron Geddon drop Talisman of Binding Shard once per server.", "type": "cpp", - "category": "uncategorized", + "category": "rewards", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1747,7 +1747,7 @@ "repo": "https://github.com/chromiecraft/mod-gm-commands.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "admin", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1762,7 +1762,7 @@ "repo": "https://github.com/Tralenor/mod-gomove.git", "description": "Port of the TC-Corepatch GO-Move from Rochet2 as an AC-Module (with Objscale integration)", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -1778,7 +1778,7 @@ "repo": "https://github.com/FortisVoluntas/mod-fortis-autobalance.git", "description": "Autobalance Modul for the Azerothcore-Playerbot fork from @liyunfan1223 https://github.com/liyunfan1223/azerothcore-wotlk.git", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1793,7 +1793,7 @@ "repo": "https://github.com/forumcorex/mod-missing-objectives.git", "description": "The module is responsible for adding the missing dungeon and raid objectives. This content isn't considered Blizzard, so it must be modularized.", "type": "cpp", - "category": "uncategorized", + "category": "content", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1808,7 +1808,7 @@ "repo": "https://github.com/Stuntmonkey4u/mod-trial-of-finality.git", "description": "Hardcore trial mod for groups of 1-5", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "DISABLED: no member named 'isEmpty' in 'MapRefMgr'", "status": "blocked", "order": 5000, @@ -1824,7 +1824,7 @@ "repo": "https://github.com/nightwreath/mod-hunter-pet-storage.git", "description": "Additional Hunter Pet Storage for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1839,7 +1839,7 @@ "repo": "https://github.com/Zerkenn/mod-character-services.git", "description": "Azerothcore module that adds a npc that can be spawned in that you can talk to and purchase a name change, appearance change, race change, or faction change.", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1854,7 +1854,7 @@ "repo": "https://github.com/zeb139/mod-mount-requirements.git", "description": "An AzerothCore module for configuring the requirements to obtain various mounts", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1869,7 +1869,7 @@ "repo": "https://github.com/brian8544/SetXpBar.git", "description": "An addon that enables players to control their experience gain rate by right-clicking their XP bar. This feature requires the realm to have the mod-individual-xp module installed.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1884,7 +1884,7 @@ "repo": "https://github.com/freekode/mod-reward-played-time-improved.git", "description": "Improved reward for played time for Azerothcore", "type": "cpp", - "category": "uncategorized", + "category": "rewards", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1899,7 +1899,7 @@ "repo": "https://github.com/webluke/mod-grownup.git", "description": "GrownUp is a fun, immersive AzerothCore server module that dynamically changes the size of player characters as they progress in level.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1914,7 +1914,7 @@ "repo": "https://github.com/silviu20092/mod-mythic-plus.git", "description": "Mythic Plus system for Azerothcore.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1929,7 +1929,7 @@ "repo": "https://github.com/gitdalisar/mod-Faction-Free.git", "description": "Faction Free is a WOTLK 3.3.5a (Azerothcore base) selection of files to allow a player to interact with opposite factions to have access to those corresponding reputations, quests, and achievements.", "type": "cpp", - "category": "uncategorized", + "category": "social", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1944,7 +1944,7 @@ "repo": "https://github.com/silviu20092/mod-flightmaster-whistle.git", "description": "Flightmaster whistle module for AzerothCore.", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1959,7 +1959,7 @@ "repo": "https://github.com/Protonull/mod-starter-wands.git", "description": "Gives all newly-created players with wand skills a free starter wand", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1974,7 +1974,7 @@ "repo": "https://github.com/pangolp/mod-mounts-on-account.git", "description": "This module allows to obtain all the mounts learned by a character of the account, possibly in exchange for gold, although it is not yet decided.", "type": "cpp", - "category": "uncategorized", + "category": "account-wide", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -1989,7 +1989,7 @@ "repo": "https://github.com/DustinHendrickson/mod-ollama-bot-buddy.git", "description": "An AzerothCore module that leverages Player Bots and integrates advanced AI control via the Ollama LLM API", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2004,7 +2004,7 @@ "repo": "https://github.com/TerraByte-tbwps/mod-aoe-loot.git", "description": "AoE loot module for AzerothCore built from the ground up without loot loss. (No Loot Merging).", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "DISABLED: Naming conflict with Item class", "status": "blocked", "order": 5000, @@ -2020,7 +2020,7 @@ "repo": "https://github.com/Tereneckla/mod-profession-experience.git", "description": "Azerothcore Module to reward experience when using professions", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2035,7 +2035,7 @@ "repo": "https://github.com/lucafolloni/mod-account-vanity-pets.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2050,7 +2050,7 @@ "repo": "https://github.com/abutbul/mod-game-state-api.git", "description": "AzerothCore game state api", "type": "cpp", - "category": "uncategorized", + "category": "tooling", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "block_reason": "Linker failure: httplib TLS initialization symbol conflicts with mod-discord-announce (bad TLS reference)", @@ -2066,7 +2066,7 @@ "repo": "https://github.com/TheArktect/mod-weekend-xp.git", "description": "Enhanced AzerothCore module to double XP on the weekend", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2081,7 +2081,7 @@ "repo": "https://github.com/trembon/mod-peacekeeper.git", "description": "Module for AzerothCore to enable players gain reputation with both factions that normally are at war.", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2096,7 +2096,7 @@ "repo": "https://github.com/pangolp/mod-quest-loot-party.git", "description": "This mod, created for the AzerothCore community, allows people in a group to obtain a quest item from an npc, as long as the item is available. All members will be able to obtain it.", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2111,7 +2111,7 @@ "repo": "https://github.com/zesman21/mod-nordf.git", "description": "This module prevents the player to join the random dungeon finder and prints a error message to the player.", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2126,7 +2126,7 @@ "repo": "https://github.com/TheArktect/mod-discord-announce.git", "description": "AzerothCore module to send Discord messages on specific server events", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2141,7 +2141,7 @@ "repo": "https://github.com/avarishd/mod-brawlers-guild.git", "description": "Adds Mist of Pandaria's Brawler's Guild to AzerothCore.", "type": "cpp", - "category": "uncategorized", + "category": "minigame", "notes": "DISABLED: no matching member function for call to 'DelayEvents'", "status": "blocked", "order": 5000, @@ -2157,7 +2157,7 @@ "repo": "https://github.com/Zindokar/mod-hardcore.git", "description": "AzerothCore module to replicate hardcore mode. Simple but effective.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2172,7 +2172,7 @@ "repo": "https://github.com/jorge990125/mod-streams.git", "description": "Modulo de anuncios para streamer", "type": "cpp", - "category": "uncategorized", + "category": "tooling", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2187,7 +2187,7 @@ "repo": "https://github.com/jorge990125/mod-black-market.git", "description": "Mercado negro", "type": "cpp", - "category": "uncategorized", + "category": "database", "notes": "DISABLED: SQL schema mismatch - StatsCount column doesn't exist", "status": "blocked", "order": 5000, @@ -2203,7 +2203,7 @@ "repo": "https://github.com/brian8544/mod-talentbutton.git", "description": "Adds Dual Talent Specialization at level 10 and a button to unlearn talents anywhere, letting players reset talents without visiting a trainer.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2218,7 +2218,7 @@ "repo": "https://github.com/brian8544/mod-setxpbar.git", "description": "Set XP rate with the ease of your right mouse button.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2233,7 +2233,7 @@ "repo": "https://github.com/silviu20092/mod-item-upgrade.git", "description": "Individual item upgrades for AzerothCore.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2248,7 +2248,7 @@ "repo": "https://github.com/notepadguyOfficial/mod-level-rewards.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -2264,7 +2264,7 @@ "repo": "https://github.com/silviu20092/mod-reforging.git", "description": "Reforging system for AzerothCore.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2279,7 +2279,7 @@ "repo": "https://github.com/valsan-azerty-boi/mod-ony-naxx-logout-teleport.git", "description": "AzerothCore module that avoid client crash with reintroduced Vanilla Onyxia's Lair & Naxx", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2294,7 +2294,7 @@ "repo": "https://github.com/hallgaeuer/mod-quick-respawn.git", "description": "Azerothcore module to quickly spawn your ghost in front of instance portals after dying", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2309,7 +2309,7 @@ "repo": "https://github.com/Elmegaard/mod-auto-resurrect.git", "description": "This mod allows players to automatically resurrect at the start of an instance or raid when releasing their spirit", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2324,7 +2324,7 @@ "repo": "https://github.com/silviu20092/mod-improved-bank.git", "description": "Improved bank module for AzerothCore.", "type": "cpp", - "category": "uncategorized", + "category": "economy", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2339,7 +2339,7 @@ "repo": "https://github.com/jorge990125/mod-bienvenida.git", "description": "menu de bienvenida", "type": "cpp", - "category": "uncategorized", + "category": "social", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2354,7 +2354,7 @@ "repo": "https://github.com/BytesGalore/mod-no-hearthstone-cooldown.git", "description": "AzerothCore module that immediately skips the cooldown of the Hearthstone after use", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2369,7 +2369,7 @@ "repo": "https://github.com/heyitsbench/mod-ptr-template.git", "description": "Module for AzerothCore that adds character templates akin to Blizzlike implementation.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2384,7 +2384,7 @@ "repo": "https://github.com/azerothcore/mod-starter-guild.git", "description": "This module automatically joins new players to a guild of your choice on first login.", "type": "cpp", - "category": "uncategorized", + "category": "social", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2399,7 +2399,7 @@ "repo": "https://github.com/azerothcore/mod-bg-reward.git", "description": "BGReward module for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "rewards", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2414,7 +2414,7 @@ "repo": "https://github.com/azerothcore/mod-npc-morph.git", "description": "AzerothCore Module", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2429,7 +2429,7 @@ "repo": "https://github.com/azerothcore/mod-bg-item-reward.git", "description": "Rewards players with items of your choice after battleground victories and defeats.", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2444,7 +2444,7 @@ "repo": "https://github.com/azerothcore/mod-ip-tracker.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "admin", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2459,7 +2459,7 @@ "repo": "https://github.com/azerothcore/mod-dmf-switch.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "content", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2474,7 +2474,7 @@ "repo": "https://github.com/azerothcore/mod-buff-command.git", "description": "BuffCommand module for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2489,7 +2489,7 @@ "repo": "https://github.com/azerothcore/mod-npc-codebox.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2504,7 +2504,7 @@ "repo": "https://github.com/azerothcore/mod-chromie-xp.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2519,7 +2519,7 @@ "repo": "https://github.com/silviu20092/mod-sell-items.git", "description": "Sell items module for AzerothCore.", "type": "cpp", - "category": "uncategorized", + "category": "economy", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2534,7 +2534,7 @@ "repo": "https://github.com/azerothcore/mod-pvp-zones.git", "description": "A module redefining world pvp.", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2549,7 +2549,7 @@ "repo": "https://github.com/azerothcore/mod-congrats-on-level.git", "description": "This module rewards players when they reach specific levels", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2564,7 +2564,7 @@ "repo": "https://github.com/azerothcore/mod-guild-zone-system.git", "description": "AzerothCore Module", "type": "cpp", - "category": "uncategorized", + "category": "social", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2579,7 +2579,7 @@ "repo": "https://github.com/azerothcore/mod-cta-switch.git", "description": "Module for AzerothCore that switches a Call to Arms! PvP event with another of your choice.", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2594,7 +2594,7 @@ "repo": "https://github.com/Gozzim/mod-npc-spectator.git", "description": "AzerothCore Module to provide an NPC for arena spectating", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2609,7 +2609,7 @@ "repo": "https://github.com/azerothcore/mod-npc-gambler.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2624,7 +2624,7 @@ "repo": "https://github.com/azerothcore/mod-weapon-visual.git", "description": "AzerothCore Module", "type": "cpp", - "category": "uncategorized", + "category": "customization", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2639,7 +2639,7 @@ "repo": "https://github.com/azerothcore/mod-npc-all-mounts.git", "description": "Teaches all mounts", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2654,7 +2654,7 @@ "repo": "https://github.com/azerothcore/mod-racial-trait-swap.git", "description": "Azerothcore Module for Racial Trait Swap", "type": "cpp", - "category": "uncategorized", + "category": "tooling", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2669,7 +2669,7 @@ "repo": "https://github.com/azerothcore/mod-money-for-kills.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "rewards", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2684,7 +2684,7 @@ "repo": "https://github.com/noisiver/mod-appreciation.git", "description": "This module allows players to obtain two services. They can get a level boost to 60, 70 or 80 which includes equipment equal to what they would get from quests or they can unlock flight paths in each continent", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2699,7 +2699,7 @@ "repo": "https://github.com/Conan1996-2/mod-hard-modes.git", "description": "Server wide hard modes for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2714,7 +2714,7 @@ "repo": "https://github.com/azerothcore/mod-queue-list-cache.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2729,7 +2729,7 @@ "repo": "https://github.com/azerothcore/mod-pvpstats-announcer.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2744,7 +2744,7 @@ "repo": "https://github.com/azerothcore/mod-rdf-expansion.git", "description": "Allows to join RDF of previous expansions on a higher character level", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2759,7 +2759,7 @@ "repo": "https://github.com/azerothcore/mod-costumes.git", "description": "Temporary morph items module for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "customization", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2774,7 +2774,7 @@ "repo": "https://github.com/noisiver/mod-weekendbonus.git", "description": "This module will increase the experience, money, reputation and skill ups gained on weekends. That means friday from 18:00 (6 PM), saturday and sunday. It will announce the start and end of the weekend bonus", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2789,7 +2789,7 @@ "repo": "https://github.com/noisiver/mod-junk-to-gold.git", "description": "Automatically sells looted gray items", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2804,7 +2804,7 @@ "repo": "https://github.com/azerothcore/mod-desertion-warnings.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2819,7 +2819,7 @@ "repo": "https://github.com/azerothcore/mod-low-level-rbg.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2834,7 +2834,7 @@ "repo": "https://github.com/NhobodyImportant/Prestige.git", "description": "Prestige level system mod for Azerothcore", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "DISABLED: 'OnLogin' marked 'override' but does not override", "status": "blocked", "order": 5000, @@ -2850,7 +2850,7 @@ "repo": "https://github.com/AnchyDev/HardMode.git", "description": "Adds extra difficulty modes, heavily inspired by mod-challenge-modes.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -2866,7 +2866,7 @@ "repo": "https://github.com/azerothcore/mod-low-level-arena.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2881,7 +2881,7 @@ "repo": "https://github.com/pangolp/mod-cfpve.git", "description": "This module obtains the faction of the first player who enters the list of instances used in it, and changes the obtained faction to the rest of the players so that the events can be carried out normally.", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2896,7 +2896,7 @@ "repo": "https://github.com/noisiver/mod-accountbound.git", "description": "This module aims to make mounts, companions and heirlooms shared across all characters of an account", "type": "cpp", - "category": "uncategorized", + "category": "account-wide", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -2912,7 +2912,7 @@ "repo": "https://github.com/Exitare/mod-discord-webhook.git", "description": "Send webhooks to discord using scripts ", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "block_reason": "Linker failure: ModulesLoader expects Addmod_discord_webhookScripts() but module does not export it", @@ -2928,7 +2928,7 @@ "repo": "https://github.com/bewarellamas/mod-dungeonmaster.git", "description": "Azerothcore module that adds an NPC to teleport players to dungeons.", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2943,7 +2943,7 @@ "repo": "https://github.com/sogladev/mod-reset-raid-cooldowns.git", "description": "AzerothCore custom module that raid cooldown reset behavior from wrath classic ", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2958,7 +2958,7 @@ "repo": "https://github.com/sogladev/mod-increment-cache-version.git", "description": "Automatically increments the cache version on server startup, ensuring clients always have up-to-date cache data", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2973,7 +2973,7 @@ "repo": "https://github.com/pangolp/mod-recruit-friend.git", "description": "Module for azerothCore that allows you to recruit a friend within the game.", "type": "cpp", - "category": "uncategorized", + "category": "social", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -2988,7 +2988,7 @@ "repo": "https://github.com/Lenzork/mod-petequip.git", "description": "A module for AzerothCore which let's your Warlocks for example change the Weapon of the Felguard", "type": "cpp", - "category": "uncategorized", + "category": "admin", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3003,7 +3003,7 @@ "repo": "https://github.com/Kadan-gx/mod-login-rewards.git", "description": "A daily login reward module for the AzerothCore wow emulator.", "type": "cpp", - "category": "uncategorized", + "category": "rewards", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3019,7 +3019,7 @@ "repo": "https://github.com/tbcstar/mod-high-risk-system.git", "description": "High Risk System | Equipment/Bag Drops on Death via a Chest", "type": "cpp", - "category": "uncategorized", + "category": "rewards", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3034,7 +3034,7 @@ "repo": "https://github.com/Gozzim/mod-starting-pet.git", "description": "AzerothCore Module to provide hunters and warlocks with a starting pet", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "block_reason": "Compilation error: mod-starting-pet hooks OnFirstLogin as override but base method is not virtual", @@ -3050,7 +3050,7 @@ "repo": "https://github.com/Helias/mod-bg-twinpeaks.git", "description": " Twin Peaks battleground in Wotlk3.3.5a as module for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3065,7 +3065,7 @@ "repo": "https://github.com/Helias/mod-bg-battle-for-gilneas.git", "description": "Cataclysm battleground Battle for Gilneas into WOTLK as AzerothCore module", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3080,7 +3080,7 @@ "repo": "https://github.com/Helias/mod-arena-tigerspeak.git", "description": "Tiger's Peak arena battleground in Wotlk 3.3.5a as module for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3095,7 +3095,7 @@ "repo": "https://github.com/Helias/mod-arena-tolviron.git", "description": "Tol'Viron arena battleground in Wotlk 3.3.5a as module for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3110,7 +3110,7 @@ "repo": "https://github.com/sogladev/mod-ghost-speed.git", "description": "AzerothCore custom module that customizes ghost speed", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3125,7 +3125,7 @@ "repo": "https://github.com/noisiver/mod-guildfunds.git", "description": "This module will deposit a certain percentage of money looted and earned from quests into the guild bank", "type": "cpp", - "category": "uncategorized", + "category": "economy", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3140,7 +3140,7 @@ "repo": "https://github.com/AnchyDev/BreakingNewsOverride.git", "description": "An Azeroth Core module to allow the display of the Breaking News section on the character select screen.", "type": "cpp", - "category": "uncategorized", + "category": "social", "notes": "DISABLED: no member named 'StringFormatFmt' in namespace 'Acore'", "status": "blocked", "order": 5000, @@ -3156,7 +3156,7 @@ "repo": "https://github.com/Seaferer/AOE-loot---merge.git", "description": "Merge all loot in a single creature.", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3171,7 +3171,7 @@ "repo": "https://github.com/justin-kaufmann/mod-changeablespawnrates.git", "description": "This WoW-Azerothcore-Mod allows to change spawntimes based on a userdefined or dynamically calculated playerbased factor", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3187,7 +3187,7 @@ "repo": "https://github.com/justin-kaufmann/mod-noclip.git", "description": "This mod allows noclip with a command noclip. on / off", "type": "cpp", - "category": "uncategorized", + "category": "admin", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3203,7 +3203,7 @@ "repo": "https://github.com/azerothcore/mod-npc-services.git", "description": "AzerothCore Module", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3218,7 +3218,7 @@ "repo": "https://github.com/pangolp/mod-npc-promotion.git", "description": "This module allows you to grant promotions through an NPC that is added to the initial areas. It has some settings, so it is recommended to review them and adapt them to the project where it will be used.", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3233,7 +3233,7 @@ "repo": "https://github.com/DevJoestar/DevJoestar.git", "description": "DevJoestar", "type": "cpp", - "category": "uncategorized", + "category": "developer", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3248,7 +3248,7 @@ "repo": "https://github.com/Tralenor/mod-objscale.git", "description": "AzerothCore port (as a Module) of Rochet2's Objscale", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3264,7 +3264,7 @@ "repo": "https://github.com/silviu20092/mod-warlock-pet-rename.git", "description": "Warlock pet rename module for AzerothCore.", "type": "cpp", - "category": "uncategorized", + "category": "customization", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3279,7 +3279,7 @@ "repo": "https://github.com/WoWHellgarve-HolyDeeW/mod-multi-vendor.git", "description": "Plug&Play Multi-Vendor module for AzerothCore & WoWHellgarve-Wotlk", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3295,7 +3295,7 @@ "repo": "https://github.com/sogladev/mod-demonic-pact-classic.git", "description": "AzerothCore custom module that implements demonic pact behavior from wrath classic", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3310,7 +3310,7 @@ "repo": "https://github.com/AnchyDev/RecycledItems.git", "description": "An AzerothCore module that recycles unwanted items to the auction house.", "type": "cpp", - "category": "uncategorized", + "category": "economy", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3326,7 +3326,7 @@ "repo": "https://github.com/xiii-hearts/mod-npc-subclass.git", "description": "Adds an NPC that will teach all available Armours & Weapons Proficiency.", "type": "cpp", - "category": "uncategorized", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3341,7 +3341,7 @@ "repo": "https://github.com/AnchyDev/Attriboost.git", "description": "AzerothCore module that adds a random attribute book.", "type": "cpp", - "category": "uncategorized", + "category": "admin", "notes": "DISABLED: 'OnLogin' marked 'override' but does not override", "status": "blocked", "order": 5000, @@ -3357,7 +3357,7 @@ "repo": "https://github.com/AnchyDev/Prestigious.git", "description": "AzerothCore module that allows prestige at max level.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "DISABLED: use of undeclared identifier 'sSpellMgr'", "status": "blocked", "order": 5000, @@ -3373,7 +3373,7 @@ "repo": "https://github.com/AnchyDev/Recache.git", "description": "Forces the client to obtain a new cache for each new session.", "type": "cpp", - "category": "uncategorized", + "category": "tooling", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3388,7 +3388,7 @@ "repo": "https://github.com/talamortis/mod_reward_shop.git", "description": "Ingame shop for Azerothcore", "type": "cpp", - "category": "uncategorized", + "category": "economy", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "block_reason": "Database import failure: npc.sql expects column 'modelid1' which no longer exists", @@ -3404,7 +3404,7 @@ "repo": "https://github.com/AnchyDev/ExtendedXP.git", "description": "An Azeroth Core module that adds alternative XP gains.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3420,7 +3420,7 @@ "repo": "https://github.com/fischerlol/mod-level-15-boost.git", "description": "Optional level 15 boost so players can go straight into dungeons if they wish.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3436,7 +3436,7 @@ "repo": "https://github.com/AnchyDev/BGQueueChecker.git", "description": "Ensures all party members have matching faction before queueing into battleground.", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3452,7 +3452,7 @@ "repo": "https://github.com/gitdalisar/addon-Faction-Free-Unit-Popup.git", "description": "Faction Free Unit Popup is a WOTLK 3.3.5a (Azerothcore base) addon allow a player to whisper and invite a player of the opposing faction, which is hidden by default.", "type": "cpp", - "category": "uncategorized", + "category": "social", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "active", "order": 5000, @@ -3467,7 +3467,7 @@ "repo": "https://github.com/MellianStudios/mod-encounter-logs.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "admin", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3483,7 +3483,7 @@ "repo": "https://github.com/Elmsroth/mod-trade-items-filter.git", "description": "AzerothCore custom module which allows filtering traded items", "type": "cpp", - "category": "uncategorized", + "category": "economy", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3499,7 +3499,7 @@ "repo": "https://github.com/pangolp/mod-quest-status.git", "description": "This module allows you to search for quests by ID, which gives you greater precision in your search.", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3515,7 +3515,7 @@ "repo": "https://github.com/talamortis/mod-PvPScript.git", "description": "PvPScript for Azerothcore", "type": "cpp", - "category": "uncategorized", + "category": "pvp", "notes": "DISABLED: no member named 'SendNotification' in 'WorldSession'", "status": "blocked", "order": 5000, @@ -3531,7 +3531,7 @@ "repo": "https://github.com/AnchyDev/ItemBroadcastGuildChat.git", "description": "Broadcasts items with the ITEM_FLAG_REPORT_TO_GUILD_CHAT flag to guild chat.", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3547,7 +3547,7 @@ "repo": "https://github.com/AnchyDev/FFAFix.git", "description": "Fixes FFA for safe zones.", "type": "cpp", - "category": "uncategorized", + "category": "content", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3563,7 +3563,7 @@ "repo": "https://github.com/AnchyDev/ACI.git", "description": "AzerothCore Interconnect", "type": "cpp", - "category": "uncategorized", + "category": "tooling", "notes": "DISABLED: no member named 'StringFormatFmt' in namespace 'Acore'", "status": "blocked", "order": 5000, @@ -3579,7 +3579,7 @@ "repo": "https://github.com/StealthyApe/RaidTeleporter.git", "description": "Module that adds teleports to Raid bosses for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3595,7 +3595,7 @@ "repo": "https://github.com/hallgaeuer/mod-quickbalance.git", "description": "This module is intended to provide fixed balance adjustments for raids and dungeons (NOT autobalancing).", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3611,7 +3611,7 @@ "repo": "https://github.com/kjack9/mod-dead-means-dead.git", "description": "AzerothCore module to alter or remove the respawn timer on creatures.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3627,7 +3627,7 @@ "repo": "https://github.com/hallgaeuer/mod-dynamic-loot-rates.git", "description": "Azerothcore module to allow for different group / reference loot rates in dungeons and raids", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3643,7 +3643,7 @@ "repo": "https://github.com/microbica/mod-share-mounts.git", "description": "Share your mounts", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3659,7 +3659,7 @@ "repo": "https://github.com/talamortis/mod-premium.git", "description": "This is a module for AzerothCore that adds Premium account features to players.", "type": "cpp", - "category": "uncategorized", + "category": "premium", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3675,7 +3675,7 @@ "repo": "https://github.com/Gozzim/mod-globalchat.git", "description": "AzerothCore Module for an Advanced Global Chat", "type": "cpp", - "category": "uncategorized", + "category": "social", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3691,7 +3691,7 @@ "repo": "https://github.com/ZhengPeiRu21/mod-leech.git", "description": "An AzerothCore module that heals players when dealing damage.", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3707,7 +3707,7 @@ "repo": "https://github.com/talamortis/PlayerTeleport.git", "description": "Module for Azerothcore to teleport players to with a command", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "DISABLED: only virtual member functions can be marked 'override'", "status": "blocked", "order": 5000, @@ -3738,7 +3738,7 @@ "repo": "https://github.com/AnchyDev/StatBoosterReroller.git", "description": "Adds a re-roll item for StatBooster bonus stat.", "type": "cpp", - "category": "uncategorized", + "category": "rewards", "notes": "DISABLED: 'StatBoostMgr.h' file not found", "status": "blocked", "order": 5000, @@ -3754,7 +3754,7 @@ "repo": "https://github.com/Miithrandiir/mod_sponsorship.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "economy", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3770,7 +3770,7 @@ "repo": "https://github.com/bewarellamas/mod-profspecs.git", "description": "Profession Spec module for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3786,7 +3786,7 @@ "repo": "https://github.com/Regrad/Update-mob-level-to-player-and-Random-item-stats.git", "description": "Update-mob-level-to-player and Random-item-stats", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3802,7 +3802,7 @@ "repo": "https://github.com/azerothcore/mod-premium-lib.git", "description": "A library module for all premium modules. Use it as a dependency.", "type": "cpp", - "category": "uncategorized", + "category": "premium", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3818,7 +3818,7 @@ "repo": "https://github.com/noisiver/mod-spawnpoints.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3834,7 +3834,7 @@ "repo": "https://github.com/Gozzim/mod-FirstLogin-AIO.git", "description": "All-In-One Solution module to easily enable features for new players", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "DISABLED: no member named 'getLevel'; did you mean 'GetLevel'?", "status": "blocked", "order": 5000, @@ -3850,7 +3850,7 @@ "repo": "https://github.com/Winfidonarleyan/kargatum-system.git", "description": "Custom scipts and modules for Azerothcore", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "DISABLED: no member named 'PQuery' / 'outString' in Log", "status": "blocked", "order": 5000, @@ -3866,7 +3866,7 @@ "repo": "https://github.com/talamortis/mod-individual-XP.git", "description": "Individual player xp module for Azerothcore", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3882,7 +3882,7 @@ "repo": "https://github.com/betayi/mod_spec_reward.git", "description": "Module of Azerothcore, Reward players with spec after boss killed.", "type": "cpp", - "category": "uncategorized", + "category": "rewards", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3898,7 +3898,7 @@ "repo": "https://github.com/noisiver/mod-activatezones.git", "description": "", "type": "cpp", - "category": "uncategorized", + "category": "content", "notes": "DISABLED: Missing config identifier", "status": "blocked", "order": 5000, @@ -3914,7 +3914,7 @@ "repo": "https://github.com/maluramichael/mod-influxdb.git", "description": "Pushes server and player events into an influxdb instance.", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "DISABLED: Build fails - requires CURL library (missing: CURL_LIBRARY CURL_INCLUDE_DIR)", "status": "blocked", "block_reason": "CMake Error: Could NOT find CURL", @@ -3930,7 +3930,7 @@ "repo": "https://github.com/vhiperdev/mod-spellregulator.git", "description": "Spell Regulator module for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "scripting", "notes": "DISABLED: redefinition of 'AddSpellRegulatorScripts'", "status": "blocked", "order": 5000, @@ -3946,7 +3946,7 @@ "repo": "https://github.com/talamortis/mod-ItemLevel.git", "description": "Module for Azerothcore", "type": "cpp", - "category": "uncategorized", + "category": "progression", "notes": "DISABLED: 'ChatHandler' is an incomplete type", "status": "blocked", "order": 5000, @@ -3962,7 +3962,7 @@ "repo": "https://github.com/ELdoBA/mod-Dynamic-Resurrections-.git", "description": "AzerothCore Module", "type": "cpp", - "category": "uncategorized", + "category": "quality-of-life", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -3978,7 +3978,7 @@ "repo": "https://github.com/azerothcore/mod-alpha-rewards.git", "description": "WIP reward system for AC ingame shop", "type": "cpp", - "category": "uncategorized", + "category": "economy", "notes": "DISABLED: API incompatibility - ConfigMgr missing GetIntDefault method", "status": "blocked", "order": 5000, @@ -3994,7 +3994,7 @@ "repo": "https://github.com/talamortis/mod-whologged.git", "description": "who logged module for Azerothcore", "type": "cpp", - "category": "uncategorized", + "category": "admin", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -4010,7 +4010,7 @@ "repo": "https://github.com/talamortis/reward-system.git", "description": "Reward System for Azerothcore", "type": "cpp", - "category": "uncategorized", + "category": "rewards", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -4026,7 +4026,7 @@ "repo": "https://github.com/talamortis/mod_character_tools.git", "description": "character tools", "type": "cpp", - "category": "uncategorized", + "category": "tooling", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -4042,7 +4042,7 @@ "repo": "https://github.com/vhiperdev/mod-no-farming.git", "description": "Module for AzerothCore", "type": "cpp", - "category": "uncategorized", + "category": "admin", "notes": "Discovered via GitHub topic 'azerothcore-module'", "status": "blocked", "order": 5000, @@ -4959,7 +4959,7 @@ "repo": "https://github.com/Manmadedrummer/Weekly-Armor-Vendor-Black-Market-.git", "description": "Vendor who has a different Armor Set for each class that changes weekly", "type": "lua", - "category": "scripting", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-lua'", "status": "active", "order": 5000, @@ -5293,7 +5293,7 @@ "repo": "https://github.com/Day36512/Acore_Mall.git", "description": "Creates a vendor mall at GM Island, backported from Trinity.", "type": "sql", - "category": "database", + "category": "npc-service", "notes": "Discovered via GitHub topic 'azerothcore-sql'", "status": "active", "order": 5000, @@ -5393,4 +5393,4 @@ "last_modified": "2020-12-16T18:26:39Z" } ] -} \ No newline at end of file +} diff --git a/scripts/bash/migrate-stack.sh b/scripts/bash/migrate-stack.sh index b3df8d3..9732815 100755 --- a/scripts/bash/migrate-stack.sh +++ b/scripts/bash/migrate-stack.sh @@ -1,7 +1,7 @@ #!/bin/bash -# Utility to migrate module images (and optionally storage) to a remote host. -# Assumes module images have already been rebuilt locally. +# Utility to migrate deployment images (and optionally storage) to a remote host. +# Assumes your runtime images have already been built or pulled locally. set -euo pipefail @@ -41,6 +41,74 @@ resolve_project_image(){ echo "${project_name}:${tag}" } +declare -a DEPLOY_IMAGE_REFS=() +declare -a CLEANUP_IMAGE_REFS=() +declare -A DEPLOY_IMAGE_SET=() +declare -A CLEANUP_IMAGE_SET=() + +add_deploy_image_ref(){ + local image="$1" + [ -z "$image" ] && return + if [[ -z "${DEPLOY_IMAGE_SET[$image]:-}" ]]; then + DEPLOY_IMAGE_SET["$image"]=1 + DEPLOY_IMAGE_REFS+=("$image") + fi + add_cleanup_image_ref "$image" +} + +add_cleanup_image_ref(){ + local image="$1" + [ -z "$image" ] && return + if [[ -z "${CLEANUP_IMAGE_SET[$image]:-}" ]]; then + CLEANUP_IMAGE_SET["$image"]=1 + CLEANUP_IMAGE_REFS+=("$image") + fi +} + +collect_deploy_image_refs(){ + local auth_modules world_modules auth_playerbots world_playerbots db_import client_data bots_client_data + local auth_standard world_standard client_data_standard + + auth_modules="$(read_env_value AC_AUTHSERVER_IMAGE_MODULES "$(resolve_project_image "authserver-modules-latest")")" + world_modules="$(read_env_value AC_WORLDSERVER_IMAGE_MODULES "$(resolve_project_image "worldserver-modules-latest")")" + auth_playerbots="$(read_env_value AC_AUTHSERVER_IMAGE_PLAYERBOTS "$(resolve_project_image "authserver-playerbots")")" + world_playerbots="$(read_env_value AC_WORLDSERVER_IMAGE_PLAYERBOTS "$(resolve_project_image "worldserver-playerbots")")" + db_import="$(read_env_value AC_DB_IMPORT_IMAGE "$(resolve_project_image "db-import-playerbots")")" + client_data="$(read_env_value AC_CLIENT_DATA_IMAGE_PLAYERBOTS "$(resolve_project_image "client-data-playerbots")")" + + auth_standard="$(read_env_value AC_AUTHSERVER_IMAGE "acore/ac-wotlk-authserver:master")" + world_standard="$(read_env_value AC_WORLDSERVER_IMAGE "acore/ac-wotlk-worldserver:master")" + client_data_standard="$(read_env_value AC_CLIENT_DATA_IMAGE "acore/ac-wotlk-client-data:master")" + + local refs=( + "$auth_modules" + "$world_modules" + "$auth_playerbots" + "$world_playerbots" + "$db_import" + "$client_data" + "$auth_standard" + "$world_standard" + "$client_data_standard" + ) + for ref in "${refs[@]}"; do + add_deploy_image_ref "$ref" + done + + # Include default project-tagged images for cleanup even if env moved to custom tags + local fallback_refs=( + "$(resolve_project_image "authserver-modules-latest")" + "$(resolve_project_image "worldserver-modules-latest")" + "$(resolve_project_image "authserver-playerbots")" + "$(resolve_project_image "worldserver-playerbots")" + "$(resolve_project_image "db-import-playerbots")" + "$(resolve_project_image "client-data-playerbots")" + ) + for ref in "${fallback_refs[@]}"; do + add_cleanup_image_ref "$ref" + done +} + ensure_host_writable(){ local path="$1" [ -n "$path" ] || return 0 @@ -288,25 +356,13 @@ setup_remote_repository(){ cleanup_stale_docker_resources(){ echo "⋅ Cleaning up stale Docker resources on remote..." - # Get project name to target our containers/images specifically - local project_name - project_name="$(resolve_project_name)" - # Stop and remove old containers echo " • Removing old containers..." run_ssh "docker ps -a --filter 'name=ac-' --format '{{.Names}}' | xargs -r docker rm -f 2>/dev/null || true" # Remove old project images to force fresh load echo " • Removing old project images..." - local images_to_remove=( - "${project_name}:authserver-modules-latest" - "${project_name}:worldserver-modules-latest" - "${project_name}:authserver-playerbots" - "${project_name}:worldserver-playerbots" - "${project_name}:db-import-playerbots" - "${project_name}:client-data-playerbots" - ) - for img in "${images_to_remove[@]}"; do + for img in "${CLEANUP_IMAGE_REFS[@]}"; do run_ssh "docker rmi '$img' 2>/dev/null || true" done @@ -320,31 +376,22 @@ cleanup_stale_docker_resources(){ validate_remote_environment -echo "⋅ Exporting module images to $TARBALL" +collect_deploy_image_refs + +echo "⋅ Exporting deployment images to $TARBALL" # Check which images are available and collect them IMAGES_TO_SAVE=() - -project_auth_modules="$(resolve_project_image "authserver-modules-latest")" -project_world_modules="$(resolve_project_image "worldserver-modules-latest")" -project_auth_playerbots="$(resolve_project_image "authserver-playerbots")" -project_world_playerbots="$(resolve_project_image "worldserver-playerbots")" -project_db_import="$(resolve_project_image "db-import-playerbots")" -project_client_data="$(resolve_project_image "client-data-playerbots")" - -for image in \ - "$project_auth_modules" \ - "$project_world_modules" \ - "$project_auth_playerbots" \ - "$project_world_playerbots" \ - "$project_db_import" \ - "$project_client_data"; do +MISSING_IMAGES=() +for image in "${DEPLOY_IMAGE_REFS[@]}"; do if docker image inspect "$image" >/dev/null 2>&1; then IMAGES_TO_SAVE+=("$image") + else + MISSING_IMAGES+=("$image") fi done if [ ${#IMAGES_TO_SAVE[@]} -eq 0 ]; then - echo "❌ No AzerothCore images found to migrate. Run './build.sh' first or pull standard images." + echo "❌ No AzerothCore images found to migrate. Run './build.sh' first or pull the images defined in your .env." exit 1 fi @@ -352,6 +399,11 @@ echo "⋅ Found ${#IMAGES_TO_SAVE[@]} images to migrate:" printf ' • %s\n' "${IMAGES_TO_SAVE[@]}" docker image save "${IMAGES_TO_SAVE[@]}" > "$TARBALL" +if [ ${#MISSING_IMAGES[@]} -gt 0 ]; then + echo "⚠️ Skipping ${#MISSING_IMAGES[@]} images not present locally (will need to pull on remote if required):" + printf ' • %s\n' "${MISSING_IMAGES[@]}" +fi + if [[ $SKIP_STORAGE -eq 0 ]]; then if [[ -d storage ]]; then echo "⋅ Syncing storage to remote" diff --git a/setup.sh b/setup.sh index 1728a7b..709c37c 100755 --- a/setup.sh +++ b/setup.sh @@ -1241,7 +1241,7 @@ fi "automation" "quality-of-life" "gameplay-enhancement" "npc-service" "pvp" "progression" "economy" "social" "account-wide" "customization" "scripting" "admin" "premium" "minigame" - "content" "rewards" "developer" + "content" "rewards" "developer" "database" "tooling" "uncategorized" ) declare -A category_titles=( ["automation"]="🤖 Automation" @@ -1261,30 +1261,18 @@ fi ["content"]="🏰 Content" ["rewards"]="🎁 Rewards" ["developer"]="🛠️ Developer Tools" + ["database"]="🗄️ Database" + ["tooling"]="🔨 Tooling" + ["uncategorized"]="📦 Miscellaneous" ) + declare -A processed_categories=() - # Group modules by category using arrays - declare -A modules_by_category - local key - for key in "${selection_keys[@]}"; do - [ -n "${KNOWN_MODULE_LOOKUP[$key]:-}" ] || continue - local category="${MODULE_CATEGORY_MAP[$key]:-uncategorized}" - if [ -z "${modules_by_category[$category]:-}" ]; then - modules_by_category[$category]="$key" - else - modules_by_category[$category]="${modules_by_category[$category]} $key" - fi - done - - # Process modules by category - local cat - for cat in "${category_order[@]}"; do + render_category() { + local cat="$1" local module_list="${modules_by_category[$cat]:-}" - [ -n "$module_list" ] || continue + [ -n "$module_list" ] || return 0 - # Check if this category has any valid modules before showing header local has_valid_modules=0 - # Split the space-separated string properly local -a module_array IFS=' ' read -ra module_array <<< "$module_list" for key in "${module_array[@]}"; do @@ -1296,14 +1284,12 @@ fi fi done - # Skip category if no valid modules - [ "$has_valid_modules" = "1" ] || continue + [ "$has_valid_modules" = "1" ] || return 0 - # Display category header only when we have valid modules local cat_title="${category_titles[$cat]:-$cat}" printf '\n%b\n' "${BOLD}${CYAN}═══ ${cat_title} ═══${NC}" - # Process modules in this category + local first_in_cat=1 for key in "${module_array[@]}"; do [ -n "${KNOWN_MODULE_LOOKUP[$key]:-}" ] || continue local status_lc="${MODULE_STATUS_MAP[$key],,}" @@ -1313,6 +1299,10 @@ fi printf -v "$key" '%s' "0" continue fi + if [ "$first_in_cat" -ne 1 ]; then + printf '\n' + fi + first_in_cat=0 local prompt_label prompt_label="$(module_display_name "$key")" if [ "${MODULE_NEEDS_BUILD_MAP[$key]}" = "1" ]; then @@ -1340,6 +1330,30 @@ fi printf -v "$key" '%s' "0" fi done + processed_categories["$cat"]=1 + } + + # Group modules by category using arrays + declare -A modules_by_category + local key + for key in "${selection_keys[@]}"; do + [ -n "${KNOWN_MODULE_LOOKUP[$key]:-}" ] || continue + local category="${MODULE_CATEGORY_MAP[$key]:-uncategorized}" + if [ -z "${modules_by_category[$category]:-}" ]; then + modules_by_category[$category]="$key" + else + modules_by_category[$category]="${modules_by_category[$category]} $key" + fi + done + + # Process modules by category (ordered, then any new categories) + local cat + for cat in "${category_order[@]}"; do + render_category "$cat" + done + for cat in "${!modules_by_category[@]}"; do + [ -n "${processed_categories[$cat]:-}" ] && continue + render_category "$cat" done module_mode_label="preset 3 (Manual)" elif [ "$MODE_SELECTION" = "4" ]; then