Skip to content

Commit ad8eb32

Browse files
authored
Merge branch 'main' into main
2 parents 715c466 + 0b181ba commit ad8eb32

File tree

10 files changed

+87
-69
lines changed

10 files changed

+87
-69
lines changed

Plain Craft Launcher 2/Modules/Base/ModBase.vb

+5-5
Original file line numberDiff line numberDiff line change
@@ -838,16 +838,16 @@ Public Module ModBase
838838
'确保目录存在
839839
Directory.CreateDirectory(GetPathFromFullPath(FilePath))
840840
'写入文件
841-
If File.Exists(FilePath) Then
842-
'如果文件存在,刷新目前文件
843-
Using writer As New StreamWriter(FilePath, Append, If(Encoding, GetEncoding(ReadFileBytes(FilePath))))
841+
If Append Then
842+
'追加目前文件
843+
Using writer As New StreamWriter(FilePath, True, If(Encoding, GetEncoding(ReadFileBytes(FilePath))))
844844
writer.Write(Text)
845845
writer.Flush()
846846
writer.Close()
847847
End Using
848848
Else
849-
'如果文件不存在,则新建并写入
850-
File.WriteAllText(FilePath, Text, If(Encoding, New UTF8Encoding(False)))
849+
'直接写入字节集
850+
File.WriteAllBytes(FilePath, If(Encoding Is Nothing, Encoding.UTF8.GetBytes(Text), Encoding.GetBytes(Text)))
851851
End If
852852
End Sub
853853
''' <summary>

Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb

+14-10
Original file line numberDiff line numberDiff line change
@@ -1363,14 +1363,15 @@ Retry:
13631363
McLaunchLog("开始获取 Minecraft 启动参数")
13641364
'获取基准字符串与参数信息
13651365
Dim Arguments As String
1366+
Arguments = If(McLaunchJavaSelected.VersionCode > 8, "-Dfile.encoding=UTF-8 -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 ", Nothing) '#4700
13661367
If McVersionCurrent.JsonObject("arguments") IsNot Nothing AndAlso McVersionCurrent.JsonObject("arguments")("jvm") IsNot Nothing Then
13671368
McLaunchLog("获取新版 JVM 参数")
1368-
Arguments = McLaunchArgumentsJvmNew(McVersionCurrent)
1369+
Arguments += McLaunchArgumentsJvmNew(McVersionCurrent)
13691370
McLaunchLog("新版 JVM 参数获取成功:")
13701371
McLaunchLog(Arguments)
13711372
Else
13721373
McLaunchLog("获取旧版 JVM 参数")
1373-
Arguments = McLaunchArgumentsJvmOld(McVersionCurrent)
1374+
Arguments += McLaunchArgumentsJvmOld(McVersionCurrent)
13741375
McLaunchLog("旧版 JVM 参数获取成功:")
13751376
McLaunchLog(Arguments)
13761377
End If
@@ -1467,9 +1468,10 @@ Retry:
14671468

14681469
'添加 Java Wrapper 作为主 Jar
14691470
If McLaunchJavaSelected.VersionCode >= 9 Then DataList.Add("--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED")
1470-
DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """")
1471-
DataList.Add("-jar """ & ExtractJavaWrapper() & """")
1472-
1471+
If Setup.Get("VersionAdvanceUseLaunchWrapperV2", Version) AndAlso Setup.Get("LaunchAdvanceUseLaunchWrapper") Then
1472+
DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """")
1473+
DataList.Add("-jar """ & ExtractJavaWrapper() & """")
1474+
End If
14731475
'添加 MainClass
14741476
If Version.JsonObject("mainClass") Is Nothing Then
14751477
Throw New Exception("版本 json 中没有 mainClass 项!")
@@ -1534,9 +1536,10 @@ NextVersion:
15341536

15351537
'添加 Java Wrapper 作为主 Jar
15361538
If McLaunchJavaSelected.VersionCode >= 9 Then DataList.Add("--add-exports cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED")
1537-
DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """")
1538-
DataList.Add("-jar """ & ExtractJavaWrapper() & """")
1539-
1539+
If Setup.Get("VersionAdvanceUseLaunchWrapperV2", Version) AndAlso Setup.Get("LaunchAdvanceUseLaunchWrapper") Then
1540+
DataList.Add("-Doolloo.jlw.tmpdir=""" & PathPure.TrimEnd("\") & """")
1541+
DataList.Add("-jar """ & ExtractJavaWrapper() & """")
1542+
End If
15401543
'将 "-XXX" 与后面 "XXX" 合并到一起
15411544
'如果不合并,会导致 Forge 1.17 启动无效,它有两个 --add-exports,进一步导致其中一个在后面被去重
15421545
Dim DeDuplicateDataList As New List(Of String)
@@ -2096,6 +2099,7 @@ IgnoreCustomSkin:
20962099
'输出 bat
20972100
Try
20982101
Dim CmdString As String =
2102+
$"{If(McLaunchJavaSelected.VersionCode > 8, "chcp 65001>nul" & vbCrLf, Nothing)}" &
20992103
"@echo off" & vbCrLf &
21002104
"title 启动 - " & McVersionCurrent.Name & vbCrLf &
21012105
"echo 游戏正在启动,请稍候。" & vbCrLf &
@@ -2188,8 +2192,8 @@ IgnoreCustomSkin:
21882192
StartInfo.EnvironmentVariables("Path") = Join(Paths.Distinct.ToList, ";")
21892193

21902194
'设置其他参数
2191-
StartInfo.StandardErrorEncoding = Encoding.UTF8
2192-
StartInfo.StandardOutputEncoding = Encoding.UTF8
2195+
StartInfo.StandardErrorEncoding = If(McLaunchJavaSelected.VersionCode > 8, Encoding.UTF8, Nothing)
2196+
StartInfo.StandardOutputEncoding = If(McLaunchJavaSelected.VersionCode > 8, Encoding.UTF8, Nothing)
21932197
StartInfo.WorkingDirectory = ShortenPath(McVersionCurrent.PathIndie)
21942198
StartInfo.UseShellExecute = False
21952199
StartInfo.RedirectStandardOutput = True

Plain Craft Launcher 2/Modules/ModMusic.vb

+51-47
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
Public Module ModMusic
1+
Imports NAudio.CoreAudioApi
2+
Imports NAudio.CoreAudioApi.Interfaces
3+
4+
Public Module ModMusic
25

36
#Region "播放列表"
47

@@ -66,44 +69,44 @@
6669
''' </summary>
6770
Private Sub MusicRefreshUI()
6871
RunInUi(
69-
Sub()
70-
Try
72+
Sub()
73+
Try
7174

72-
If Not MusicAllList.Any() Then
73-
'无背景音乐
74-
FrmMain.BtnExtraMusic.Show = False
75-
Else
76-
'有背景音乐
77-
FrmMain.BtnExtraMusic.Show = True
78-
Dim ToolTipText As String
79-
If MusicState = MusicStates.Pause Then
80-
FrmMain.BtnExtraMusic.Logo = Logo.IconPlay
81-
FrmMain.BtnExtraMusic.LogoScale = 0.8
82-
ToolTipText = "已暂停:" & GetFileNameWithoutExtentionFromPath(MusicCurrent)
83-
If MusicAllList.Count > 1 Then
84-
ToolTipText += vbCrLf & "左键恢复播放,右键播放下一曲。"
85-
Else
86-
ToolTipText += vbCrLf & "左键恢复播放,右键重新从头播放。"
87-
End If
75+
If Not MusicAllList.Any() Then
76+
'无背景音乐
77+
FrmMain.BtnExtraMusic.Show = False
8878
Else
89-
FrmMain.BtnExtraMusic.Logo = Logo.IconMusic
90-
FrmMain.BtnExtraMusic.LogoScale = 1
91-
ToolTipText = "正在播放:" & GetFileNameWithoutExtentionFromPath(MusicCurrent)
92-
If MusicAllList.Count > 1 Then
93-
ToolTipText += vbCrLf & "左键暂停,右键播放下一曲。"
79+
'有背景音乐
80+
FrmMain.BtnExtraMusic.Show = True
81+
Dim ToolTipText As String
82+
If MusicState = MusicStates.Pause Then
83+
FrmMain.BtnExtraMusic.Logo = Logo.IconPlay
84+
FrmMain.BtnExtraMusic.LogoScale = 0.8
85+
ToolTipText = "已暂停:" & GetFileNameWithoutExtentionFromPath(MusicCurrent)
86+
If MusicAllList.Count > 1 Then
87+
ToolTipText += vbCrLf & "左键恢复播放,右键播放下一曲。"
88+
Else
89+
ToolTipText += vbCrLf & "左键恢复播放,右键重新从头播放。"
90+
End If
9491
Else
95-
ToolTipText += vbCrLf & "左键暂停,右键重新从头播放。"
92+
FrmMain.BtnExtraMusic.Logo = Logo.IconMusic
93+
FrmMain.BtnExtraMusic.LogoScale = 1
94+
ToolTipText = "正在播放:" & GetFileNameWithoutExtentionFromPath(MusicCurrent)
95+
If MusicAllList.Count > 1 Then
96+
ToolTipText += vbCrLf & "左键暂停,右键播放下一曲。"
97+
Else
98+
ToolTipText += vbCrLf & "左键暂停,右键重新从头播放。"
99+
End If
96100
End If
101+
FrmMain.BtnExtraMusic.ToolTip = ToolTipText
102+
ToolTipService.SetVerticalOffset(FrmMain.BtnExtraMusic, If(ToolTipText.Contains(vbLf), 10, 16))
97103
End If
98-
FrmMain.BtnExtraMusic.ToolTip = ToolTipText
99-
ToolTipService.SetVerticalOffset(FrmMain.BtnExtraMusic, If(ToolTipText.Contains(vbLf), 10, 16))
100-
End If
101-
If FrmSetupUI IsNot Nothing Then FrmSetupUI.MusicRefreshUI()
104+
If FrmSetupUI IsNot Nothing Then FrmSetupUI.MusicRefreshUI()
102105

103-
Catch ex As Exception
104-
Log(ex, "刷新背景音乐 UI 失败", LogLevel.Feedback)
105-
End Try
106-
End Sub)
106+
Catch ex As Exception
107+
Log(ex, "刷新背景音乐 UI 失败", LogLevel.Feedback)
108+
End Try
109+
End Sub)
107110
End Sub
108111

