'获取所有条目:WikiEntry.All ''' ''' MC 百科条目。 ''' Public Class WikiEntry '属性 ''' ''' 在 MC 百科中的对应 ID。 ''' Public Id As Integer ''' ''' 中文译名。空字符串代表没有翻译。 ''' Public ChineseName As String = "" ''' ''' CurseForge Slug(例如 advanced-solar-panels)。 ''' Public CurseForgeSlug As String = Nothing ''' ''' Modrinth Slug(例如 advanced-solar-panels)。 ''' Public ModrinthSlug As String = Nothing ''' ''' MC 百科的浏览量逆序排行,1 代表浏览量最低。 ''' Public Popularity As Integer Public Overrides Function ToString() As String Return If(CurseForgeSlug, "") & "&" & If(ModrinthSlug, "") & "|" & Id & "|" & ChineseName & ", Rank " & Popularity End Function '读取 ''' ''' 内置数据库中的所有 MC 百科条目。 ''' Public Shared ReadOnly Property All As List(Of WikiEntry) Get Static Cache As List(Of WikiEntry) = Nothing If Cache IsNot Nothing Then Return Cache '实际加载 Cache = New List(Of WikiEntry) Dim i As Integer = 0 Dim DataLines As List(Of String) = DirectCast(My.Resources.ResourceManager.GetObject("ModData"), String).SplitLines().ToList() Dim Ranks = DataLines.Last.Split("|") DataLines.RemoveAt(DataLines.Count - 1) For Each Line In DataLines i += 1 If Line = "" Then Continue For For Each EntryData As String In Line.Split("¨") Dim Entry = New WikiEntry Dim Splited = EntryData.Split("|") If Splited(0).StartsWithF("@") Then Entry.CurseForgeSlug = Nothing Entry.ModrinthSlug = Splited(0).Replace("@", "") ElseIf Splited(0).EndsWithF("@") Then Entry.CurseForgeSlug = Splited(0).TrimEnd("@") Entry.ModrinthSlug = Entry.CurseForgeSlug ElseIf Splited(0).Contains("@") Then Entry.CurseForgeSlug = Splited(0).Split("@")(0) Entry.ModrinthSlug = Splited(0).Split("@")(1) Else Entry.CurseForgeSlug = Splited(0) Entry.ModrinthSlug = Nothing End If Entry.Id = i Entry.Popularity = Val(Ranks(i - 1)) If Splited.Count >= 2 Then Entry.ChineseName = Splited.Last If Entry.ChineseName.Contains("*") Then '处理 * Entry.ChineseName = Entry.ChineseName.Replace("*", $" ({If(Entry.CurseForgeSlug, Entry.ModrinthSlug).Replace("-", " ").Capitalize})") End If End If Cache.Add(Entry) Next Next Return Cache End Get End Property End Class