ui: 添加 NeoForge 手动安装 Tab
feat: NeoForge 自动安装 Stage 1 fix: StdVersion 可能错误地包含了 "neoforge-" 前缀 fix: 自动安装选择 NeoForge 时自动生成的核心名称存在重复字符串
This commit is contained in:
@@ -1019,6 +1019,7 @@ Install:
|
|||||||
DownloadClient = 4
|
DownloadClient = 4
|
||||||
DownloadOptiFine = 5
|
DownloadOptiFine = 5
|
||||||
DownloadForge = 6
|
DownloadForge = 6
|
||||||
|
DownloadNeoForge = 13
|
||||||
DownloadFabric = 7
|
DownloadFabric = 7
|
||||||
DownloadLiteLoader = 8
|
DownloadLiteLoader = 8
|
||||||
DownloadMod = 10
|
DownloadMod = 10
|
||||||
|
|||||||
@@ -725,7 +725,7 @@
|
|||||||
|
|
||||||
Public Class DlNeoForgeVersionEntry
|
Public Class DlNeoForgeVersionEntry
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' 完整的版本名,如 “14.22.1.2478”。
|
''' 完整的版本名,如 “neoforge-20.4.30-beta”。
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Public Version As String
|
Public Version As String
|
||||||
''' <summary>
|
''' <summary>
|
||||||
@@ -753,7 +753,7 @@
|
|||||||
''' </summary>
|
''' </summary>
|
||||||
Public IsBeta As Boolean = False
|
Public IsBeta As Boolean = False
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' 标准的版本号
|
''' 标准的版本号,如 “20.4.30”。
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Public StdVersion As String
|
Public StdVersion As String
|
||||||
Public Structure DlNeoForgeListResult
|
Public Structure DlNeoForgeListResult
|
||||||
@@ -820,10 +820,10 @@
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' NeoForge 版本列表,主加载器。
|
''' NeoForge 版本列表,主加载器。
|
||||||
''' </summary>
|
''' </summary>
|
||||||
|
Public DlNeoForgeListLoader As New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("DlNeoForgeList Main", AddressOf DlNeoForgeVersionMain)
|
||||||
Public Sub DlNeoForgeVersionMain(Loader As LoaderTask(Of String, List(Of DlNeoForgeVersionEntry)))
|
Public Sub DlNeoForgeVersionMain(Loader As LoaderTask(Of String, List(Of DlNeoForgeVersionEntry)))
|
||||||
Dim DlNeoForgeVersionOfficialLoader As New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("DlNeoForgeVersion Official", AddressOf DlNeoForgeVersionOfficialMain)
|
Dim DlNeoForgeVersionOfficialLoader As New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("DlNeoForgeVersion Official", AddressOf DlNeoForgeVersionOfficialMain)
|
||||||
Dim DlNeoForgeVersionBmclapiLoader As New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("DlNeoForgeVersion Bmclapi", AddressOf DlNeoForgeVersionBmclapiMain)
|
Dim DlNeoForgeVersionBmclapiLoader As New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("DlNeoForgeVersion Bmclapi", AddressOf DlNeoForgeVersionBmclapiMain)
|
||||||
@@ -882,10 +882,10 @@
|
|||||||
Dim IsBeta As Boolean
|
Dim IsBeta As Boolean
|
||||||
Dim rawVersion As String = Token("rawVersion")
|
Dim rawVersion As String = Token("rawVersion")
|
||||||
If rawVersion.Contains("-beta") Then
|
If rawVersion.Contains("-beta") Then
|
||||||
StdVersion = Token("version").ToString().Replace("-beta", "")
|
StdVersion = Token("version").ToString().Replace("neoforge-", "").Replace("-beta", "")
|
||||||
IsBeta = True
|
IsBeta = True
|
||||||
Else
|
Else
|
||||||
StdVersion = Token("version").ToString()
|
StdVersion = Token("version").ToString().Replace("neoforge-", "")
|
||||||
IsBeta = False
|
IsBeta = False
|
||||||
End If
|
End If
|
||||||
Name = rawVersion
|
Name = rawVersion
|
||||||
|
|||||||
@@ -394,6 +394,7 @@ EndHint:
|
|||||||
Public FrmDownloadOptiFine As PageDownloadOptiFine
|
Public FrmDownloadOptiFine As PageDownloadOptiFine
|
||||||
Public FrmDownloadLiteLoader As PageDownloadLiteLoader
|
Public FrmDownloadLiteLoader As PageDownloadLiteLoader
|
||||||
Public FrmDownloadForge As PageDownloadForge
|
Public FrmDownloadForge As PageDownloadForge
|
||||||
|
Public FrmDownloadNeoForge As PageDownloadNeoForge
|
||||||
Public FrmDownloadFabric As PageDownloadFabric
|
Public FrmDownloadFabric As PageDownloadFabric
|
||||||
Public FrmDownloadMod As PageDownloadMod
|
Public FrmDownloadMod As PageDownloadMod
|
||||||
Public FrmDownloadPack As PageDownloadPack
|
Public FrmDownloadPack As PageDownloadPack
|
||||||
|
|||||||
@@ -1829,9 +1829,9 @@ Retry:
|
|||||||
'添加 Java Wrapper 作为主 Jar
|
'添加 Java Wrapper 作为主 Jar
|
||||||
Dim Arguments As String
|
Dim Arguments As String
|
||||||
If UseJavaWrapper Then
|
If UseJavaWrapper Then
|
||||||
Arguments = $"-Doolloo.jlw.tmpdir=""{GetJavaWrapperDir()}"" -cp ""{PathTemp}Cache\forge_installer.jar;{Target}"" -jar ""{ExtractJavaWrapper()}"" com.bangbang93.ForgeInstaller ""{McFolder}"
|
Arguments = $"-Doolloo.jlw.tmpdir=""{GetJavaWrapperDir()}"" -cp ""{PathTemp}Cache\neoforge_installer.jar;{Target}"" -jar ""{ExtractJavaWrapper()}"" com.bangbang93.ForgeInstaller ""{McFolder}"
|
||||||
Else
|
Else
|
||||||
Arguments = $"-cp ""{PathTemp}Cache\forge_installer.jar;{Target}"" com.bangbang93.ForgeInstaller ""{McFolder}"
|
Arguments = $"-cp ""{PathTemp}Cache\neoforge_installer.jar;{Target}"" com.bangbang93.ForgeInstaller ""{McFolder}"
|
||||||
End If
|
End If
|
||||||
If Java.VersionCode >= 9 Then Arguments = "--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED " & Arguments
|
If Java.VersionCode >= 9 Then Arguments = "--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED " & Arguments
|
||||||
'开始启动
|
'开始启动
|
||||||
@@ -1979,7 +1979,7 @@ Retry:
|
|||||||
Dim Id As String = Inherit & "-forge-" & Version
|
Dim Id As String = Inherit & "-forge-" & 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)
|
||||||
Dim VersionFolder As String = McFolder & "versions\" & Id & "\"
|
Dim VersionFolder As String = McFolder & "versions\" & Id & "\"
|
||||||
Dim DisplayName As String = "Forge " & Inherit & " - " & Version
|
Dim DisplayName As String = "NeoForge " & Inherit & " - " & Version
|
||||||
Dim Loaders As New List(Of LoaderBase)
|
Dim Loaders As New List(Of LoaderBase)
|
||||||
Dim LibVersionFolder As String = PathMcFolder & "versions\" & Id & "\" '作为 Lib 文件目标的版本文件夹
|
Dim LibVersionFolder As String = PathMcFolder & "versions\" & Id & "\" '作为 Lib 文件目标的版本文件夹
|
||||||
|
|
||||||
@@ -1987,7 +1987,7 @@ Retry:
|
|||||||
If DownloadInfo Is Nothing Then
|
If DownloadInfo Is Nothing Then
|
||||||
Loaders.Add(New LoaderTask(Of String, String)("获取 Mod 加载器详细信息",
|
Loaders.Add(New LoaderTask(Of String, String)("获取 Mod 加载器详细信息",
|
||||||
Sub(Task As LoaderTask(Of String, String))
|
Sub(Task As LoaderTask(Of String, String))
|
||||||
'获取 Forge 版本列表
|
'获取 NeoForge 版本列表
|
||||||
Dim NeoForgeLoader = New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("McDownloadNeoForgeLoader " & Inherit, AddressOf DlNeoForgeVersionMain)
|
Dim NeoForgeLoader = New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("McDownloadNeoForgeLoader " & Inherit, AddressOf DlNeoForgeVersionMain)
|
||||||
NeoForgeLoader.WaitForExit(Inherit)
|
NeoForgeLoader.WaitForExit(Inherit)
|
||||||
Task.Progress = 0.8
|
Task.Progress = 0.8
|
||||||
@@ -2001,7 +2001,7 @@ Retry:
|
|||||||
Throw New Exception("未能找到 NeoForge " & Inherit & "-" & Version & " 的详细信息!")
|
Throw New Exception("未能找到 NeoForge " & Inherit & "-" & Version & " 的详细信息!")
|
||||||
End Sub) With {.ProgressWeight = 3})
|
End Sub) With {.ProgressWeight = 3})
|
||||||
End If
|
End If
|
||||||
'下载 Forge 主文件
|
'下载 NeoForge 主文件
|
||||||
Loaders.Add(New LoaderTask(Of String, List(Of NetFile))("准备 Mod 加载器下载",
|
Loaders.Add(New LoaderTask(Of String, List(Of NetFile))("准备 Mod 加载器下载",
|
||||||
Sub(Task As LoaderTask(Of String, List(Of NetFile)))
|
Sub(Task As LoaderTask(Of String, List(Of NetFile)))
|
||||||
'启动依赖版本的下载
|
'启动依赖版本的下载
|
||||||
@@ -2011,8 +2011,8 @@ Retry:
|
|||||||
End If
|
End If
|
||||||
'添加主文件
|
'添加主文件
|
||||||
Dim Files As New List(Of NetFile) From {New NetFile({
|
Dim Files As New List(Of NetFile) From {New NetFile({
|
||||||
"https://bmclapi2.bangbang93.com/maven/net/minecraftforge/forge/" & Inherit & "-" & DownloadInfo.FileVersion & "/" & DownloadInfo.FileName,
|
"https://bmclapi2.bangbang93.com/maven/net/neoforged/neoforge/" & DownloadInfo.StdVersion & "/" & DownloadInfo.FileName,
|
||||||
"https://files.minecraftforge.net/maven/net/minecraftforge/forge/" & Inherit & "-" & DownloadInfo.FileVersion & "/" & DownloadInfo.FileName
|
"https://maven.neoforged.net/releases/net/neoforged/neoforge/" & DownloadInfo.StdVersion & "/" & DownloadInfo.FileName
|
||||||
}, InstallerAddress, New FileChecker(MinSize:=64 * 1024, Hash:=DownloadInfo.Hash))}
|
}, InstallerAddress, New FileChecker(MinSize:=64 * 1024, Hash:=DownloadInfo.Hash))}
|
||||||
Task.Output = Files
|
Task.Output = Files
|
||||||
End Sub) With {.ProgressWeight = 0.5, .Show = False})
|
End Sub) With {.ProgressWeight = 0.5, .Show = False})
|
||||||
@@ -2050,16 +2050,16 @@ Retry:
|
|||||||
Task.Progress = 0.8
|
Task.Progress = 0.8
|
||||||
'去除其中的原始 Forge 项
|
'去除其中的原始 Forge 项
|
||||||
For i = 0 To Libs.Count - 1
|
For i = 0 To Libs.Count - 1
|
||||||
If Libs(i).LocalPath.EndsWithF("forge-" & Inherit & "-" & Version & ".jar") OrElse
|
If Libs(i).LocalPath.EndsWithF("neoforge-" & Inherit & "-" & Version & ".jar") OrElse
|
||||||
Libs(i).LocalPath.EndsWithF("forge-" & Inherit & "-" & Version & "-client.jar") Then
|
Libs(i).LocalPath.EndsWithF("forge-" & Inherit & "-" & Version & "-client.jar") Then
|
||||||
Log("[Download] 已从待下载 Forge 支持库中移除:" & Libs(i).LocalPath, LogLevel.Debug)
|
Log("[Download] 已从待下载 NeoForge 支持库中移除:" & Libs(i).LocalPath, LogLevel.Debug)
|
||||||
Libs.RemoveAt(i)
|
Libs.RemoveAt(i)
|
||||||
Exit For
|
Exit For
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
Task.Output = McLibFixFromLibToken(Libs, PathMcFolder)
|
Task.Output = McLibFixFromLibToken(Libs, PathMcFolder)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Throw New Exception("获取新版 Forge 支持库列表失败", ex)
|
Throw New Exception("获取新版 NeoForge 支持库列表失败", ex)
|
||||||
Finally
|
Finally
|
||||||
'释放文件
|
'释放文件
|
||||||
If Installer IsNot Nothing Then Installer.Dispose()
|
If Installer IsNot Nothing Then Installer.Dispose()
|
||||||
@@ -2068,7 +2068,7 @@ Retry:
|
|||||||
Loaders.Add(New LoaderDownload("下载 Mod 加载器支持库文件", New List(Of NetFile)) With {.ProgressWeight = 12})
|
Loaders.Add(New LoaderDownload("下载 Mod 加载器支持库文件", New List(Of NetFile)) With {.ProgressWeight = 12})
|
||||||
Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)("获取 Mod 下载器支持库文件",
|
Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)("获取 Mod 下载器支持库文件",
|
||||||
Sub(Task As LoaderTask(Of List(Of NetFile), Boolean))
|
Sub(Task As LoaderTask(Of List(Of NetFile), Boolean))
|
||||||
#Region "Forge 文件"
|
#Region "NeoForge 文件"
|
||||||
If IsCustomFolder Then
|
If IsCustomFolder Then
|
||||||
For Each LibFile As McLibToken In Libs
|
For Each LibFile As McLibToken In Libs
|
||||||
Dim RealPath As String = LibFile.LocalPath.Replace(PathMcFolder, McFolder)
|
Dim RealPath As String = LibFile.LocalPath.Replace(PathMcFolder, McFolder)
|
||||||
@@ -2076,7 +2076,7 @@ Retry:
|
|||||||
Directory.CreateDirectory(IO.Path.GetDirectoryName(RealPath))
|
Directory.CreateDirectory(IO.Path.GetDirectoryName(RealPath))
|
||||||
CopyFile(LibFile.LocalPath, RealPath)
|
CopyFile(LibFile.LocalPath, RealPath)
|
||||||
End If
|
End If
|
||||||
If ModeDebug Then Log("[Download] 复制的 Forge 支持库文件:" & LibFile.LocalPath)
|
If ModeDebug Then Log("[Download] 复制的 NeoForge 支持库文件:" & LibFile.LocalPath)
|
||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
#End Region
|
#End Region
|
||||||
@@ -2086,7 +2086,7 @@ Retry:
|
|||||||
Dim TargetLoaders As List(Of LoaderBase) =
|
Dim TargetLoaders As List(Of LoaderBase) =
|
||||||
ClientDownloadLoader.GetLoaderList.Where(Function(l) l.Name = McDownloadClientLibName OrElse l.Name = McDownloadClientJsonName).
|
ClientDownloadLoader.GetLoaderList.Where(Function(l) l.Name = McDownloadClientLibName OrElse l.Name = McDownloadClientJsonName).
|
||||||
Where(Function(l) l.State <> LoadState.Finished).ToList
|
Where(Function(l) l.State <> LoadState.Finished).ToList
|
||||||
If TargetLoaders.Any Then Log("[Download] Forge 安装正在等待原版文件下载完成")
|
If TargetLoaders.Any Then Log("[Download] NeoForge 安装正在等待原版文件下载完成")
|
||||||
Do While TargetLoaders.Any AndAlso Not Task.IsAborted
|
Do While TargetLoaders.Any AndAlso Not Task.IsAborted
|
||||||
TargetLoaders = TargetLoaders.Where(Function(l) l.State <> LoadState.Finished).ToList
|
TargetLoaders = TargetLoaders.Where(Function(l) l.State <> LoadState.Finished).ToList
|
||||||
Thread.Sleep(50)
|
Thread.Sleep(50)
|
||||||
@@ -2110,7 +2110,7 @@ Retry:
|
|||||||
Sub(Task As LoaderTask(Of Boolean, Boolean))
|
Sub(Task As LoaderTask(Of Boolean, Boolean))
|
||||||
Dim Installer As ZipArchive = Nothing
|
Dim Installer As ZipArchive = Nothing
|
||||||
Try
|
Try
|
||||||
Log("[Download] 开始进行新版方式 Forge 安装:" & InstallerAddress)
|
Log("[Download] 开始进行新版方式 NeoForge 安装:" & InstallerAddress)
|
||||||
'记录当前文件夹列表(在新建目标文件夹之前)
|
'记录当前文件夹列表(在新建目标文件夹之前)
|
||||||
Dim OldList = New DirectoryInfo(McFolder & "versions\").EnumerateDirectories.
|
Dim OldList = New DirectoryInfo(McFolder & "versions\").EnumerateDirectories.
|
||||||
Select(Function(i) i.FullName).ToList()
|
Select(Function(i) i.FullName).ToList()
|
||||||
@@ -2123,23 +2123,23 @@ Retry:
|
|||||||
'释放 launcher_installer.json
|
'释放 launcher_installer.json
|
||||||
McFolderLauncherProfilesJsonCreate(McFolder)
|
McFolderLauncherProfilesJsonCreate(McFolder)
|
||||||
Task.Progress = 0.05
|
Task.Progress = 0.05
|
||||||
'运行 Forge 安装器
|
'运行 NeoForge 安装器
|
||||||
Dim UseJavaWrapper As Boolean = True
|
Dim UseJavaWrapper As Boolean = True
|
||||||
Retry:
|
Retry:
|
||||||
Try
|
Try
|
||||||
'释放 Forge 注入器
|
'释放 NeoForge 注入器
|
||||||
WriteFile(PathTemp & "Cache\forge_installer.jar", GetResources("ForgeInstaller"))
|
WriteFile(PathTemp & "Cache\neoforge_installer.jar", GetResources("ForgeInstaller"))
|
||||||
Task.Progress = 0.06
|
Task.Progress = 0.06
|
||||||
'运行注入器
|
'运行注入器
|
||||||
ForgeInjector(InstallerAddress, Task, McFolder, UseJavaWrapper)
|
ForgeInjector(InstallerAddress, Task, McFolder, UseJavaWrapper)
|
||||||
Task.Progress = 0.97
|
Task.Progress = 0.97
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
If UseJavaWrapper Then
|
If UseJavaWrapper Then
|
||||||
Log(ex, "使用 JavaWrapper 安装 Forge 失败,将不使用 JavaWrapper 并重试")
|
Log(ex, "使用 JavaWrapper 安装 NeoForge 失败,将不使用 JavaWrapper 并重试")
|
||||||
UseJavaWrapper = False
|
UseJavaWrapper = False
|
||||||
GoTo Retry
|
GoTo Retry
|
||||||
Else
|
Else
|
||||||
Throw New Exception("运行 Forge 安装器失败", ex)
|
Throw New Exception("运行 NeoForge 安装器失败", ex)
|
||||||
End If
|
End If
|
||||||
End Try
|
End Try
|
||||||
'拷贝新增的版本 Json
|
'拷贝新增的版本 Json
|
||||||
@@ -2147,7 +2147,7 @@ Retry:
|
|||||||
SkipWhile(Function(i) OldList.Contains(i.FullName)).ToList()
|
SkipWhile(Function(i) OldList.Contains(i.FullName)).ToList()
|
||||||
If DeltaList.Count > 1 Then
|
If DeltaList.Count > 1 Then
|
||||||
'它可能和 OptiFine 安装同时运行,导致增加的文件不止一个(这导致了 #151)
|
'它可能和 OptiFine 安装同时运行,导致增加的文件不止一个(这导致了 #151)
|
||||||
'也可能是因为 Forge 安装器的 Bug,生成了一个名字错误的文件夹,所以需要检查文件夹是否为空
|
'也可能是因为 NeoForge 安装器的 Bug,生成了一个名字错误的文件夹,所以需要检查文件夹是否为空
|
||||||
DeltaList = DeltaList.Where(Function(l) l.Name.Contains("forge") AndAlso l.EnumerateFiles.Any).ToList
|
DeltaList = DeltaList.Where(Function(l) l.Name.Contains("forge") AndAlso l.EnumerateFiles.Any).ToList
|
||||||
End If
|
End If
|
||||||
If DeltaList.Count = 1 Then '如果没有新增文件夹,那么预测的文件夹名就是正确的
|
If DeltaList.Count = 1 Then '如果没有新增文件夹,那么预测的文件夹名就是正确的
|
||||||
@@ -2157,19 +2157,19 @@ Retry:
|
|||||||
'新建 mods 文件夹
|
'新建 mods 文件夹
|
||||||
Directory.CreateDirectory(New McVersion(VersionFolder).GetPathIndie(True) & "mods\")
|
Directory.CreateDirectory(New McVersion(VersionFolder).GetPathIndie(True) & "mods\")
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Throw New Exception("安装新 Forge 版本失败", ex)
|
Throw New Exception("安装新 NeoForge 版本失败", ex)
|
||||||
Finally
|
Finally
|
||||||
'清理文件
|
'清理文件
|
||||||
Try
|
Try
|
||||||
If Installer IsNot Nothing Then Installer.Dispose()
|
If Installer IsNot Nothing Then Installer.Dispose()
|
||||||
If File.Exists(InstallerAddress) Then File.Delete(InstallerAddress)
|
If File.Exists(InstallerAddress) Then File.Delete(InstallerAddress)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Log(ex, "安装 Forge 清理文件时出错")
|
Log(ex, "安装 NeoForge 清理文件时出错")
|
||||||
End Try
|
End Try
|
||||||
End Try
|
End Try
|
||||||
End Sub) With {.ProgressWeight = 10})
|
End Sub) With {.ProgressWeight = 10})
|
||||||
Else
|
Else
|
||||||
Log("[Download] 检测为非新版 Forge:" & Version)
|
Log("[Download] 检测为非新版 NeoForge:" & Version)
|
||||||
Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)("安装 Mod 加载器(方式 B)",
|
Loaders.Add(New LoaderTask(Of List(Of NetFile), Boolean)("安装 Mod 加载器(方式 B)",
|
||||||
Sub(Task As LoaderTask(Of List(Of NetFile), Boolean))
|
Sub(Task As LoaderTask(Of List(Of NetFile), Boolean))
|
||||||
Dim Installer As ZipArchive = Nothing
|
Dim Installer As ZipArchive = Nothing
|
||||||
@@ -2211,7 +2211,7 @@ Retry:
|
|||||||
'新建 mods 文件夹
|
'新建 mods 文件夹
|
||||||
Directory.CreateDirectory(New McVersion(VersionFolder).GetPathIndie(True) & "mods\")
|
Directory.CreateDirectory(New McVersion(VersionFolder).GetPathIndie(True) & "mods\")
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Throw New Exception("非新版方式安装 Forge 失败", ex)
|
Throw New Exception("非新版方式安装 NeoForge 失败", ex)
|
||||||
Finally
|
Finally
|
||||||
Try
|
Try
|
||||||
'清理文件
|
'清理文件
|
||||||
@@ -2219,7 +2219,7 @@ Retry:
|
|||||||
If File.Exists(InstallerAddress) Then File.Delete(InstallerAddress)
|
If File.Exists(InstallerAddress) Then File.Delete(InstallerAddress)
|
||||||
If Directory.Exists(InstallerAddress & "_unrar\") Then DeleteDirectory(InstallerAddress & "_unrar\")
|
If Directory.Exists(InstallerAddress & "_unrar\") Then DeleteDirectory(InstallerAddress & "_unrar\")
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Log(ex, "非新版方式安装 Forge 清理文件时出错")
|
Log(ex, "非新版方式安装 NeoForge 清理文件时出错")
|
||||||
End Try
|
End Try
|
||||||
End Try
|
End Try
|
||||||
End Sub) With {.ProgressWeight = 1})
|
End Sub) With {.ProgressWeight = 1})
|
||||||
@@ -2257,7 +2257,7 @@ Retry:
|
|||||||
Public Function NeoForgeDownloadListItem(Entry As DlNeoForgeVersionEntry, OnClick As MyListItem.ClickEventHandler, IsSaveOnly As Boolean) As MyListItem
|
Public Function NeoForgeDownloadListItem(Entry As DlNeoForgeVersionEntry, OnClick As MyListItem.ClickEventHandler, IsSaveOnly As Boolean) As MyListItem
|
||||||
'建立控件
|
'建立控件
|
||||||
Dim NewItem As New MyListItem With {
|
Dim NewItem As New MyListItem With {
|
||||||
.Title = Entry.Version, .SnapsToDevicePixels = True, .Height = 42, .Type = MyListItem.CheckType.Clickable, .Tag = Entry,
|
.Title = If(Entry.IsBeta, Entry.StdVersion & "-beta", Entry.StdVersion), .SnapsToDevicePixels = True, .Height = 42, .Type = MyListItem.CheckType.Clickable, .Tag = Entry,
|
||||||
.Info = If(Entry.IsBeta, "测试版", "稳定版") &
|
.Info = If(Entry.IsBeta, "测试版", "稳定版") &
|
||||||
If(Entry.ReleaseTime = "",
|
If(Entry.ReleaseTime = "",
|
||||||
If(ModeDebug, "种类:" & Entry.Category & If(Entry.Branch Is Nothing, "", ",开发分支:" & Entry.Branch), ""),
|
If(ModeDebug, "种类:" & Entry.Category & If(Entry.Branch Is Nothing, "", ",开发分支:" & Entry.Branch), ""),
|
||||||
@@ -2296,7 +2296,7 @@ Retry:
|
|||||||
sender.Buttons = {BtnInfo}
|
sender.Buttons = {BtnInfo}
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub NeoForgeLog_Click(sender As Object, e As RoutedEventArgs)
|
Private Sub NeoForgeLog_Click(sender As Object, e As RoutedEventArgs)
|
||||||
Dim Version As DlForgeVersionEntry
|
Dim Version As DlNeoForgeVersionEntry
|
||||||
If sender.Tag IsNot Nothing Then
|
If sender.Tag IsNot Nothing Then
|
||||||
Version = sender.Tag
|
Version = sender.Tag
|
||||||
ElseIf sender.Parent.Tag IsNot Nothing Then
|
ElseIf sender.Parent.Tag IsNot Nothing Then
|
||||||
@@ -2304,10 +2304,10 @@ Retry:
|
|||||||
Else
|
Else
|
||||||
Version = sender.Parent.Parent.Tag
|
Version = sender.Parent.Parent.Tag
|
||||||
End If
|
End If
|
||||||
OpenWebsite("https://files.minecraftforge.net/maven/net/minecraftforge/forge/" & Version.Inherit & "-" & Version.Version & "/forge-" & Version.Inherit & "-" & Version.Version & "-changelog.txt")
|
OpenWebsite("https://maven.neoforged.net/releases/net/neoforged/neoforge/" & Version.StdVersion & "/" & Version.Version & "-changelog.txt")
|
||||||
End Sub
|
End Sub
|
||||||
Public Sub NeoForgeSave_Click(sender As Object, e As RoutedEventArgs)
|
Public Sub NeoForgeSave_Click(sender As Object, e As RoutedEventArgs)
|
||||||
Dim Version As DlForgeVersionEntry
|
Dim Version As DlNeoForgeVersionEntry
|
||||||
If sender.Tag IsNot Nothing Then
|
If sender.Tag IsNot Nothing Then
|
||||||
Version = sender.Tag
|
Version = sender.Tag
|
||||||
ElseIf sender.Parent.Tag IsNot Nothing Then
|
ElseIf sender.Parent.Tag IsNot Nothing Then
|
||||||
@@ -2315,7 +2315,7 @@ Retry:
|
|||||||
Else
|
Else
|
||||||
Version = sender.Parent.Parent.Tag
|
Version = sender.Parent.Parent.Tag
|
||||||
End If
|
End If
|
||||||
McDownloadForgeSave(Version)
|
McDownloadNeoForgeSave(Version)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|||||||
@@ -499,7 +499,7 @@
|
|||||||
Name += "-Forge_" & SelectedForge.Version
|
Name += "-Forge_" & SelectedForge.Version
|
||||||
End If
|
End If
|
||||||
If SelectedNeoForge IsNot Nothing Then
|
If SelectedNeoForge IsNot Nothing Then
|
||||||
Name += "-NeoForge_" & SelectedNeoForge.Version
|
Name += "-NeoForge_" & SelectedNeoForge.StdVersion & If(SelectedNeoForge.IsBeta, "-beta", "")
|
||||||
End If
|
End If
|
||||||
If SelectedLiteLoader IsNot Nothing Then
|
If SelectedLiteLoader IsNot Nothing Then
|
||||||
Name += "-LiteLoader"
|
Name += "-LiteLoader"
|
||||||
@@ -521,7 +521,7 @@
|
|||||||
Info += ", Forge " & SelectedForge.Version
|
Info += ", Forge " & SelectedForge.Version
|
||||||
End If
|
End If
|
||||||
If SelectedNeoForge IsNot Nothing Then
|
If SelectedNeoForge IsNot Nothing Then
|
||||||
Info += ", NeoForge " & SelectedNeoForge.Version
|
Info += ", NeoForge " & SelectedNeoForge.StdVersion & If(SelectedNeoForge.IsBeta, "-beta", "")
|
||||||
End If
|
End If
|
||||||
If SelectedLiteLoader IsNot Nothing Then
|
If SelectedLiteLoader IsNot Nothing Then
|
||||||
Info += ", LiteLoader"
|
Info += ", LiteLoader"
|
||||||
|
|||||||
@@ -43,6 +43,15 @@
|
|||||||
</x:Array>
|
</x:Array>
|
||||||
</local:MyListItem.Buttons>
|
</local:MyListItem.Buttons>
|
||||||
</local:MyListItem>
|
</local:MyListItem>
|
||||||
|
<local:MyListItem x:Name="ItemNeoForge" Visibility="Collapsed" Type="RadioBox" IsScaleAnimationEnabled="False" Tag="13" MinPaddingRight="35" Height="36" VerticalAlignment="Top" Title="NeoForge"
|
||||||
|
LogoScale="1.00" Logo="M402.807089 481.189274c-12.040221-6.991228-27.412326-2.797719-34.397415 9.242502l-8.387018 14.512529c-6.987135 12.035104-2.793626 27.40721 9.246595 34.392298 12.040221 6.985088 27.408233 2.797719 34.393321-9.242502l8.387018-14.511505C418.930301 503.437997 414.842193 488.063845 402.807089 481.189274L402.807089 481.189274zM495.028467 919.955342 59.056024 919.955342c-18.485003 0-33.532721 15.046694-33.532721 33.536814 0 18.485003 15.046694 33.532721 33.532721 33.532721l435.972443 0c18.49012 0 33.537837-15.046694 33.537837-33.532721C528.566304 935.002037 513.518586 919.955342 495.028467 919.955342L495.028467 919.955342zM997.431901 660.155295 590.482469 446.039729l90.935082-157.474544c18.485003-32.031531 7.520277-73.090669-24.51023-91.581812L395.496589 46.070268c-32.031531-18.485003-73.094762-7.520277-91.579765 24.51023L18.74697 564.277644c-18.485003 32.031531-7.521301 73.089645 24.51023 91.579765l261.408685 150.907988c32.031531 18.491143 73.095785 7.526417 91.581812-24.505114l91.364871-158.330028 392.332527 239.48128c16.016789 9.247618 36.544311 3.76372 45.792952-12.249999l83.838454-145.219429C1019.033895 689.930435 1013.444597 669.39882 997.431901 660.155295L997.431901 660.155295zM355.078041 719.704552c-9.242502 16.012695-29.774117 21.497617-45.787836 12.251022L105.923448 614.57826c-16.016789-9.242502-21.497617-29.774117-12.255115-45.787836l251.522524-435.653171c9.246595-16.012695 29.774117-21.497617 45.792952-12.249999l203.25624 117.376291c16.018835 9.242502 21.497617 29.774117 12.255115 45.786813L355.078041 719.704552 355.078041 719.704552zM884.568391 788.601712 522.115382 564.492538l33.537837-58.048067L934.875147 701.539844 884.568391 788.601712 884.568391 788.601712zM520.184403 277.8174c-12.040221-6.987135-27.41335-2.792603-34.399461 9.246595l-75.456552 130.702807c-6.985088 12.040221-2.791579 27.412326 9.242502 34.397415 12.040221 6.987135 27.412326 2.791579 34.397415-9.242502l75.458599-130.706901C536.307615 300.174594 532.219507 284.807604 520.184403 277.8174L520.184403 277.8174zM520.184403 277.8174">
|
||||||
|
<!--Logo="M789.504 912.896h-195.072a35.328 35.328 0 0 1-34.816-35.328v-77.312a39.936 39.936 0 0 0-40.448-39.936H481.28a40.448 40.448 0 0 0-40.448 39.936v77.312a34.816 34.816 0 0 1-34.816 35.328H204.8a41.984 41.984 0 0 1-40.448-42.496v-200.192a35.328 35.328 0 0 1 35.328-35.328h72.704a39.936 39.936 0 0 0 39.936-39.936v-37.888a39.936 39.936 0 0 0-39.936-40.448H199.68a35.328 35.328 0 0 1-35.328-35.328V287.744A41.984 41.984 0 0 1 204.8 245.76h176.64v-32.768a102.4 102.4 0 0 1 102.4-102.4h33.792a102.4 102.4 0 0 1 102.4 102.4v32.768h170.496a41.984 41.984 0 0 1 41.984 41.984V460.8h28.672a102.4 102.4 0 0 1 102.4 102.4v33.792a102.4 102.4 0 0 1-102.4 102.4h-28.672V870.4a41.984 41.984 0 0 1-43.008 42.496z m-159.744-70.144h131.584V665.6a34.304 34.304 0 0 1 34.816-34.816h64a31.744 31.744 0 0 0 31.744-31.744V563.2a31.744 31.744 0 0 0-31.744-31.744h-64a34.816 34.816 0 0 1-34.816-35.328V316.416h-177.152a35.328 35.328 0 0 1-35.328-35.328V212.992a31.744 31.744 0 0 0-31.744-31.744h-33.792a31.744 31.744 0 0 0-31.744 31.744v68.096a35.328 35.328 0 0 1-34.816 35.328H234.496v130.048h37.888a110.592 110.592 0 0 1 110.08 110.592v37.888a110.592 110.592 0 0 1-110.08 110.592h-37.888v137.216h136.192v-42.496a110.592 110.592 0 0 1 110.592-110.08h37.888a110.592 110.592 0 0 1 110.592 110.08z">-->
|
||||||
|
<local:MyListItem.Buttons>
|
||||||
|
<x:Array Type="{x:Type local:MyIconButton}">
|
||||||
|
<local:MyIconButton Tag="13" ToolTip="刷新" ToolTipService.Placement="Right" ToolTipService.InitialShowDelay="200" ToolTipService.VerticalOffset="-1" LogoScale="0.85" Click="Refresh" Logo="M875.52 148.48C783.36 56.32 655.36 0 512 0 291.84 0 107.52 138.24 30.72 332.8l122.88 46.08C204.8 230.4 348.16 128 512 128c107.52 0 199.68 40.96 271.36 112.64L640 384h384V0L875.52 148.48zM512 896c-107.52 0-199.68-40.96-271.36-112.64L384 640H0v384l148.48-148.48C240.64 967.68 368.64 1024 512 1024c220.16 0 404.48-138.24 481.28-332.8L870.4 645.12C819.2 793.6 675.84 896 512 896z" />
|
||||||
|
</x:Array>
|
||||||
|
</local:MyListItem.Buttons>
|
||||||
|
</local:MyListItem>
|
||||||
<local:MyListItem x:Name="ItemFabric" Visibility="Collapsed" Type="RadioBox" IsScaleAnimationEnabled="False" Tag="7" MinPaddingRight="35" Height="36" VerticalAlignment="Top" Title="Fabric"
|
<local:MyListItem x:Name="ItemFabric" Visibility="Collapsed" Type="RadioBox" IsScaleAnimationEnabled="False" Tag="7" MinPaddingRight="35" Height="36" VerticalAlignment="Top" Title="Fabric"
|
||||||
LogoScale="1.02" Logo="M826.453333 170.666667c-100.266667-93.866667-248.96-76.373333-256-75.52a31.786667 31.786667 0 0 0-26.666666 22.613333c-1.066667 3.2-101.546667 330.666667-426.666667 445.013333a29.013333 29.013333 0 0 0-7.893333 4.48l-1.493334 1.066667a29.44 29.44 0 0 0-5.973333 6.613333 31.786667 31.786667 0 0 0-3.626667 7.68 5.333333 5.333333 0 0 1 0 1.493334 30.506667 30.506667 0 0 0 0 8.96c7.466667 116.266667 45.013333 204.586667 112 262.826666a303.36 303.36 0 0 0 194.773334 71.466667h11.52a32.426667 32.426667 0 0 0 27.093333-19.626667 694.186667 694.186667 0 0 1 159.36-234.666666l-7.68 55.466666A31.786667 31.786667 0 0 0 621.44 768h4.48a32.213333 32.213333 0 0 0 31.786667-27.733333l15.573333-112.426667 112.426667 8.32a32 32 0 1 0 4.693333-64l-56.96-4.266667c36.48-25.813333 74.026667-50.56 112-75.52l51.626667-34.133333a31.573333 31.573333 0 0 0 14.08-24.746667c6.186667-115.2-21.76-203.306667-84.693334-262.826666zM620.8 573.013333l-1.706667 1.493334a219.093333 219.093333 0 0 0-87.466666-116.693334 222.933333 222.933333 0 0 0-95.146667-33.28c18.986667-21.333333 36.266667-42.666667 51.626667-64a198.613333 198.613333 0 0 1 202.453333 158.08c-20.053333 14.506667-39.893333 29.44-59.52 45.226667a29.866667 29.866667 0 0 0-10.24 9.173333z m-228.693333 292.266667a238.72 238.72 0 0 1-141.44-55.893333 213.333333 213.333333 0 0 1-34.986667-39.466667 123.946667 123.946667 0 0 0 44.373333 8.106667 168.533333 168.533333 0 0 0 69.12-16.213334 29.44 29.44 0 0 0 7.04-4.266666l106.666667-85.333334a32 32 0 1 0-39.893333-49.92L298.666667 704a78.293333 78.293333 0 0 1-69.546667 1.706667c-32.426667-17.066667-52.693333-61.653333-62.506667-93.44a709.333333 709.333333 0 0 0 202.453334-123.733334 187.52 187.52 0 0 1 128 21.333334 171.946667 171.946667 0 0 1 68.906666 109.653333 756.48 756.48 0 0 0-173.866666 245.76zM810.666667 438.4l-64 42.666667A256 256 0 0 0 529.706667 298.666667a810.666667 810.666667 0 0 0 69.12-140.8c37.973333-1.066667 123.946667 4.053333 183.68 59.946666 45.866667 42.666667 67.84 108.8 65.493333 195.84z">
|
LogoScale="1.02" Logo="M826.453333 170.666667c-100.266667-93.866667-248.96-76.373333-256-75.52a31.786667 31.786667 0 0 0-26.666666 22.613333c-1.066667 3.2-101.546667 330.666667-426.666667 445.013333a29.013333 29.013333 0 0 0-7.893333 4.48l-1.493334 1.066667a29.44 29.44 0 0 0-5.973333 6.613333 31.786667 31.786667 0 0 0-3.626667 7.68 5.333333 5.333333 0 0 1 0 1.493334 30.506667 30.506667 0 0 0 0 8.96c7.466667 116.266667 45.013333 204.586667 112 262.826666a303.36 303.36 0 0 0 194.773334 71.466667h11.52a32.426667 32.426667 0 0 0 27.093333-19.626667 694.186667 694.186667 0 0 1 159.36-234.666666l-7.68 55.466666A31.786667 31.786667 0 0 0 621.44 768h4.48a32.213333 32.213333 0 0 0 31.786667-27.733333l15.573333-112.426667 112.426667 8.32a32 32 0 1 0 4.693333-64l-56.96-4.266667c36.48-25.813333 74.026667-50.56 112-75.52l51.626667-34.133333a31.573333 31.573333 0 0 0 14.08-24.746667c6.186667-115.2-21.76-203.306667-84.693334-262.826666zM620.8 573.013333l-1.706667 1.493334a219.093333 219.093333 0 0 0-87.466666-116.693334 222.933333 222.933333 0 0 0-95.146667-33.28c18.986667-21.333333 36.266667-42.666667 51.626667-64a198.613333 198.613333 0 0 1 202.453333 158.08c-20.053333 14.506667-39.893333 29.44-59.52 45.226667a29.866667 29.866667 0 0 0-10.24 9.173333z m-228.693333 292.266667a238.72 238.72 0 0 1-141.44-55.893333 213.333333 213.333333 0 0 1-34.986667-39.466667 123.946667 123.946667 0 0 0 44.373333 8.106667 168.533333 168.533333 0 0 0 69.12-16.213334 29.44 29.44 0 0 0 7.04-4.266666l106.666667-85.333334a32 32 0 1 0-39.893333-49.92L298.666667 704a78.293333 78.293333 0 0 1-69.546667 1.706667c-32.426667-17.066667-52.693333-61.653333-62.506667-93.44a709.333333 709.333333 0 0 0 202.453334-123.733334 187.52 187.52 0 0 1 128 21.333334 171.946667 171.946667 0 0 1 68.906666 109.653333 756.48 756.48 0 0 0-173.866666 245.76zM810.666667 438.4l-64 42.666667A256 256 0 0 0 529.706667 298.666667a810.666667 810.666667 0 0 0 69.12-140.8c37.973333-1.066667 123.946667 4.053333 183.68 59.946666 45.866667 42.666667 67.84 108.8 65.493333 195.84z">
|
||||||
<local:MyListItem.Buttons>
|
<local:MyListItem.Buttons>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
''' <summary>
|
''' <summary>
|
||||||
''' 勾选事件改变页面。
|
''' 勾选事件改变页面。
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Private Sub PageCheck(sender As MyListItem, e As RouteEventArgs) Handles ItemInstall.Check, ItemClient.Check, ItemOptiFine.Check, ItemForge.Check, ItemLiteLoader.Check, ItemMod.Check, ItemFabric.Check, ItemPack.Check
|
Private Sub PageCheck(sender As MyListItem, e As RouteEventArgs) Handles ItemInstall.Check, ItemClient.Check, ItemOptiFine.Check, ItemForge.Check, ItemNeoForge.Check, ItemLiteLoader.Check, ItemMod.Check, ItemFabric.Check, ItemPack.Check
|
||||||
'尚未初始化控件属性时,sender.Tag 为 Nothing,会导致切换到页面 0
|
'尚未初始化控件属性时,sender.Tag 为 Nothing,会导致切换到页面 0
|
||||||
'若使用 IsLoaded,则会导致模拟点击不被执行(模拟点击切换页面时,控件的 IsLoaded 为 False)
|
'若使用 IsLoaded,则会导致模拟点击不被执行(模拟点击切换页面时,控件的 IsLoaded 为 False)
|
||||||
If sender.Tag IsNot Nothing Then PageChange(Val(sender.Tag))
|
If sender.Tag IsNot Nothing Then PageChange(Val(sender.Tag))
|
||||||
@@ -31,6 +31,9 @@
|
|||||||
Case FormMain.PageSubType.DownloadForge
|
Case FormMain.PageSubType.DownloadForge
|
||||||
If FrmDownloadForge Is Nothing Then FrmDownloadForge = New PageDownloadForge
|
If FrmDownloadForge Is Nothing Then FrmDownloadForge = New PageDownloadForge
|
||||||
Return FrmDownloadForge
|
Return FrmDownloadForge
|
||||||
|
Case FormMain.PageSubType.DownloadNeoForge
|
||||||
|
If FrmDownloadNeoForge Is Nothing Then FrmDownloadNeoForge = New PageDownloadNeoForge
|
||||||
|
Return FrmDownloadNeoForge
|
||||||
Case FormMain.PageSubType.DownloadLiteLoader
|
Case FormMain.PageSubType.DownloadLiteLoader
|
||||||
If FrmDownloadLiteLoader Is Nothing Then FrmDownloadLiteLoader = New PageDownloadLiteLoader
|
If FrmDownloadLiteLoader Is Nothing Then FrmDownloadLiteLoader = New PageDownloadLiteLoader
|
||||||
Return FrmDownloadLiteLoader
|
Return FrmDownloadLiteLoader
|
||||||
@@ -91,6 +94,7 @@
|
|||||||
DlClientListLoader.Start(IsForceRestart:=True)
|
DlClientListLoader.Start(IsForceRestart:=True)
|
||||||
DlOptiFineListLoader.Start(IsForceRestart:=True)
|
DlOptiFineListLoader.Start(IsForceRestart:=True)
|
||||||
DlForgeListLoader.Start(IsForceRestart:=True)
|
DlForgeListLoader.Start(IsForceRestart:=True)
|
||||||
|
DlNeoForgeListLoader.Start(IsForceRestart:=True)
|
||||||
DlLiteLoaderListLoader.Start(IsForceRestart:=True)
|
DlLiteLoaderListLoader.Start(IsForceRestart:=True)
|
||||||
DlFabricListLoader.Start(IsForceRestart:=True)
|
DlFabricListLoader.Start(IsForceRestart:=True)
|
||||||
DlFabricApiLoader.Start(IsForceRestart:=True)
|
DlFabricApiLoader.Start(IsForceRestart:=True)
|
||||||
@@ -117,6 +121,9 @@
|
|||||||
Case FormMain.PageSubType.DownloadForge
|
Case FormMain.PageSubType.DownloadForge
|
||||||
DlForgeListLoader.Start(IsForceRestart:=True)
|
DlForgeListLoader.Start(IsForceRestart:=True)
|
||||||
ItemForge.Checked = True
|
ItemForge.Checked = True
|
||||||
|
Case FormMain.PageSubType.DownloadNeoForge
|
||||||
|
DlNeoForgeListLoader.Start(IsForceRestart:=True)
|
||||||
|
ItemNeoForge.Checked = True
|
||||||
Case FormMain.PageSubType.DownloadLiteLoader
|
Case FormMain.PageSubType.DownloadLiteLoader
|
||||||
DlLiteLoaderListLoader.Start(IsForceRestart:=True)
|
DlLiteLoaderListLoader.Start(IsForceRestart:=True)
|
||||||
ItemLiteLoader.Checked = True
|
ItemLiteLoader.Checked = True
|
||||||
@@ -154,6 +161,7 @@
|
|||||||
ItemOptiFine.Visibility = Visibility.Visible
|
ItemOptiFine.Visibility = Visibility.Visible
|
||||||
ItemFabric.Visibility = Visibility.Visible
|
ItemFabric.Visibility = Visibility.Visible
|
||||||
ItemForge.Visibility = Visibility.Visible
|
ItemForge.Visibility = Visibility.Visible
|
||||||
|
ItemNeoForge.Visibility = Visibility.Visible
|
||||||
ItemLiteLoader.Visibility = Visibility.Visible
|
ItemLiteLoader.Visibility = Visibility.Visible
|
||||||
RunInThread(Sub()
|
RunInThread(Sub()
|
||||||
Thread.Sleep(20)
|
Thread.Sleep(20)
|
||||||
@@ -172,6 +180,7 @@
|
|||||||
ItemOptiFine.Visibility = Visibility.Collapsed
|
ItemOptiFine.Visibility = Visibility.Collapsed
|
||||||
ItemFabric.Visibility = Visibility.Collapsed
|
ItemFabric.Visibility = Visibility.Collapsed
|
||||||
ItemForge.Visibility = Visibility.Collapsed
|
ItemForge.Visibility = Visibility.Collapsed
|
||||||
|
ItemNeoForge.Visibility = Visibility.Collapsed
|
||||||
ItemLiteLoader.Visibility = Visibility.Collapsed
|
ItemLiteLoader.Visibility = Visibility.Collapsed
|
||||||
RunInThread(Sub()
|
RunInThread(Sub()
|
||||||
Thread.Sleep(20)
|
Thread.Sleep(20)
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<local:MyPageRight
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:local="clr-namespace:PCL" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
mc:Ignorable="d" x:Class="PageDownloadNeoForge"
|
||||||
|
PanScroll="{Binding ElementName=PanBack}">
|
||||||
|
<local:MyScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" x:Name="PanBack">
|
||||||
|
<StackPanel Orientation="Vertical" Margin="5">
|
||||||
|
<local:MyCard Margin="20,20,20,0" Grid.IsSharedSizeScope="True" Title="NeoForge 简介" x:Name="CardTip">
|
||||||
|
<StackPanel Margin="25,40,15,20">
|
||||||
|
<TextBlock Margin="0,0,0,11" Text="NeoForge 是新版 Minecraft 下的 Mod 加载器,你需要先安装它才能安装各种 NeoForge 模组。
本页面提供 NeoForge 安装器下载,在下载后你需要手动打开安装器进行安装。" TextWrapping="Wrap" />
|
||||||
|
<Grid Height="35">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="Auto" SharedSizeGroup="Button" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<local:MyButton x:Name="BtnWeb" Grid.Column="0" MinWidth="140" Text="打开官网" Padding="13,0" Margin="0,0,20,0" HorizontalAlignment="Left" ColorType="Highlight" />
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
</local:MyCard>
|
||||||
|
<local:MyCard x:Name="CardVersions" Margin="20,15,20,20" Title="版本列表">
|
||||||
|
<StackPanel x:Name="PanVersions" Margin="20,40,18,20" />
|
||||||
|
</local:MyCard>
|
||||||
|
<local:MyCard HorizontalAlignment="Center" SnapsToDevicePixels="True" x:Name="PanLoad" UseAnimation="False" Margin="40,50">
|
||||||
|
<local:MyLoading Text="正在获取 NeoForge 列表" Margin="20,20,20,17" x:Name="Load" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||||
|
</local:MyCard>
|
||||||
|
</StackPanel>
|
||||||
|
</local:MyScrollViewer>
|
||||||
|
</local:MyPageRight>
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
Public Class PageDownloadNeoForge
|
||||||
|
|
||||||
|
Private Sub LoaderInit() Handles Me.Initialized
|
||||||
|
PageLoaderInit(Load, PanLoad, CardVersions, CardTip, DlNeoForgeListLoader, AddressOf Load_OnFinish)
|
||||||
|
End Sub
|
||||||
|
Private Sub Init() Handles Me.Loaded
|
||||||
|
PanBack.ScrollToHome()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub Load_OnFinish()
|
||||||
|
'结果数据化
|
||||||
|
Try
|
||||||
|
Dim Versions As List(Of DlNeoForgeVersionEntry) = DlNeoForgeListLoader.Output
|
||||||
|
PanVersions.Children.Clear()
|
||||||
|
For Each Version In Versions
|
||||||
|
PanVersions.Children.Add(NeoForgeDownloadListItem(Version, AddressOf NeoForge_Selected, True))
|
||||||
|
Next
|
||||||
|
CardVersions.Title = "版本列表 (" & Versions.Count & ")"
|
||||||
|
Catch ex As Exception
|
||||||
|
Log(ex, "可视化 NeoForge 版本列表出错", LogLevel.Feedback)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub NeoForge_Selected(sender As MyListItem, e As EventArgs)
|
||||||
|
McDownloadNeoForgeSave(sender.Tag)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub BtnWeb_Click(sender As Object, e As EventArgs) Handles BtnWeb.Click
|
||||||
|
OpenWebsite("https://neoforged.net/")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
End Class
|
||||||
@@ -185,9 +185,6 @@
|
|||||||
<Compile Include="Controls\MyIconTextButton.xaml.vb">
|
<Compile Include="Controls\MyIconTextButton.xaml.vb">
|
||||||
<DependentUpon>MyIconTextButton.xaml</DependentUpon>
|
<DependentUpon>MyIconTextButton.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Compile Include="Modules\Minecraft\ModComp.vb" />
|
<Compile Include="Modules\Minecraft\ModComp.vb" />
|
||||||
<Compile Include="Modules\Minecraft\ModJava.vb" />
|
<Compile Include="Modules\Minecraft\ModJava.vb" />
|
||||||
<Compile Include="Modules\Minecraft\ModMod.vb" />
|
<Compile Include="Modules\Minecraft\ModMod.vb" />
|
||||||
@@ -232,6 +229,9 @@
|
|||||||
<Compile Include="Modules\Minecraft\MyCompItem.xaml.vb">
|
<Compile Include="Modules\Minecraft\MyCompItem.xaml.vb">
|
||||||
<DependentUpon>MyCompItem.xaml</DependentUpon>
|
<DependentUpon>MyCompItem.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Pages\PageDownload\PageDownloadNeoForge.xaml.vb">
|
||||||
|
<DependentUpon>PageDownloadNeoForge.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Pages\PageDownload\PageDownloadMod.xaml.vb">
|
<Compile Include="Pages\PageDownload\PageDownloadMod.xaml.vb">
|
||||||
<DependentUpon>PageDownloadMod.xaml</DependentUpon>
|
<DependentUpon>PageDownloadMod.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -469,7 +469,6 @@
|
|||||||
<DependentUpon>FormMain.xaml</DependentUpon>
|
<DependentUpon>FormMain.xaml</DependentUpon>
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
||||||
<Page Include="Modules\Minecraft\MyLocalModItem.xaml">
|
<Page Include="Modules\Minecraft\MyLocalModItem.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
@@ -478,6 +477,10 @@
|
|||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="Pages\PageDownload\PageDownloadNeoForge.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
<Page Include="Pages\PageDownload\PageDownloadMod.xaml">
|
<Page Include="Pages\PageDownload\PageDownloadMod.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
@@ -921,7 +924,6 @@
|
|||||||
<Resource Include="Images\Heads\MCBBS.png" />
|
<Resource Include="Images\Heads\MCBBS.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||||
|
|||||||
Reference in New Issue
Block a user