109112
''' <summary>
@@ -223,11 +226,11 @@
223226
Public Function MusicPause() As Boolean
224227
If MusicState = MusicStates.Play Then
225228
RunInThread(
226-
Sub()
227-
Log("[Music] 已暂停播放")
228-
MusicNAudio?.Pause()
229-
MusicRefreshUI()
230-
End Sub)
229+
Sub()
230+
Log("[Music] 已暂停播放")
231+
MusicNAudio?.Pause()
232+
MusicRefreshUI()
233+
End Sub)
231234
Return True
232235
Else
233236
Log($"[Music] 无需暂停播放,当前状态为 {MusicState}")
@@ -243,19 +246,19 @@
243246
Return False
244247
Else
245248
RunInThread(
246-
Sub()
247-
Log("[Music] 已恢复播放")
248-
MusicNAudio?.Play()
249-
MusicRefreshUI()
250-
End Sub)
249+
Sub()
250+
Log("[Music] 已恢复播放")
251+
MusicNAudio?.Play()
252+
MusicRefreshUI()
253+
End Sub)
251254
Return True
252255
End If
253256
End Function
254257

255258
#End Region
256259

257260
''' <summary>
258-
''' 当前正在播放的 NAudio.Wave.WaveOut
261+
''' 当前正在播放的 NAudio.Wave.WaveOutEvent
259262
''' </summary>
260263
Public MusicNAudio = Nothing
261264
''' <summary>
@@ -267,12 +270,13 @@
267270
''' 在 MusicUuid 不变的前提下,持续播放某地址的音乐,且在播放结束后随机播放下一曲。
268271
''' </summary>
269272
Private Sub MusicLoop(Optional IsFirstLoad As Boolean = False)
270-
Dim CurrentWave As NAudio.Wave.WaveOut = Nothing
273+
Dim CurrentWave As NAudio.Wave.WaveOutEvent = Nothing
271274
Dim Reader As NAudio.Wave.WaveStream = Nothing
272275
Try
273276
'开始播放
274-
CurrentWave = New NAudio.Wave.WaveOut()
277+
CurrentWave = New NAudio.Wave.WaveOutEvent()
275278
MusicNAudio = CurrentWave
279+
CurrentWave.DeviceNumber = -1
276280
Reader = New NAudio.Wave.AudioFileReader(MusicCurrent)
277281
CurrentWave.Init(Reader)
278282
CurrentWave.Play()
@@ -303,7 +307,7 @@
303307
If ex.Message.Contains("Got a frame at sample rate") OrElse ex.Message.Contains("does not support changes to") Then
304308
Hint("播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & "):PCL 不支持播放音频属性在中途发生变化的音乐", HintType.Critical)
305309
ElseIf Not (MusicCurrent.EndsWithF(".wav", True) OrElse MusicCurrent.EndsWithF(".mp3", True) OrElse MusicCurrent.EndsWithF(".flac", True)) OrElse
306-
ex.Message.Contains("0xC00D36C4") Then '#5096:不支持给定的 URL 的字节流类型。 (异常来自 HRESULT:0xC00D36C4)
310+
ex.Message.Contains("0xC00D36C4") Then '#5096:不支持给定的 URL 的字节流类型。 (异常来自 HRESULT:0xC00D36C4)
307311
Hint("播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & "):PCL 可能不支持此音乐格式,请将格式转换为 .wav、.mp3 或 .flac 后再试", HintType.Critical)
308312
Else
309313
Log(ex, "播放音乐失败(" & GetFileNameFromPath(MusicCurrent) & ")", LogLevel.Hint)

Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb

