feat: NeoForge 整合包安装
fix: 部分情况下安装 NeoForge 会失败(DownloadInfo 为空)
This commit is contained in:
@@ -183,6 +183,7 @@ Retry:
|
|||||||
|
|
||||||
'获取 Mod API 版本信息
|
'获取 Mod API 版本信息
|
||||||
Dim ForgeVersion As String = Nothing
|
Dim ForgeVersion As String = Nothing
|
||||||
|
Dim NeoForgeVersion As String = Nothing
|
||||||
Dim FabricVersion As String = Nothing
|
Dim FabricVersion As String = Nothing
|
||||||
For Each Entry In If(Json("minecraft")("modLoaders"), {})
|
For Each Entry In If(Json("minecraft")("modLoaders"), {})
|
||||||
Dim Id As String = If(Entry("id"), "").ToString.ToLower
|
Dim Id As String = If(Entry("id"), "").ToString.ToLower
|
||||||
@@ -199,6 +200,19 @@ Retry:
|
|||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Log(ex, "读取整合包 Forge 版本失败:" & Id)
|
Log(ex, "读取整合包 Forge 版本失败:" & Id)
|
||||||
End Try
|
End Try
|
||||||
|
ElseIf Id.StartsWithF("neoforge-") Then
|
||||||
|
'NeoForge 指定
|
||||||
|
If Id.Contains("recommended") Then
|
||||||
|
Log("[ModPack] 该整合包版本过老,已不支持进行安装!", LogLevel.Hint)
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
Try
|
||||||
|
Log("[ModPack] 整合包 NeoForge 版本:" & Id)
|
||||||
|
NeoForgeVersion = Id.Split("-")(1)
|
||||||
|
Exit For
|
||||||
|
Catch ex As Exception
|
||||||
|
Log(ex, "读取整合包 Forge 版本失败:" & Id)
|
||||||
|
End Try
|
||||||
ElseIf Id.StartsWithF("fabric-") Then
|
ElseIf Id.StartsWithF("fabric-") Then
|
||||||
'Fabric 指定
|
'Fabric 指定
|
||||||
Try
|
Try
|
||||||
@@ -301,6 +315,7 @@ Retry:
|
|||||||
.TargetVersionFolder = $"{PathMcFolder}versions\{VersionName}\",
|
.TargetVersionFolder = $"{PathMcFolder}versions\{VersionName}\",
|
||||||
.MinecraftName = Json("minecraft")("version").ToString,
|
.MinecraftName = Json("minecraft")("version").ToString,
|
||||||
.ForgeVersion = ForgeVersion,
|
.ForgeVersion = ForgeVersion,
|
||||||
|
.NeoForgeVersion = NeoForgeVersion,
|
||||||
.FabricVersion = FabricVersion
|
.FabricVersion = FabricVersion
|
||||||
}
|
}
|
||||||
Dim MergeLoaders As List(Of LoaderBase) = McInstallLoader(Request, True)
|
Dim MergeLoaders As List(Of LoaderBase) = McInstallLoader(Request, True)
|
||||||
@@ -368,6 +383,7 @@ Retry:
|
|||||||
'获取 Mod API 版本信息
|
'获取 Mod API 版本信息
|
||||||
Dim MinecraftVersion As String = Nothing
|
Dim MinecraftVersion As String = Nothing
|
||||||
Dim ForgeVersion As String = Nothing
|
Dim ForgeVersion As String = Nothing
|
||||||
|
Dim NeoForgeVersion As String = Nothing
|
||||||
Dim FabricVersion As String = Nothing
|
Dim FabricVersion As String = Nothing
|
||||||
For Each Entry As JProperty In If(Json("dependencies"), {})
|
For Each Entry As JProperty In If(Json("dependencies"), {})
|
||||||
Select Case Entry.Name.ToLower
|
Select Case Entry.Name.ToLower
|
||||||
@@ -376,6 +392,9 @@ Retry:
|
|||||||
Case "forge" 'eg. 14.23.5.2859 / 1.19-41.1.0
|
Case "forge" 'eg. 14.23.5.2859 / 1.19-41.1.0
|
||||||
ForgeVersion = Entry.Value.ToString
|
ForgeVersion = Entry.Value.ToString
|
||||||
Log("[ModPack] 整合包 Forge 版本:" & ForgeVersion)
|
Log("[ModPack] 整合包 Forge 版本:" & ForgeVersion)
|
||||||
|
Case "neoforge" 'eg. 20.6.98-beta
|
||||||
|
NeoForgeVersion = Entry.Value.ToString
|
||||||
|
Log("[ModPack] 整合包 NeoForge 版本:" & NeoForgeVersion)
|
||||||
Case "fabric-loader" 'eg. 0.14.14
|
Case "fabric-loader" 'eg. 0.14.14
|
||||||
FabricVersion = Entry.Value.ToString
|
FabricVersion = Entry.Value.ToString
|
||||||
Log("[ModPack] 整合包 Fabric 版本:" & FabricVersion)
|
Log("[ModPack] 整合包 Fabric 版本:" & FabricVersion)
|
||||||
@@ -447,6 +466,7 @@ Retry:
|
|||||||
.TargetVersionFolder = $"{PathMcFolder}versions\{VersionName}\",
|
.TargetVersionFolder = $"{PathMcFolder}versions\{VersionName}\",
|
||||||
.MinecraftName = MinecraftVersion,
|
.MinecraftName = MinecraftVersion,
|
||||||
.ForgeVersion = ForgeVersion,
|
.ForgeVersion = ForgeVersion,
|
||||||
|
.NeoForgeVersion = NeoForgeVersion,
|
||||||
.FabricVersion = FabricVersion
|
.FabricVersion = FabricVersion
|
||||||
}
|
}
|
||||||
Dim MergeLoaders As List(Of LoaderBase) = McInstallLoader(Request, True)
|
Dim MergeLoaders As List(Of LoaderBase) = McInstallLoader(Request, True)
|
||||||
@@ -676,6 +696,8 @@ Retry:
|
|||||||
Request.MinecraftName = Component("version")
|
Request.MinecraftName = Component("version")
|
||||||
Case "net.minecraftforge"
|
Case "net.minecraftforge"
|
||||||
Request.ForgeVersion = Component("version")
|
Request.ForgeVersion = Component("version")
|
||||||
|
Case "net.neoforged"
|
||||||
|
Request.NeoForgeVersion = Component("version")
|
||||||
Case "net.fabricmc.fabric-loader"
|
Case "net.fabricmc.fabric-loader"
|
||||||
Request.FabricVersion = Component("version")
|
Request.FabricVersion = Component("version")
|
||||||
Case "org.quiltmc.quilt-loader" 'eg. 1.0.0
|
Case "org.quiltmc.quilt-loader" 'eg. 1.0.0
|
||||||
@@ -772,6 +794,7 @@ Retry:
|
|||||||
.MinecraftName = Addons("game"),
|
.MinecraftName = Addons("game"),
|
||||||
.OptiFineVersion = If(Addons.ContainsKey("optifine"), Addons("optifine"), Nothing),
|
.OptiFineVersion = If(Addons.ContainsKey("optifine"), Addons("optifine"), Nothing),
|
||||||
.ForgeVersion = If(Addons.ContainsKey("forge"), Addons("forge"), Nothing),
|
.ForgeVersion = If(Addons.ContainsKey("forge"), Addons("forge"), Nothing),
|
||||||
|
.NeoForgeVersion = If(Addons.ContainsKey("neoforge"), Addons("neoforge"), Nothing),
|
||||||
.FabricVersion = If(Addons.ContainsKey("fabric"), Addons("fabric"), Nothing)
|
.FabricVersion = If(Addons.ContainsKey("fabric"), Addons("fabric"), Nothing)
|
||||||
}
|
}
|
||||||
Dim MergeLoaders As List(Of LoaderBase) = McInstallLoader(Request, True)
|
Dim MergeLoaders As List(Of LoaderBase) = McInstallLoader(Request, True)
|
||||||
|
|||||||
@@ -1973,11 +1973,27 @@ Retry:
|
|||||||
''' <summary>
|
''' <summary>
|
||||||
''' 获取下载某个 NeoForge 版本的加载器列表。
|
''' 获取下载某个 NeoForge 版本的加载器列表。
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Private Function McDownloadNeoForgeLoader(Version As String, Inherit As String, Optional DownloadInfo As DlNeoForgeVersionEntry = Nothing, Optional McFolder As String = Nothing, Optional ClientDownloadLoader As LoaderCombo(Of String) = Nothing, Optional ClientFolder As String = Nothing, Optional FixLibrary As Boolean = True) As List(Of LoaderBase)
|
Private Function McDownloadNeoForgeLoader(Version As String, Inherit As String, Optional DownloadRawInfo As DlNeoForgeVersionEntry = Nothing, Optional McFolder As String = Nothing, Optional ClientDownloadLoader As LoaderCombo(Of String) = Nothing, Optional ClientFolder As String = Nothing, Optional FixLibrary As Boolean = True) As List(Of LoaderBase)
|
||||||
|
|
||||||
'参数初始化
|
'参数初始化
|
||||||
|
Dim DownloadInfo As New DlNeoForgeVersionEntry
|
||||||
McFolder = If(McFolder, PathMcFolder)
|
McFolder = If(McFolder, PathMcFolder)
|
||||||
|
If DownloadRawInfo Is Nothing Then '兜底,有的时候 DownloadInfo 可能是空的
|
||||||
|
If Version.Contains("-beta") Then
|
||||||
|
DownloadInfo.Version = Version
|
||||||
|
Version = Version.Replace("neoforge-", "").Replace("-beta", "").Replace("1.20.1-", "")
|
||||||
|
DownloadInfo.StdVersion = Version
|
||||||
|
DownloadInfo.IsBeta = True
|
||||||
|
Else
|
||||||
|
DownloadInfo.Version = Version
|
||||||
|
Version = Version.Replace("neoforge-", "").Replace("1.20.1-", "")
|
||||||
|
DownloadInfo.StdVersion = Version
|
||||||
|
DownloadInfo.IsBeta = False
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
DownloadInfo = DownloadRawInfo
|
||||||
Version = DownloadInfo.StdVersion
|
Version = DownloadInfo.StdVersion
|
||||||
|
End If
|
||||||
Dim IsCustomFolder As Boolean = McFolder <> PathMcFolder
|
Dim IsCustomFolder As Boolean = McFolder <> PathMcFolder
|
||||||
Dim Id As String = DownloadInfo.Version
|
Dim Id As String = DownloadInfo.Version
|
||||||
Dim InstallerAddress As String = PathTemp & "Cache\Code\NeoForgeInstall-" & Version & "_" & RandomInteger(0, 100000)
|
Dim InstallerAddress As String = PathTemp & "Cache\Code\NeoForgeInstall-" & Version & "_" & RandomInteger(0, 100000)
|
||||||
|
|||||||
Reference in New Issue
Block a user