chore: updates modules and module updater

This commit is contained in:
uprightbass360
2025-12-27 15:30:59 -05:00
parent 6ed10dead7
commit b8245e7b3f
4 changed files with 222 additions and 37 deletions

View File

@@ -707,3 +707,9 @@ MODULE_WOW_ELUNA_TS_MODULE=0
MODULE_WOW_SERVER_RELAY=0
MODULE_WOW_STATISTICS=0
MODULE_WRATH_OF_THE_VANILLA=0
MODULE_MOD_BOTS_LOGIN_FIX=0
MODULE_MOD_MATERIAL_BANK=0
MODULE_MOD_PROGRESSION_BLIZZLIKE=0
MODULE_MOD_PYTHON_ENGINE=0
MODULE_WRATH_OF_THE_VANILLA_V2=0
MODULE_AZEROTHMCP=0

View File

@@ -491,7 +491,7 @@
"block_reason": "Runtime error: SQL error: MODULE_mod-black-market_creature.sql references removed 'StatsCount' column",
"order": 5000,
"config_cleanup": [],
"notes": "Disabled due to runtime error: SQL error: MODULE_mod-black-market_creature.sql references removed 'StatsCount' column",
"notes": "Disabled due to runtime error: SQL error: MODULE_mod-black-market_creature.sql references removed 'StatsCount' column \nDiscovered via GitHub topic 'azerothcore-module'",
"last_modified": "2025-06-26T14:23:47Z"
},
{
@@ -1490,7 +1490,7 @@
"description": "Module for WoW 3.3.5a (AzerothCore \u2013 Playerbots). Tested on Ubuntu.",
"type": "cpp",
"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)",
"notes": "Disabled due to runtime error: MODULE_mod-guild-village_001_creature_template.sql tries to insert duplicate creature ID 987400 (ERROR 1062) \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -1581,7 +1581,7 @@
"description": "Module for WoW 3.3.5a (AzerothCore \u2013 Playerbots). Tested on Ubuntu.",
"type": "cpp",
"category": "database",
"notes": "Disabled due to runtime error: MODULE_mod-instance-tools_Creature.sql tries to insert duplicate creature ID 987456-0 (ERROR 1062)",
"notes": "Disabled due to runtime error: MODULE_mod-instance-tools_Creature.sql tries to insert duplicate creature ID 987456-0 (ERROR 1062) \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -1809,7 +1809,7 @@
"description": "Hardcore trial mod for groups of 1-5",
"type": "cpp",
"category": "progression",
"notes": "DISABLED: no member named 'isEmpty' in 'MapRefMgr'",
"notes": "DISABLED: no member named 'isEmpty' in 'MapRefMgr' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -2005,7 +2005,7 @@
"description": "AoE loot module for AzerothCore built from the ground up without loot loss. (No Loot Merging).",
"type": "cpp",
"category": "quality-of-life",
"notes": "DISABLED: Naming conflict with Item class",
"notes": "DISABLED: Naming conflict with Item class \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -2142,7 +2142,7 @@
"description": "Adds Mist of Pandaria's Brawler's Guild to AzerothCore.",
"type": "cpp",
"category": "minigame",
"notes": "DISABLED: no matching member function for call to 'DelayEvents'",
"notes": "DISABLED: no matching member function for call to 'DelayEvents' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -2188,7 +2188,7 @@
"description": "Mercado negro",
"type": "cpp",
"category": "database",
"notes": "DISABLED: SQL schema mismatch - StatsCount column doesn't exist",
"notes": "DISABLED: SQL schema mismatch - StatsCount column doesn't exist \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -2835,7 +2835,7 @@
"description": "Prestige level system mod for Azerothcore",
"type": "cpp",
"category": "progression",
"notes": "DISABLED: 'OnLogin' marked 'override' but does not override",
"notes": "DISABLED: 'OnLogin' marked 'override' but does not override \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -2851,7 +2851,7 @@
"description": "Adds extra difficulty modes, heavily inspired by mod-challenge-modes.",
"type": "cpp",
"category": "progression",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -2897,7 +2897,7 @@
"description": "This module aims to make mounts, companions and heirlooms shared across all characters of an account",
"type": "cpp",
"category": "account-wide",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3141,7 +3141,7 @@
"description": "An Azeroth Core module to allow the display of the Breaking News section on the character select screen.",
"type": "cpp",
"category": "social",
"notes": "DISABLED: no member named 'StringFormatFmt' in namespace 'Acore'",
"notes": "DISABLED: no member named 'StringFormatFmt' in namespace 'Acore' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3172,7 +3172,7 @@
"description": "This WoW-Azerothcore-Mod allows to change spawntimes based on a userdefined or dynamically calculated playerbased factor",
"type": "cpp",
"category": "progression",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3188,7 +3188,7 @@
"description": "This mod allows noclip with a command noclip. on / off",
"type": "cpp",
"category": "admin",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3249,7 +3249,7 @@
"description": "AzerothCore port (as a Module) of Rochet2's Objscale",
"type": "cpp",
"category": "progression",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3311,7 +3311,7 @@
"description": "An AzerothCore module that recycles unwanted items to the auction house.",
"type": "cpp",
"category": "economy",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3342,7 +3342,7 @@
"description": "AzerothCore module that adds a random attribute book.",
"type": "cpp",
"category": "admin",
"notes": "DISABLED: 'OnLogin' marked 'override' but does not override",
"notes": "DISABLED: 'OnLogin' marked 'override' but does not override \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3358,7 +3358,7 @@
"description": "AzerothCore module that allows prestige at max level.",
"type": "cpp",
"category": "progression",
"notes": "DISABLED: use of undeclared identifier 'sSpellMgr'",
"notes": "DISABLED: use of undeclared identifier 'sSpellMgr' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3405,7 +3405,7 @@
"description": "An Azeroth Core module that adds alternative XP gains.",
"type": "cpp",
"category": "progression",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3437,7 +3437,7 @@
"description": "Ensures all party members have matching faction before queueing into battleground.",
"type": "cpp",
"category": "pvp",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3484,7 +3484,7 @@
"description": "AzerothCore custom module which allows filtering traded items",
"type": "cpp",
"category": "economy",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3500,7 +3500,7 @@
"description": "This module allows you to search for quests by ID, which gives you greater precision in your search.",
"type": "cpp",
"category": "scripting",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3516,7 +3516,7 @@
"description": "PvPScript for Azerothcore",
"type": "cpp",
"category": "pvp",
"notes": "DISABLED: no member named 'SendNotification' in 'WorldSession'",
"notes": "DISABLED: no member named 'SendNotification' in 'WorldSession' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3532,7 +3532,7 @@
"description": "Broadcasts items with the ITEM_FLAG_REPORT_TO_GUILD_CHAT flag to guild chat.",
"type": "cpp",
"category": "scripting",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3548,7 +3548,7 @@
"description": "Fixes FFA for safe zones.",
"type": "cpp",
"category": "content",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3564,7 +3564,7 @@
"description": "AzerothCore Interconnect",
"type": "cpp",
"category": "tooling",
"notes": "DISABLED: no member named 'StringFormatFmt' in namespace 'Acore'",
"notes": "DISABLED: no member named 'StringFormatFmt' in namespace 'Acore' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3708,7 +3708,7 @@
"description": "Module for Azerothcore to teleport players to with a command",
"type": "cpp",
"category": "quality-of-life",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3739,7 +3739,7 @@
"description": "Adds a re-roll item for StatBooster bonus stat.",
"type": "cpp",
"category": "rewards",
"notes": "DISABLED: 'StatBoostMgr.h' file not found",
"notes": "DISABLED: 'StatBoostMgr.h' file not found \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3835,7 +3835,7 @@
"description": "All-In-One Solution module to easily enable features for new players",
"type": "cpp",
"category": "progression",
"notes": "DISABLED: no member named 'getLevel'; did you mean 'GetLevel'?",
"notes": "DISABLED: no member named 'getLevel'; did you mean 'GetLevel'? \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3851,7 +3851,7 @@
"description": "Custom scipts and modules for Azerothcore",
"type": "cpp",
"category": "scripting",
"notes": "DISABLED: no member named 'PQuery' / 'outString' in Log",
"notes": "DISABLED: no member named 'PQuery' / 'outString' in Log \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3899,7 +3899,7 @@
"description": "",
"type": "cpp",
"category": "content",
"notes": "DISABLED: Missing config identifier",
"notes": "DISABLED: Missing config identifier \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3915,7 +3915,7 @@
"description": "Pushes server and player events into an influxdb instance.",
"type": "cpp",
"category": "scripting",
"notes": "DISABLED: Build fails - requires CURL library (missing: CURL_LIBRARY CURL_INCLUDE_DIR)",
"notes": "DISABLED: Build fails - requires CURL library (missing: CURL_LIBRARY CURL_INCLUDE_DIR) \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"block_reason": "CMake Error: Could NOT find CURL",
"order": 5000,
@@ -3931,7 +3931,7 @@
"description": "Spell Regulator module for AzerothCore",
"type": "cpp",
"category": "scripting",
"notes": "DISABLED: redefinition of 'AddSpellRegulatorScripts'",
"notes": "DISABLED: redefinition of 'AddSpellRegulatorScripts' \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3947,7 +3947,7 @@
"description": "Module for Azerothcore",
"type": "cpp",
"category": "progression",
"notes": "DISABLED: 'ChatHandler' is an incomplete type",
"notes": "DISABLED: 'ChatHandler' is an incomplete type \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -3979,7 +3979,7 @@
"description": "WIP reward system for AC ingame shop",
"type": "cpp",
"category": "economy",
"notes": "DISABLED: API incompatibility - ConfigMgr missing GetIntDefault method",
"notes": "DISABLED: API incompatibility - ConfigMgr missing GetIntDefault method \nDiscovered via GitHub topic 'azerothcore-module'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -4149,7 +4149,7 @@
"description": "ACore CMS based on Wordpress",
"type": "tool",
"category": "tooling",
"notes": "Disabled due to runtime error: Table 'acore_auth.acore_cms_subscriptions' doesn't exist - causes server abort",
"notes": "Disabled due to runtime error: Table 'acore_auth.acore_cms_subscriptions' doesn't exist - causes server abort \nDiscovered via GitHub topic 'azerothcore-tools'",
"status": "blocked",
"block_reason": "Runtime error: Missing database table",
"order": 5000,
@@ -5065,7 +5065,7 @@
"description": "",
"type": "lua",
"category": "scripting",
"notes": "DISABLED: Git clone fails with 'unknown switch E' error - likely due to hyphen in repo name",
"notes": "DISABLED: Git clone fails with 'unknown switch E' error - likely due to hyphen in repo name \nDiscovered via GitHub topic 'azerothcore-lua'",
"status": "blocked",
"block_reason": "Git clone error: unknown switch 'E'",
"order": 5000,
@@ -5233,7 +5233,7 @@
"description": "This module adds thematically appropriate green and blue loot drops to ALL 450 Classic rares in Kalimdor and the Eastern Kingdoms.",
"type": "sql",
"category": "database",
"notes": "DISABLED: only virtual member functions can be marked 'override'",
"notes": "DISABLED: only virtual member functions can be marked 'override' \nDiscovered via GitHub topic 'azerothcore-sql'",
"status": "blocked",
"order": 5000,
"requires": [],
@@ -5391,6 +5391,90 @@
"post_install_hooks": [],
"config_cleanup": [],
"last_modified": "2020-12-16T18:26:39Z"
},
{
"key": "MODULE_MOD_BOTS_LOGIN_FIX",
"name": "mod-bots-login-fix",
"repo": "https://github.com/BeardBear33/mod-bots-login-fix.git",
"description": "Oprava duplicitn\u00edho p\u0159ipojen\u00ed na AltBota pro modul Playerbots. // Fix for duplicate connections to an AltBot for the Playerbots module.",
"type": "cpp",
"category": "uncategorized",
"notes": "Discovered via GitHub topic 'azerothcore-module'",
"status": "active",
"order": 5000,
"requires": [],
"post_install_hooks": [],
"config_cleanup": []
},
{
"key": "MODULE_MOD_MATERIAL_BANK",
"name": "mod-material-bank",
"repo": "https://github.com/BeardBear33/mod-material-bank.git",
"description": "Module for WoW 3.3.5a (AzerothCore \u2013 Playerbots). Tested on Ubuntu.",
"type": "cpp",
"category": "uncategorized",
"notes": "Discovered via GitHub topic 'azerothcore-module'",
"status": "active",
"order": 5000,
"requires": [],
"post_install_hooks": [],
"config_cleanup": []
},
{
"key": "MODULE_MOD_PROGRESSION_BLIZZLIKE",
"name": "mod-progression-blizzlike",
"repo": "https://github.com/kambire/mod-progression-blizzlike.git",
"description": "Modular progression system for AzerothCore built around brackets (Vanilla/TBC/WotLK + Arena seasons). Each enabled bracket can load its own C++ scripts and SQL updates.",
"type": "cpp",
"category": "uncategorized",
"notes": "Discovered via GitHub topic 'azerothcore-module'",
"status": "active",
"order": 5000,
"requires": [],
"post_install_hooks": [],
"config_cleanup": []
},
{
"key": "MODULE_MOD_PYTHON_ENGINE",
"name": "mod-python-engine",
"repo": "https://github.com/privatecore/mod-python-engine.git",
"description": "A Python Scripting Engine module for AzerothCore",
"type": "cpp",
"category": "uncategorized",
"notes": "Discovered via GitHub topic 'azerothcore-module'",
"status": "active",
"order": 5000,
"requires": [],
"post_install_hooks": [],
"config_cleanup": []
},
{
"key": "MODULE_WRATH_OF_THE_VANILLA_V2",
"name": "wrath-of-the-vanilla-v2",
"repo": "https://github.com/Hextv/wrath-of-the-vanilla-v2.git",
"description": "Project that focuses on turning a server running AzerothCore into one limited to the original (vanilla) content.",
"type": "sql",
"category": "database",
"notes": "Discovered via GitHub topic 'azerothcore-module'",
"status": "active",
"order": 5000,
"requires": [],
"post_install_hooks": [],
"config_cleanup": []
},
{
"key": "MODULE_AZEROTHMCP",
"name": "azerothMCP",
"repo": "https://github.com/blinkysc/azerothMCP.git",
"description": "MCP server for AzerothCore",
"type": "tool",
"category": "tooling",
"notes": "Discovered via GitHub topic 'azerothcore-tools' Not directly related to runtime functionality of AzerothCore",
"status": "blocked",
"order": 5000,
"requires": [],
"post_install_hooks": [],
"config_cleanup": []
}
]
}