+2-2
Original file line numberDiff line numberDiff line change
@@ -2087,8 +2087,8 @@ Retry:
20872087
'判断 OptiFine 是否作为 Mod 进行下载
20882088
Dim MinecraftCode As Integer = If(Request.MinecraftName.Contains("."), Val(Request.MinecraftName.Split(".")(1)), 0)
20892089
Dim OptiFineAsMod As Boolean = Request.OptiFineEntry IsNot Nothing AndAlso '1. 选择了 OptiFine
2090-
(Request.FabricVersion IsNot Nothing OrElse '2. 选择了 Fabric...
2091-
(Request.ForgeEntry IsNot Nothing AndAlso MinecraftCode >= 14 AndAlso MinecraftCode <= 15)) '...或者 Forge 1.14~15(#4134)
2090+
Request.FabricVersion IsNot Nothing OrElse '2. 选择了 Mod 加载器
2091+
Request.ForgeEntry IsNot Nothing
20922092
Dim ModsFolder As String = New McVersion(OutputFolder).GetPathIndie(True) & "mods\"
20932093

20942094
If OptiFineAsMod Then

Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb

+2
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@
102102
{"LaunchAdvanceRun", New SetupEntry("")},
103103
{"LaunchAdvanceRunWait", New SetupEntry(True)},
104104
{"LaunchAdvanceAssets", New SetupEntry(False)},
105+
{"LaunchAdvanceUseLaunchWrapper", New SetupEntry(True)},
105106
{"LaunchAdvanceJava", New SetupEntry(False)},
106107
{"LaunchGraphicSetup", New SetupEntry(False)},
107108
{"LaunchRamType", New SetupEntry(0)},
@@ -172,6 +173,7 @@
172173
{"VersionAdvanceGame", New SetupEntry("", Source:=SetupSource.Version)},
173174
{"VersionAdvanceAssets", New SetupEntry(0, Source:=SetupSource.Version)},
174175
{"VersionAdvanceAssetsV2", New SetupEntry(False, Source:=SetupSource.Version)},
176+
{"VersionAdvanceUseLaunchWrapperV2", New SetupEntry(True, Source:=SetupSource.Version)},
175177
{"VersionAdvanceJava", New SetupEntry(False, Source:=SetupSource.Version)},
176178
{"VersionAdvanceRun", New SetupEntry("", Source:=SetupSource.Version)},
177179
{"VersionAdvanceRunWait", New SetupEntry(True, Source:=SetupSource.Version)},

Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml

