| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- '获取所有条目:WikiEntry.All
- ''' <summary>
- ''' MC 百科条目。
- ''' </summary>
- Public Class WikiEntry
- '属性
- ''' <summary>
- ''' 在 MC 百科中的对应 ID。
- ''' </summary>
- Public Id As Integer
- ''' <summary>
- ''' 中文译名。空字符串代表没有翻译。
- ''' </summary>
- Public ChineseName As String = ""
- ''' <summary>
- ''' CurseForge Slug(例如 advanced-solar-panels)。
- ''' </summary>
- Public CurseForgeSlug As String = Nothing
- ''' <summary>
- ''' Modrinth Slug(例如 advanced-solar-panels)。
- ''' </summary>
- Public ModrinthSlug As String = Nothing
- ''' <summary>
- ''' MC 百科的浏览量逆序排行,1 代表浏览量最低。
- ''' </summary>
- Public Popularity As Integer
- Public Overrides Function ToString() As String
- Return If(CurseForgeSlug, "") & "&" & If(ModrinthSlug, "") & "|" & Id & "|" & ChineseName & ", Rank " & Popularity
- End Function
- '读取
- ''' <summary>
- ''' 内置数据库中的所有 MC 百科条目。
- ''' </summary>
- 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
|