public static void LoadLootTemplates_Milling() { Log.outInfo(LogFilter.ServerLoading, "Loading milling loot templates..."); uint oldMSTime = Time.GetMSTime(); List<uint> lootIdSet; uint count = Milling.LoadAndCollectLootIds(out lootIdSet); // remove real entries and check existence loot var its = Global.ObjectMgr.GetItemTemplates(); foreach (var pair in its) { if (!pair.Value.GetFlags().HasAnyFlag(ItemFlags.IsMillable)) continue; if (lootIdSet.Contains(pair.Value.GetId())) lootIdSet.Remove(pair.Value.GetId()); } // output error for any still listed (not referenced from appropriate table) ids Milling.ReportUnusedIds(lootIdSet); if (count != 0) Log.outInfo(LogFilter.ServerLoading, "Loaded {0} milling loot templates in {1} ms", count, Time.GetMSTimeDiffToNow(oldMSTime)); else Log.outError(LogFilter.ServerLoading, "Loaded 0 milling loot templates. DB table `milling_loot_template` is empty"); }