+2
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,8 @@
259259
ToolTip="警告:强烈推荐在版本设置中关闭特定版本的警告,而不是在这里关闭所有版本的警告!&#xa;如果在设置中手动选择了与当前版本不兼容的 Java,则自动跳过兼容性警告弹窗,强制使用手动选择的 Java。" />
260260
<local:MyCheckBox Text="关闭文件校验" x:Name="CheckAdvanceAssets" Tag="LaunchAdvanceAssets"
261261
ToolTip="警告:强烈推荐在版本设置中关闭特定版本的校验,而不是在这里关闭所有版本的校验!&#xa;完全不更改 assets;不校验 libraries、第三方登录库与版本主 jar 文件是否被修改。&#xa;如果你没有修改相关文件,请勿勾选此项。" />
262+
<local:MyCheckBox Text="使用 JLW" x:Name="CheckAdvanceUseLaunchWrapper" Tag="LaunchAdvanceUseLaunchWrapper" Margin="50,0,0,0"
263+
ToolTip="警告:强烈推荐在版本设置中设置特定版本是否使用 JLW,而不是在这里设置全部版本是否使用 JLW!&#xa;在启动时额外加载 JLW 来处理中文目录。&#xa;如果服务器没有使用反作弊,请勿取消勾选此项。" />
262264
</StackPanel>
263265
</Grid>
264266
</local:MyCard>

Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml.vb

