fix: Icon 显示及其导致的崩溃问题

fix: 1.20.1 NeoForge 下载链接拼接错误
fix: 自动安装界面选择 NeoForge 后使用了 rawVersion 作为版本号
This commit is contained in:
Pigeon0v0
2024-06-16 14:41:16 +08:00
parent 030c49829d
commit 66182f2cd0
8 changed files with 41 additions and 28 deletions
@@ -771,7 +771,7 @@
Public Value As JObject
End Structure
''' <summary>
''' 是否为新版 Forge。(即为 Minecraft 1.13+)
''' 是否为新版 NeoForge。(即为 Minecraft 1.13+)
''' </summary>
Public ReadOnly Property IsNewType As Boolean
Get
@@ -804,21 +804,17 @@
''' </summary>
Public ReadOnly Property FileName As String
Get
Return "neoforge-" & StdVersion & If(IsBeta, "-beta", "") & "-" & "installer" & "." & "jar"
If StdVersion.StartsWith("47.") Then 'NeoForge 1.20.1 的版本命名有些特殊...
Return "forge-" & Inherit & "-" & StdVersion & If(IsBeta, "-beta", "") & "-" & "installer" & "." & "jar"
Else
Return "neoforge-" & StdVersion & If(IsBeta, "-beta", "") & "-" & "installer" & "." & "jar"
End If
End Get
End Property
''' <summary>
''' 文件扩展名。
''' </summary>
Public ReadOnly Property FileSuffix As String
Get
If Category = "installer" Then
Return "jar"
Else
Return "jar"
End If
End Get
End Property
Public FileSuffix As String = "jar"
End Class
''' <summary>
''' NeoForge 版本列表,主加载器。
@@ -882,10 +878,10 @@
Dim IsBeta As Boolean
Dim rawVersion As String = Token("rawVersion")
If rawVersion.Contains("-beta") Then
StdVersion = Token("version").ToString().Replace("neoforge-", "").Replace("-beta", "")
StdVersion = Token("version").ToString().Replace("neoforge-", "").Replace("-beta", "").Replace("1.20.1-", "")
IsBeta = True
Else
StdVersion = Token("version").ToString().Replace("neoforge-", "")
StdVersion = Token("version").ToString().Replace("neoforge-", "").Replace("1.20.1-", "")
IsBeta = False
End If
Name = rawVersion
@@ -736,12 +736,12 @@ Recheck:
If Version.ForgeVersion Is Nothing Then Version.ForgeVersion = RegexSeek(RealJson, "(?<=net\.minecraftforge:minecraftforge:)[0-9\.]+")
If Version.ForgeVersion Is Nothing Then Version.ForgeVersion = If(RegexSeek(RealJson, "(?<=net\.minecraftforge:fmlloader:[0-9\.]+-)[0-9\.]+"), "未知版本")
Version.HasForge = True
ElseIf RealJson.Contains("neoforge") Then
State = McVersionState.NeoForge
Dim JsonStr1() As String = RealJson.Replace(" ", "").Split("""--fml.neoForgeVersion""," & vbCrLf & """") '这里的实现比较抽象,正则我写不会
ElseIf RealJson.Contains("neoforge") Then '1.20.1 NeoForge Json 内信息不同,为了方便直接截断 orgeVersion;这里的实现比较抽象,正则我写不会
State = McVersionState.NeoForge '1.20.1 Json 标识:"--fml.forgeVersion" 1.20.1 以上 Json 标识:"--fml.neoForgeVersion"
Dim JsonStr1() As String = RealJson.Replace(" ", "").Split("orgeVersion""," & vbCrLf & """")
Dim JsonStr2() As String = JsonStr1(1).Split("""")
Version.NeoForgeVersion = JsonStr2(0)
If Version.NeoForgeVersion Is Nothing Then Version.NeoForgeVersion = RegexSeek(RealJson, "(?<=""--fml.neoForgeVersion"",)[0-9\.]+")
If Version.NeoForgeVersion Is Nothing Then Version.NeoForgeVersion = RegexSeek(RealJson, "(?<=orgeVersion"",)[0-9\.]+")
If Version.NeoForgeVersion Is Nothing Then Version.NeoForgeVersion = If(RegexSeek(RealJson, "(?<=net\.minecraftforge:fmlloader:[0-9\.]+-)[0-9\.]+"), "未知版本")
Version.HasNeoForge = True
End If