This commit is contained in:
龙腾猫跃
2023-01-27 01:11:26 +08:00
parent 48214557da
commit c2b282c8db
5 changed files with 23 additions and 19 deletions
+5 -1
View File
@@ -10,7 +10,7 @@ Public Class FormMain
Dim FeatureList As New List(Of KeyValuePair(Of Integer, String)) Dim FeatureList As New List(Of KeyValuePair(Of Integer, String))
'统计更新日志条目 '统计更新日志条目
#If BETA Then #If BETA Then
If LastVersion < 276 Then 'Release 2.4.6 If LastVersion < 276 Then 'Release 2.4.7
FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "增加 在游戏启动前执行命令 设置")) FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "增加 在游戏启动前执行命令 设置"))
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "在百宝箱添加了清理 MC 日志、崩溃报告的按钮")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "在百宝箱添加了清理 MC 日志、崩溃报告的按钮"))
FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化界面动画,修改部分配色")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化界面动画,修改部分配色"))
@@ -117,6 +117,10 @@ Public Class FormMain
'3:BUG+ IMP* FEAT- '3:BUG+ IMP* FEAT-
'2:BUG* IMP- '2:BUG* IMP-
'1:BUG- '1:BUG-
If LastVersion < 278 Then 'Snapshot 2.4.7
If LastVersion = 277 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复设置背景音乐可能导致无法启动 PCL 的 Bug"))
BugCount += 2
End If
If LastVersion < 277 Then 'Snapshot 2.4.6 If LastVersion < 277 Then 'Snapshot 2.4.6
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "在百宝箱添加了清理 MC 日志、崩溃报告的按钮")) FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "在百宝箱添加了清理 MC 日志、崩溃报告的按钮"))
FeatureCount += 8 FeatureCount += 8
@@ -10,12 +10,12 @@ Public Module ModBase
#Region "声明" #Region "声明"
'下列版本信息由更新器自动修改 '下列版本信息由更新器自动修改
Public Const VersionBaseName As String = "2.4.6" '不含分支前缀的显示用版本名 Public Const VersionBaseName As String = "2.4.7" '不含分支前缀的显示用版本名
Public Const VersionStandardCode As String = "2.4.6." & VersionBranchCode '标准格式的四段式版本号 Public Const VersionStandardCode As String = "2.4.7." & VersionBranchCode '标准格式的四段式版本号
#If BETA Then #If BETA Then
Public Const VersionCode As Integer = 276 'Release Public Const VersionCode As Integer = 276 'Release
#Else #Else
Public Const VersionCode As Integer = 277 'Snapshot Public Const VersionCode As Integer = 278 'Snapshot
#End If #End If
'自动生成的版本信息 '自动生成的版本信息
Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName
@@ -6,7 +6,7 @@ Public Module ModMinecraft
'列表初始化 '列表初始化
Public JavaListCacheVersion As Integer = 1 Public JavaListCacheVersion As Integer = 2
''' <summary> ''' <summary>
''' 目前所有可用的 Java。 ''' 目前所有可用的 Java。
''' </summary> ''' </summary>
@@ -175,10 +175,11 @@ Public Module ModMinecraft
End If End If
Is64Bit = Output.Contains("64-bit") Is64Bit = Output.Contains("64-bit")
If Version.Minor <= 4 OrElse Version.Minor >= 25 Then Throw New Exception("分析详细信息失败,获取的版本为 " & Version.ToString) If Version.Minor <= 4 OrElse Version.Minor >= 25 Then Throw New Exception("分析详细信息失败,获取的版本为 " & Version.ToString)
'无论如何不允许使用 JRE 16,它完全是炸的,安 OptiFine、Forge 和启动 MC 都会炸
If IsJre AndAlso VersionCode = 16 Then Throw New Exception("由于 JRE 16 对 Minecraft 的兼容性很差,因此不再允许使用")
Catch ex As Exception Catch ex As Exception
Log("[Java] 检查失败的 Java 输出:" & PathFolder & "java.exe" & vbCrLf & If(Output, "无程序输出")) Log("[Java] 检查失败的 Java 输出:" & PathFolder & "java.exe" & vbCrLf & If(Output, "无程序输出"))
ex = New Exception("检查 Java 详细信息失败(" & If(PathJavaw, "Nothing") & ")", ex) Throw New Exception("检查 Java 失败(" & If(PathJavaw, "Nothing") & ")", ex)
Throw ex
End Try End Try
IsChecked = True IsChecked = True
End Sub End Sub
@@ -457,7 +458,6 @@ RetryGet:
If MinVersion IsNot Nothing AndAlso Java.Version < MinVersion Then Continue For If MinVersion IsNot Nothing AndAlso Java.Version < MinVersion Then Continue For
If MaxVersion IsNot Nothing AndAlso Java.Version > MaxVersion Then Continue For If MaxVersion IsNot Nothing AndAlso Java.Version > MaxVersion Then Continue For
If Java.Is64Bit AndAlso Is32BitSystem Then Continue For If Java.Is64Bit AndAlso Is32BitSystem Then Continue For
If Java.IsJre AndAlso Java.VersionCode >= 12 Then Continue For '无论如何不允许使用 JRE 12+,它们完全是炸的,安 OptiFine、Forge 和启动 MC 都会炸
AllowedJavaList.Add(Java) AllowedJavaList.Add(Java)
Next Next
+9 -9
View File
@@ -187,7 +187,8 @@
''' </summary> ''' </summary>
Private Sub MusicStartPlay(Address As String, Optional IsFirstLoad As Boolean = False) Private Sub MusicStartPlay(Address As String, Optional IsFirstLoad As Boolean = False)
Log("[Music] 播放开始:" & Address) Log("[Music] 播放开始:" & Address)
RunInNewThread(Sub() MusicLoop(Address, IsFirstLoad), "Music", ThreadPriority.BelowNormal) MusicCurrent = Address
RunInNewThread(Sub() MusicLoop(IsFirstLoad), "Music", ThreadPriority.BelowNormal)
End Sub End Sub
'播放与暂停 '播放与暂停
@@ -237,15 +238,14 @@
''' <summary> ''' <summary>
''' 在 MusicUuid 不变的前提下,持续播放某地址的音乐,且在播放结束后随机播放下一曲。 ''' 在 MusicUuid 不变的前提下,持续播放某地址的音乐,且在播放结束后随机播放下一曲。
''' </summary> ''' </summary>
Private Sub MusicLoop(Address As String, Optional IsFirstLoad As Boolean = False) Private Sub MusicLoop(Optional IsFirstLoad As Boolean = False)
MusicCurrent = Address
Dim CurrentWave As NAudio.Wave.WaveOut = Nothing Dim CurrentWave As NAudio.Wave.WaveOut = Nothing
Dim Reader As NAudio.Wave.WaveStream = Nothing Dim Reader As NAudio.Wave.WaveStream = Nothing
Try Try
'开始播放 '开始播放
CurrentWave = New NAudio.Wave.WaveOut() CurrentWave = New NAudio.Wave.WaveOut()
MusicNAudio = CurrentWave MusicNAudio = CurrentWave
Reader = New NAudio.Wave.AudioFileReader(Address) Reader = New NAudio.Wave.AudioFileReader(MusicCurrent)
CurrentWave.Init(Reader) CurrentWave.Init(Reader)
CurrentWave.Play() CurrentWave.Play()
'第一次打开的暂停 '第一次打开的暂停
@@ -265,13 +265,13 @@
If CurrentWave.PlaybackState = NAudio.Wave.PlaybackState.Stopped AndAlso MusicAllList.Count > 0 Then MusicStartPlay(DequeueNextMusicAddress) If CurrentWave.PlaybackState = NAudio.Wave.PlaybackState.Stopped AndAlso MusicAllList.Count > 0 Then MusicStartPlay(DequeueNextMusicAddress)
Catch ex As Exception Catch ex As Exception
If ex.Message.Contains("Got a frame at sample rate") OrElse ex.Message.Contains("does not support changes to") Then If ex.Message.Contains("Got a frame at sample rate") OrElse ex.Message.Contains("does not support changes to") Then
Hint("播放音乐失败(" & GetFileNameFromPath(Address) & "):PCL2 不支持播放音频属性在中途发生变化的音乐", HintType.Critical) Hint("播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & "):PCL2 不支持播放音频属性在中途发生变化的音乐", HintType.Critical)
ElseIf Not (Address.ToLower.EndsWith(".wav") OrElse Address.ToLower.EndsWith(".mp3") OrElse Address.ToLower.EndsWith(".flac")) Then ElseIf Not (MusicCurrent.ToLower.EndsWith(".wav") OrElse MusicCurrent.ToLower.EndsWith(".mp3") OrElse MusicCurrent.ToLower.EndsWith(".flac")) Then
Hint("播放音乐失败(" & GetFileNameFromPath(Address) & "):PCL2 可能不支持此音乐格式,请将格式转换为 .wav、.mp3 或 .flac 后再试", HintType.Critical) Hint("播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & "):PCL2 可能不支持此音乐格式,请将格式转换为 .wav、.mp3 或 .flac 后再试", HintType.Critical)
Else Else
Log(ex, "播放音乐失败(" & GetFileNameFromPath(Address) & ")", LogLevel.Hint) Log(ex, "播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & ")", LogLevel.Hint)
End If End If
Log(ex, "播放音乐失败(" & Address & ")", LogLevel.Developer) Log(ex, "播放音乐失败(" & MusicCurrent & ")", LogLevel.Developer)
If MusicAllList.Count > 1 Then If MusicAllList.Count > 1 Then
Thread.Sleep(1000) Thread.Sleep(1000)
MusicStartPlay(DequeueNextMusicAddress) MusicStartPlay(DequeueNextMusicAddress)
@@ -51,6 +51,6 @@ Imports System.Runtime.InteropServices
' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 ' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
' 方法是按如下所示使用“*” ' 方法是按如下所示使用“*”
<Assembly: AssemblyVersion("2.4.6.0")> <Assembly: AssemblyVersion("2.4.7.0")>
<Assembly: AssemblyFileVersion("2.4.6.0")> <Assembly: AssemblyFileVersion("2.4.7.0")>
<Assembly: NeutralResourcesLanguage("")> <Assembly: NeutralResourcesLanguage("")>