+4-2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
CheckAdvanceRunWait.Checked = Setup.Get("LaunchAdvanceRunWait")
5656
CheckAdvanceAssets.Checked = Setup.Get("LaunchAdvanceAssets")
5757
CheckAdvanceJava.Checked = Setup.Get("LaunchAdvanceJava")
58+
CheckAdvanceUseLaunchWrapper.Checked = Setup.Get("LaunchAdvanceUseLaunchWrapper")
5859

5960
Catch ex As NullReferenceException
6061
Log(ex, "启动设置项存在异常,已被自动重置", LogLevel.Msgbox)
@@ -81,6 +82,7 @@
8182
Setup.Reset("LaunchSkinType")
8283
Setup.Reset("LaunchSkinID")
8384
Setup.Reset("LaunchAdvanceJvm")
85+
Setup.Reset("LaunchAdvanceUseLaunchWrapper")
8486
Setup.Reset("LaunchAdvanceGame")
8587
Setup.Reset("LaunchAdvanceJava")
8688
Setup.Reset("LaunchAdvanceAssets")
@@ -114,7 +116,7 @@
114116
Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndie.SelectionChanged, ComboArgumentVisibie.SelectionChanged, ComboArgumentWindowType.SelectionChanged, ComboArgumentPriority.SelectionChanged
115117
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex)
116118
End Sub
117-
Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change, CheckAdvanceJava.Change, CheckAdvanceRunWait.Change, CheckArgumentRam.Change, CheckAdvanceGraphicSetup.Change
119+
Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change, CheckAdvanceJava.Change, CheckAdvanceRunWait.Change, CheckArgumentRam.Change, CheckAdvanceUseLaunchWrapper.Change, CheckAdvanceGraphicSetup.Change
118120
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked)
119121
End Sub
120122

@@ -215,7 +217,7 @@
215217
End If
216218
'设置文本
217219
LabRamGame.Text = If(RamGame = Math.Floor(RamGame), RamGame & ".0", RamGame) & " GB" &
218-
If(RamGame <> RamGameActual, " (可用 " & If(RamGameActual = Math.Floor(RamGameActual), RamGameActual & ".0", RamGameActual) & " GB)", "")
220+
If(Math.Abs(RamGame - RamGameActual) > 0.05, " (可用 " & If(RamGameActual = Math.Floor(RamGameActual), RamGameActual & ".0", RamGameActual) & " GB)", "")
219221
LabRamUsed.Text = If(RamUsed = Math.Floor(RamUsed), RamUsed & ".0", RamUsed) & " GB"
220222
LabRamTotal.Text = " / " & If(RamTotal = Math.Floor(RamTotal), RamTotal & ".0", RamTotal) & " GB"
221223
LabRamWarn.Visibility = If(RamGame = 1 AndAlso Not JavaIs64Bit() AndAlso Not Is32BitSystem AndAlso JavaList.Any, Visibility.Visible, Visibility.Collapsed)

Plain Craft Launcher 2/Pages/PageVersion/PageVersionExport.xaml.vb

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ Public Class PageVersionExport
3333
TextExportName.HintText = PageVersionLeft.Version.Name
3434
TextExportVersion.Text = ""
3535
TextExportVersion.HintText = "1.0.0"
36+
CheckAdvancedModrinth.Checked = False
3637
GetExportOption(CheckOptionsBasic).Description = PageVersionLeft.Version.GetDefaultDescription()
3738
ResetConfigOverrides()
3839
ReloadAllSubOptions()

Plain Craft Launcher 2/Pages/PageVersion/PageVersionSetup.xaml

+2
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,8 @@
221221
ToolTip="如果在设置中手动选择了与当前版本不兼容的 Java,则自动跳过兼容性警告弹窗,强制使用手动选择的 Java。" />
222222
<local:MyCheckBox Text="关闭文件校验" x:Name="CheckAdvanceAssetsV2" Tag="VersionAdvanceAssetsV2"
223223
ToolTip="完全不更改 assets;不校验 libraries、第三方登录库与版本主 jar 文件是否被修改。&#xa;如果你没有修改相关文件,请勿勾选此项。" />
224+
<local:MyCheckBox Text="使用 JLW" x:Name="CheckAdvanceUseLaunchWrapperV2" Tag="VersionAdvanceUseLaunchWrapperV2" Margin="50,0,0,0"
225+
ToolTip="在启动时额外加载 JLW 来处理中文目录。&#xa;如果服务器没有使用反作弊,请勿取消勾选此项。" />
224226
</StackPanel>
225227
</Grid>
226228
</local:MyCard>

0 commit comments

Comments
 (0)