Files
AzerothCore-RealmMaster/config/modules.json
uprightbass360 64d0478320 feat: refactor post-install hooks to manifest-driven system
- Replace hardcoded hooks with external scripts in scripts/hooks/
- Add 4 generic hook scripts (copy-standard-lua, copy-aio-lua, mod-ale-patches, black-market-setup)
- Update all 28 module hook definitions in config/modules.json
- Remove legacy hook functions from manage-modules.sh
- Add 26 new Eluna Lua modules to .env.template (disabled by default)
- Add 3 new AIO modules to .env.template (disabled by default)
- Implement proper environment variable interface for hooks
- Add comprehensive documentation and refactoring summary

🤖 Generated with [Claude Code](https://claude.ai/code)
2025-11-01 18:53:34 -04:00

908 lines
23 KiB
JSON

{
"modules": [
{
"key": "MODULE_PLAYERBOTS",
"name": "mod-playerbots",
"repo": "https://github.com/mod-playerbots/mod-playerbots.git",
"needs_build": false,
"type": "data",
"notes": "Installs SQL/config assets; core functionality is built into playerbot images",
"post_install_hooks": [],
"config_cleanup": [
"playerbots.conf*"
],
"depends_on": []
},
{
"key": "MODULE_AOE_LOOT",
"name": "mod-aoe-loot",
"repo": "https://github.com/azerothcore/mod-aoe-loot.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"mod_aoe_loot.conf*"
],
"depends_on": []
},
{
"key": "MODULE_LEARN_SPELLS",
"name": "mod-learn-spells",
"repo": "https://github.com/azerothcore/mod-learn-spells.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"mod_learnspells.conf*"
],
"depends_on": []
},
{
"key": "MODULE_FIREWORKS",
"name": "mod-fireworks-on-level",
"repo": "https://github.com/azerothcore/mod-fireworks-on-level.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"mod_fireworks.conf*"
],
"depends_on": []
},
{
"key": "MODULE_INDIVIDUAL_PROGRESSION",
"name": "mod-individual-progression",
"repo": "https://github.com/ZhengPeiRu21/mod-individual-progression.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"individual_progression.conf*"
],
"depends_on": []
},
{
"key": "MODULE_AHBOT",
"name": "mod-ahbot",
"repo": "https://github.com/azerothcore/mod-ahbot.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"mod_ahbot.conf*"
],
"depends_on": []
},
{
"key": "MODULE_AUTOBALANCE",
"name": "mod-autobalance",
"repo": "https://github.com/azerothcore/mod-autobalance.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"AutoBalance.conf*"
],
"depends_on": []
},
{
"key": "MODULE_TRANSMOG",
"name": "mod-transmog",
"repo": "https://github.com/azerothcore/mod-transmog.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"transmog.conf*"
],
"depends_on": []
},
{
"key": "MODULE_NPC_BUFFER",
"name": "mod-npc-buffer",
"repo": "https://github.com/azerothcore/mod-npc-buffer.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"npc_buffer.conf*"
],
"depends_on": []
},
{
"key": "MODULE_DYNAMIC_XP",
"name": "mod-dynamic-xp",
"repo": "https://github.com/azerothcore/mod-dynamic-xp.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"Individual-XP.conf*"
],
"depends_on": []
},
{
"key": "MODULE_SOLO_LFG",
"name": "mod-solo-lfg",
"repo": "https://github.com/azerothcore/mod-solo-lfg.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"SoloLfg.conf*"
],
"depends_on": []
},
{
"key": "MODULE_1V1_ARENA",
"name": "mod-1v1-arena",
"repo": "https://github.com/azerothcore/mod-1v1-arena.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"1v1arena.conf*"
],
"depends_on": []
},
{
"key": "MODULE_PHASED_DUELS",
"name": "mod-phased-duels",
"repo": "https://github.com/azerothcore/mod-phased-duels.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"phasedduels.conf*"
],
"depends_on": []
},
{
"key": "MODULE_BREAKING_NEWS",
"name": "mod-breaking-news-override",
"repo": "https://github.com/azerothcore/mod-breaking-news-override.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"breaking_news.conf*"
],
"depends_on": []
},
{
"key": "MODULE_BOSS_ANNOUNCER",
"name": "mod-boss-announcer",
"repo": "https://github.com/azerothcore/mod-boss-announcer.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"boss_announcer.conf*"
],
"depends_on": []
},
{
"key": "MODULE_ACCOUNT_ACHIEVEMENTS",
"name": "mod-account-achievements",
"repo": "https://github.com/azerothcore/mod-account-achievements.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"account_achievements.conf*"
],
"depends_on": []
},
{
"key": "MODULE_AUTO_REVIVE",
"name": "mod-auto-revive",
"repo": "https://github.com/azerothcore/mod-auto-revive.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"AutoRevive.conf*"
],
"depends_on": []
},
{
"key": "MODULE_GAIN_HONOR_GUARD",
"name": "mod-gain-honor-guard",
"repo": "https://github.com/azerothcore/mod-gain-honor-guard.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"GainHonorGuard.conf*"
],
"depends_on": []
},
{
"key": "MODULE_ELUNA",
"name": "mod-ale",
"repo": "https://github.com/azerothcore/mod-ale.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [
"mod-ale-patches"
],
"config_cleanup": [
"mod_eluna.conf*"
],
"depends_on": []
},
{
"key": "MODULE_TIME_IS_TIME",
"name": "mod-TimeIsTime",
"repo": "https://github.com/dunjeon/mod-TimeIsTime.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"mod-time_is_time.conf*"
],
"depends_on": []
},
{
"key": "MODULE_POCKET_PORTAL",
"name": "mod-pocket-portal",
"repo": "https://github.com/azerothcore/mod-pocket-portal.git",
"needs_build": true,
"type": "cpp",
"status": "blocked",
"block_reason": "Requires C++20 std::format support patch before enabling",
"post_install_hooks": [],
"config_cleanup": [
"pocketportal.conf*"
],
"depends_on": []
},
{
"key": "MODULE_RANDOM_ENCHANTS",
"name": "mod-random-enchants",
"repo": "https://github.com/azerothcore/mod-random-enchants.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"RandomEnchants.conf*"
],
"depends_on": []
},
{
"key": "MODULE_SOLOCRAFT",
"name": "mod-solocraft",
"repo": "https://github.com/azerothcore/mod-solocraft.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"Solocraft.conf*"
],
"depends_on": []
},
{
"key": "MODULE_PVP_TITLES",
"name": "mod-pvp-titles",
"repo": "https://github.com/azerothcore/mod-pvp-titles.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": [
"MODULE_ELUNA"
],
"config_cleanup": [
"mod_pvptitles.conf*"
]
},
{
"key": "MODULE_NPC_BEASTMASTER",
"name": "mod-npc-beastmaster",
"repo": "https://github.com/azerothcore/mod-npc-beastmaster.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"npc_beastmaster.conf*"
],
"depends_on": []
},
{
"key": "MODULE_NPC_ENCHANTER",
"name": "mod-npc-enchanter",
"repo": "https://github.com/azerothcore/mod-npc-enchanter.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"npc_enchanter.conf*"
],
"depends_on": []
},
{
"key": "MODULE_INSTANCE_RESET",
"name": "mod-instance-reset",
"repo": "https://github.com/azerothcore/mod-instance-reset.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"instance-reset.conf*"
],
"depends_on": []
},
{
"key": "MODULE_LEVEL_GRANT",
"name": "mod-quest-count-level",
"repo": "https://github.com/michaeldelago/mod-quest-count-level.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"levelGrant.conf*"
],
"depends_on": []
},
{
"key": "MODULE_ARAC",
"name": "mod-arac",
"repo": "https://github.com/heyitsbench/mod-arac.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"config_cleanup": [
"arac.conf*"
],
"depends_on": []
},
{
"key": "MODULE_ASSISTANT",
"name": "mod-assistant",
"repo": "https://github.com/noisiver/mod-assistant.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": []
},
{
"key": "MODULE_REAGENT_BANK",
"name": "mod-reagent-bank",
"repo": "https://github.com/ZhengPeiRu21/mod-reagent-bank.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": []
},
{
"key": "MODULE_BLACK_MARKET_AUCTION_HOUSE",
"name": "mod-black-market",
"repo": "https://github.com/Youpeoples/Black-Market-Auction-House.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"black-market-setup"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_CHALLENGE_MODES",
"name": "mod-challenge-modes",
"repo": "https://github.com/ZhengPeiRu21/mod-challenge-modes.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": []
},
{
"key": "MODULE_OLLAMA_CHAT",
"name": "mod-ollama-chat",
"repo": "https://github.com/DustinHendrickson/mod-ollama-chat.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": []
},
{
"key": "MODULE_PLAYER_BOT_LEVEL_BRACKETS",
"name": "mod-player-bot-level-brackets",
"repo": "https://github.com/DustinHendrickson/mod-player-bot-level-brackets.git",
"needs_build": true,
"type": "cpp",
"requires": [
"MODULE_PLAYERBOTS"
],
"post_install_hooks": [],
"depends_on": []
},
{
"key": "MODULE_STATBOOSTER",
"name": "StatBooster",
"repo": "https://github.com/AnchyDev/StatBooster.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": []
},
{
"key": "MODULE_DUNGEON_RESPAWN",
"name": "DungeonRespawn",
"repo": "https://github.com/AnchyDev/DungeonRespawn.git",
"needs_build": true,
"type": "cpp",
"status": "blocked",
"block_reason": "Upstream override signature mismatch (OnBeforeTeleport); awaiting fix",
"post_install_hooks": [],
"depends_on": []
},
{
"key": "MODULE_SKELETON_MODULE",
"name": "skeleton-module",
"repo": "https://github.com/azerothcore/skeleton-module.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": []
},
{
"key": "MODULE_BG_SLAVERYVALLEY",
"name": "mod-bg-slaveryvalley",
"repo": "https://github.com/Helias/mod-bg-slaveryvalley.git",
"needs_build": true,
"type": "cpp",
"depends_on": [
"MODULE_ELUNA"
],
"post_install_hooks": []
},
{
"key": "MODULE_AZEROTHSHARD",
"name": "mod-azerothshard",
"repo": "https://github.com/azerothcore/mod-azerothshard.git",
"needs_build": true,
"type": "cpp",
"post_install_hooks": [],
"depends_on": []
},
{
"key": "MODULE_WORGOBLIN",
"name": "mod-worgoblin",
"repo": "https://github.com/heyitsbench/mod-worgoblin.git",
"needs_build": true,
"type": "cpp",
"depends_on": [
"MODULE_ELUNA"
],
"post_install_hooks": []
},
{
"key": "MODULE_ELUNA_TS",
"name": "eluna-ts",
"repo": "https://github.com/azerothcore/eluna-ts.git",
"needs_build": false,
"type": "tool",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_AIO",
"name": "mod-aio",
"repo": "https://github.com/Rochet2/AIO.git",
"needs_build": true,
"type": "cpp",
"notes": "Azeroth Interface Override - enables client-server interface communication",
"post_install_hooks": [],
"depends_on": []
},
{
"key": "MODULE_ELUNA_SCRIPTS",
"name": "eluna-scripts",
"repo": "https://github.com/Isidorsson/Eluna-scripts.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_TRANSMOG_AIO",
"name": "azerothcore-transmog-3.3.5a",
"repo": "https://github.com/DanieltheDeveloper/azerothcore-transmog-3.3.5a.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_AIO"
],
"post_install_hooks": [
"copy-aio-lua"
],
"depends_on": [
"MODULE_AIO"
]
},
{
"key": "MODULE_EVENT_SCRIPTS",
"name": "acore-eventscripts",
"repo": "https://github.com/55Honey/Acore_eventScripts.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_LEVEL_UP_REWARD",
"name": "acore-levelupreward",
"repo": "https://github.com/55Honey/Acore_LevelUpReward.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_ACCOUNTWIDE_SYSTEMS",
"name": "azerothcore-eluna-accountwide",
"repo": "https://github.com/Aldori15/azerothcore-eluna-accountwide.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_EXCHANGE_NPC",
"name": "acore-exchangenpc",
"repo": "https://github.com/55Honey/Acore_ExchangeNpc.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_RECRUIT_A_FRIEND",
"name": "acore-recruitafriend",
"repo": "https://github.com/55Honey/Acore_RecruitAFriend.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_PRESTIGE_DRAFT_MODE",
"name": "prestige-and-draft-mode",
"repo": "https://github.com/Youpeoples/Prestige-and-Draft-Mode.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_LUA_AH_BOT",
"name": "azerothcore-lua-ah-bot",
"repo": "https://github.com/mostlynick3/azerothcore-lua-ah-bot.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_HARDCORE_MODE",
"name": "lua-hardcoremode",
"repo": "https://github.com/HellionOP/Lua-HardcoreMode.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_NPCBOT_EXTENDED_COMMANDS",
"name": "npcbot-extended-commands",
"repo": "https://github.com/Day36512/Npcbot_Extended_Commands.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_MULTIVENDOR",
"name": "azerothcore-lua-multivendor",
"repo": "https://github.com/Shadowveil-WotLK/AzerothCore-lua-MultiVendor.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_TREASURE_CHEST_SYSTEM",
"name": "treasure-chest-system",
"repo": "https://github.com/zyggy123/Treasure-Chest-System.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_ACTIVE_CHAT",
"name": "activechat",
"repo": "https://github.com/Day36512/ActiveChat.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_ULTIMATE_FULL_LOOT_PVP",
"name": "ultimate-full-loot-pvp",
"repo": "https://github.com/Youpeoples/Ultimate-Full-Loot-Pvp.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_HORADRIC_CUBE",
"name": "horadric-cube-for-world-of-warcraft",
"repo": "https://github.com/TITIaio/Horadric-Cube-for-World-of-Warcraft.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_CARBON_COPY",
"name": "acore-carboncopy",
"repo": "https://github.com/55Honey/Acore_CarbonCopy.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_TEMP_ANNOUNCEMENTS",
"name": "acore-tempannouncements",
"repo": "https://github.com/55Honey/Acore_TempAnnouncements.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_ZONE_CHECK",
"name": "acore-zonecheck",
"repo": "https://github.com/55Honey/Acore_Zonecheck.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_AIO_BLACKJACK",
"name": "aio-blackjack",
"repo": "https://github.com/Manmadedrummer/AIO-Blackjack.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_AIO"
],
"post_install_hooks": [
"copy-aio-lua"
],
"depends_on": [
"MODULE_AIO"
]
},
{
"key": "MODULE_SEND_AND_BIND",
"name": "acore-sendandbind",
"repo": "https://github.com/55Honey/Acore_SendAndBind.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_DYNAMIC_TRADER",
"name": "dynamic-trader",
"repo": "https://github.com/Day36512/Dynamic-Trader.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_LOTTERY_LUA",
"name": "lottery-lua",
"repo": "https://github.com/zyggy123/lottery-lua.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_DISCORD_NOTIFIER",
"name": "acore-discordnotifier",
"repo": "https://github.com/0xCiBeR/Acore_DiscordNotifier.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
},
{
"key": "MODULE_GLOBAL_MAIL_BANKING_AUCTIONS",
"name": "azerothcore-global-mail-banking-auctions",
"repo": "https://github.com/Aldori15/azerothcore-global-mail_banking_auctions.git",
"needs_build": false,
"type": "lua",
"requires": [
"MODULE_ELUNA"
],
"post_install_hooks": [
"copy-standard-lua"
],
"depends_on": [
"MODULE_ELUNA"
]
}
]
}