View File

@@ -467,6 +467,7 @@ load_sql_helper(){
# Module SQL is now staged at runtime by stage-modules.sh which copies files to
# /azerothcore/data/sql/updates/ (core directory) where they ARE scanned and processed.
track_module_state(){
echo 'Checking for module changes that require rebuild...'

View File

@@ -18,6 +18,7 @@ import re
import sys
import time
from dataclasses import dataclass
from pathlib import Path
from typing import Dict, Iterable, List, Optional, Sequence
from urllib import error, parse, request
@@ -87,6 +88,16 @@ def parse_args(argv: Sequence[str]) -> argparse.Namespace:
action="store_true",
help="Print verbose progress information",
)
parser.add_argument(
"--update-template",
default=".env.template",
help="Update .env.template with missing module variables (default: %(default)s)",
)
parser.add_argument(
"--skip-template",
action="store_true",
help="Skip updating .env.template",
)
return parser.parse_args(argv)
@@ -273,6 +284,82 @@ def collect_repositories(
return list(seen.values())
def update_env_template(manifest_path: str, template_path: str) -> bool:
"""Update .env.template with missing module variables.
Args:
manifest_path: Path to the module manifest JSON file
template_path: Path to .env.template file
Returns:
True if template was updated, False if no changes needed
"""
# Load manifest to get all module keys
manifest = load_manifest(manifest_path)
modules = manifest.get("modules", [])
if not modules:
return False
# Extract all module keys
module_keys = set()
for module in modules:
key = module.get("key")
if key:
module_keys.add(key)
if not module_keys:
return False
# Check if template file exists
template_file = Path(template_path)
if not template_file.exists():
print(f"Warning: .env.template not found at {template_path}")
return False
# Read current template content
try:
current_content = template_file.read_text(encoding="utf-8")
current_lines = current_content.splitlines()
except Exception as exc:
print(f"Error reading .env.template: {exc}")
return False
# Find which module variables are missing
existing_vars = set()
for line in current_lines:
line = line.strip()
if "=" in line and not line.startswith("#"):
var_name = line.split("=", 1)[0].strip()
existing_vars.add(var_name)
missing_vars = module_keys - existing_vars
if not missing_vars:
print("✅ All module variables present in .env.template")
return False
# Add missing variables to the end of the file
print(f"📝 Adding {len(missing_vars)} missing module variable(s) to .env.template:")
# Sort missing vars for consistent output
sorted_missing = sorted(missing_vars)
# Prepare new content
new_lines = current_lines[:]
for var in sorted_missing:
new_lines.append(f"{var}=0")
print(f"{var}=0")
# Write updated content
try:
new_content = "\n".join(new_lines) + "\n"
template_file.write_text(new_content, encoding="utf-8")
print("✅ .env.template updated successfully")
return True
except Exception as exc:
print(f"Error writing .env.template: {exc}")
return False
def main(argv: Sequence[str]) -> int:
args = parse_args(argv)
topics = args.topics or DEFAULT_TOPICS
@@ -291,6 +378,13 @@ def main(argv: Sequence[str]) -> int:
handle.write("\n")
print(f"Updated manifest {args.manifest}: added {added}, refreshed {updated}")
# Update .env.template if requested and we have changes
if not args.skip_template and (added > 0 or updated > 0):
template_updated = update_env_template(args.manifest, args.update_template)
if template_updated:
print(f"Updated {args.update_template} with new module variables")
return 0