fix(p2): restore plugin status UI, C_QuestLog/C_Map shims, QuestieServer init

- QuestieOptionsAdvanced.lua: restore compat_header, plugin_header, plugin_status_desc
  blocks showing loaded Questie-X plugins with stats in the Advanced options tab
- QuestieCompat.lua: add C_QuestLog shim (GetNumQuestLogEntries, GetQuestLogTitle,
  GetAllQuestIDs, GetQuestObjectives, IsQuestFlaggedCompleted, GetQuestPlayerQuestLink),
  C_Map shim (GetPlayerMapPosition, GetBestMapForUnit, GetMapInfo),
  GetTrackedAchievements, IsAchievementCompleted, and LibUIDropDownMenu shims
- QuestieInit.lua: import QuestieServer module, add QuestieServer:Init() call with nil
  guard, wrap HBDHooks:Init() in nil guard
This commit is contained in:
Xurkon
2026-03-15 18:33:41 -05:00
parent d5a0db953d
commit b8594c9782
3 changed files with 129 additions and 1 deletions
@@ -414,6 +414,44 @@ function QuestieOptions.tabs.advanced:Initialize()
end
end,
},
compat_header = {
type = "header",
order = 6,
name = l10n('3.3.5 Compatibility Settings'),
},
plugin_header = {
type = "header",
order = 7,
name = "|cFF5EBAF3Loaded Questie-X Plugins|r",
},
plugin_status_desc = {
type = "description",
order = 7.01,
fontSize = "medium",
name = function()
if not QuestiePluginAPI or not QuestiePluginAPI.registeredPlugins then
return "|cFF888888Plugin API not loaded.|r"
end
local output = ""
local hasPlugins = false
for pluginName, plugin in pairs(QuestiePluginAPI.registeredPlugins) do
hasPlugins = true
output = output .. "|cFF5EBAF3[Questie-" .. pluginName .. "]|r"
output = output .. " Quests: |cFFFFD700" .. tostring(plugin.stats.QUEST) .. "|r"
output = output .. " NPCs: |cFFFFD700" .. tostring(plugin.stats.NPC) .. "|r"
output = output .. " Objects: |cFFFFD700" .. tostring(plugin.stats.OBJECT) .. "|r"
output = output .. " Items: |cFFFFD700" .. tostring(plugin.stats.ITEM) .. "|r\n"
end
if not hasPlugins then
output = "|cFF888888No plugins loaded.|r"
end
return output
end,
},
},
}
end
+82
View File
@@ -372,3 +372,85 @@ function QuestieCompat.GetItemCooldown(itemID)
return GetItemCooldown(itemID)
end
end
--- C_QuestLog Shim
QuestieCompat.C_QuestLog = QuestieCompat.C_QuestLog or {}
function QuestieCompat.C_QuestLog.GetNumQuestLogEntries()
return GetNumQuestLogEntries()
end
function QuestieCompat.C_QuestLog.GetQuestLogTitle(questIndex)
return GetQuestLogTitle(questIndex)
end
function QuestieCompat.C_QuestLog.GetQuestLogSelection()
return GetQuestLogSelection()
end
function QuestieCompat.C_QuestLog.GetQuestInfo(questID)
return QuestieCompat.GetQuestInfo(questID)
end
function QuestieCompat.C_QuestLog.GetAllQuestIDs()
local questIDs = {}
local numEntries = GetNumQuestLogEntries()
for i = 1, numEntries do
local questTitle, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID = GetQuestLogTitle(i)
if questID and questID ~= 0 then
table.insert(questIDs, questID)
end
end
return questIDs
end
function QuestieCompat.C_QuestLog.GetQuestObjectives(questID)
local questIndex = GetQuestLogIndexByID(questID)
if not questIndex then return nil end
return QuestieCompat.GetQuestObjectives(questIndex)
end
function QuestieCompat.C_QuestLog.IsQuestFlaggedCompleted(questID)
return IsQuestFlaggedCompleted(questID)
end
function QuestieCompat.C_QuestLog.GetQuestPlayerQuestLink(questID)
return GetQuestLink(questID)
end
--- C_Map Shim
QuestieCompat.C_Map = QuestieCompat.C_Map or {}
function QuestieCompat.C_Map.GetPlayerMapPosition(uiMapID)
local x, y = GetPlayerMapPosition(uiMapID)
if x == 0 and y == 0 then
x, y = GetPlayerMapPosition("player")
end
return x, y
end
function QuestieCompat.C_Map.GetBestMapForUnit(unit)
if unit == "player" then
return GetCurrentMapAreaID()
end
return GetCurrentMapAreaID()
end
function QuestieCompat.C_Map.GetMapInfo(uiMapID)
return GetMapInfo(uiMapID)
end
--- GetTrackedAchievements Shim
QuestieCompat.GetTrackedAchievements = QuestieCompat.GetTrackedAchievements or function()
return {}
end
--- IsAchievementCompleted Shim
QuestieCompat.IsAchievementCompleted = QuestieCompat.IsAchievementCompleted or function(achievementID)
return GetAchievementNumCriteria(achievementID) > 0
end
--- LibUIDropDownMenu Shim
QuestieCompat.LibUIDropDownMenu = QuestieCompat.LibUIDropDownMenu or {}
QuestieCompat.LibUIDropDownMenu.UIDropDownMenu_Menu_NewSize = function()
end
+9 -1
View File
@@ -85,6 +85,8 @@ local AvailableQuests = QuestieLoader:ImportModule("AvailableQuests")
local SeasonOfDiscovery = QuestieLoader:ImportModule("SeasonOfDiscovery")
---@type QuestieLearner
local QuestieLearner = QuestieLoader:ImportModule("QuestieLearner")
---@type QuestieServer
local QuestieServer = QuestieLoader:ImportModule("QuestieServer")
--- COMPATIBILITY ---
local WOW_PROJECT_ID = QuestieCompat.WOW_PROJECT_ID
@@ -154,9 +156,15 @@ QuestieInit.Stages[1] = function() -- run as a coroutine
Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieInit:Stage1] Starting QuestieOptions.Initialize Thread.")
ThreadLib.ThreadSimple(QuestieOptions.Initialize, 0)
if QuestieServer and QuestieServer.Init then
QuestieServer:Init()
end
MinimapIcon:Init()
HBDHooks:Init()
if HBDHooks and HBDHooks.Init then
HBDHooks:Init()
end
Questie:SetIcons()