Skip to content

Commit 312f141

Browse files
committed
dev: 启动命令生成提出部分参数
fix(java): Java 自动选择器加入 Java 21 判断;未找到 Java 时返回 null dev(test): Set About 页面加入一个 CheckBox 用于测试 dev: 主页 CheckBox 省去不必要的参数
1 parent 319afcc commit 312f141

File tree

5 files changed

+48
-13
lines changed

5 files changed

+48
-13
lines changed

Controls/SodaCheckBox.xaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
d:DesignHeight="40" d:DesignWidth="125" Loaded="Border_Loaded" VerticalAlignment="Center" HorizontalAlignment="Center">
99
<Border Name="CheckBox_BgBorder" d:Background="Black" CornerRadius="22" RenderTransformOrigin="{Binding ElementName=CheckBox_Border, Path=RenderTransformOrigin}" Background="{Binding ElementName=CheckBox_Border, Path=Background}" Width="{Binding ElementName=CheckBox_Border, Path=ActualWidth}" Height="{Binding ElementName=CheckBox_Border, Path=ActualHeight}" HorizontalAlignment="Center" VerticalAlignment="Center">
1010
<Border Name="CheckBox_Border" CornerRadius="20" RenderTransformOrigin="0.5,0.5" Height="40" Width="125"
11-
Background="{DynamicResource Brush_Main}" BorderBrush="{DynamicResource Brush_Main}" BorderThickness="4"
12-
MouseLeftButtonUp="Btn_Border_MouseLeftButtonUp" MouseEnter="Btn_MouseEnter" MouseLeave="Btn_Border_MouseLeave" MouseDown="Btn_Border_MouseDown" MouseUp="Btn_Border_MouseUp" HorizontalAlignment="Center" VerticalAlignment="Center">
11+
Background="{DynamicResource Brush_Main}" BorderBrush="{DynamicResource Brush_Main}" BorderThickness="4"
12+
MouseLeftButtonUp="Btn_Border_MouseLeftButtonUp" MouseEnter="Btn_MouseEnter" MouseLeave="Btn_Border_MouseLeave" MouseDown="Btn_Border_MouseDown" MouseUp="Btn_Border_MouseUp" HorizontalAlignment="Center" VerticalAlignment="Center">
1313
<Border.RenderTransform>
1414
<ScaleTransform x:Name="CheckBox_Border_Scale" />
1515
</Border.RenderTransform>

Core/Game/MinecraftLaunch.cs

+15-8
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,26 @@ public class MinecraftLaunch {
2626
private static string _userType;
2727
private static string _versionType;
2828

29+
private static string coreName = "1.21.4";
30+
private static string coreVersion = "1.21.4";
31+
private static string username = "SodaCLTest";
32+
private static int memoryMax = 4096;
33+
private static int memoryMin = 2048;
34+
2935
private MinecraftLaunch() {
3036
}
3137

3238
public static void LaunchGame() {
3339
// _coreInfo = JsonConvert.DeserializeObject<CoreModel>(RegEditor.GetKeyValue(Registry.CurrentUser, "CurrentGameInfo"));
3440
// _assetInfo = JsonConvert.DeserializeObject<AssetModel>(_coreInfo.GameDir + "\\" + _coreInfo.VersionName);
35-
var json = File.ReadAllText($"{SODA_MC_DIR}\\versions\\1.21.4\\1.21.4.json");
41+
var json = File.ReadAllText($"{SODA_MC_VERSIONS_DIR}\\{coreName}\\{coreName}.json");
3642
_assetInfo = JsonConvert.DeserializeObject<AssetModel>(json);
3743
var StartArgs = SpliceArgumentsMain();
3844
Log(false, ModuleList.IO, LogInfo.Info, StartArgs);
3945

4046
var javaPath = "";
4147
// javaPath = JavaAutoSelector("1.21.4");
48+
// Java 自动选择
4249
javaPath = "C:\\Program Files\\Zulu\\zulu-21\\bin\\java.exe";
4350

4451
var p = new Process();
@@ -88,9 +95,9 @@ public static string SpliceBasicArguments() {
8895
//TODO: Natives 文件处理 (-Djava.library.path="E:\Minecraft\.minecraft\$natives")
8996

9097
var BasicArguments = "";
91-
BasicArguments += $" -Xmx2048M";
92-
BasicArguments += $" -Xms2048M";
93-
BasicArguments += $" -Xmn256M";
98+
BasicArguments += $" -Xmx{memoryMax}M";
99+
BasicArguments += $" -Xms{memoryMin}M";
100+
BasicArguments += $" -Xmn256M"; // 之后可能需要斟酌一下数值,似乎会影响性能
94101
BasicArguments += " -XX:+UseG1GC";
95102
BasicArguments += " -XX:-UseAdaptiveSizePolicy";
96103
BasicArguments += " -XX:-OmitStackTraceInFastThrow";
@@ -117,7 +124,7 @@ public static string SpliceLibrariesArguments() {
117124
}
118125
LibrariesArguments += libPath + ";";
119126
}
120-
LibrariesArguments += "E:\\Code\\SodaCL\\bin\\Debug\\net8.0-windows\\.minecraft\\versions\\1.21.4\\1.21.4.jar";
127+
LibrariesArguments += $"{SODA_MC_VERSIONS_DIR}\\{coreName}\\{coreName}.jar";
121128
return LibrariesArguments;
122129
}
123130

@@ -130,9 +137,9 @@ public static string SpliceMcArguments(int accountType) {
130137
//McArguments += $" --username {RegEditor.GetKeyValue(Registry.CurrentUser, "UserName")}";
131138
// McArguments.Add($"--version {_coreInfo.VersionName}");
132139
//McArguments.Add($"--gameDir {DirConverter(_coreInfo.GameDir)}");
133-
McArguments += $" --username SodaCLTest";
134-
McArguments += $" --version 1.21.4";
135-
McArguments += $" --gameDir {SODA_MC_DIR}\\versions\\1.21.4";
140+
McArguments += $" --username {username}";
141+
McArguments += $" --version {coreVersion}";
142+
McArguments += $" --gameDir {SODA_MC_VERSIONS_DIR}\\{coreName}";
136143
McArguments += $" --assetsDir {SODA_MC_DIR}\\assets";
137144
McArguments += $" --assetIndex {_assetInfo.AssetIndex.Id}";
138145
//McArguments += $" --uuid {_uuid}";

Core/Java/ModJava.cs

+26-2
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,27 @@ public static string JavaAutoSelector(string TargetMcVersion) {
194194
var javaList = JsonConvert.DeserializeObject<JavaModel>(javaJson);
195195

196196
var mcMajorVersion = int.Parse(TargetMcVersion.Split('.')[1]);
197-
198-
if (mcMajorVersion >= 17) {
197+
int mcMinorVersion;
198+
if (TargetMcVersion.Split('.').Length > 2)
199+
mcMinorVersion = int.Parse(TargetMcVersion.Split('.')[2]);
200+
else
201+
mcMinorVersion = 0;
202+
203+
if ((mcMajorVersion == 20 && mcMinorVersion >= 4) || mcMajorVersion >= 21) {
204+
// 1.20.4+ 至少 Java 21,快照版本暂时未确定
205+
foreach (var javaJsonSingle in javaList.ToString())
206+
{
207+
var java = JsonConvert.DeserializeObject<JavaModel>(javaJsonSingle.ToString());
208+
if (java.MajorVersion == "21")
209+
{
210+
RegEditor.SetKeyValue(Registry.CurrentUser, "CacheTargetJavaPath", java.JavaPath, RegistryValueKind.String);
211+
return java.JavaPath;
212+
}
213+
break;
214+
}
215+
return null;
216+
}
217+
else if (mcMajorVersion >= 17) {
199218
// 1.18 Pre2+ 至少 Java 17
200219
// 1.17+ (21w19a+) 至少 Java 16
201220
// 出于省事考虑直接最少 Java 17 ,除了 1.17 部分早期版本的 Forge 可能需要特殊处理 (Java 16)
@@ -208,6 +227,7 @@ public static string JavaAutoSelector(string TargetMcVersion) {
208227
}
209228
break;
210229
}
230+
return null;
211231
}
212232
else if (mcMajorVersion >= 12) {
213233
// 最少 Java 8
@@ -221,6 +241,7 @@ public static string JavaAutoSelector(string TargetMcVersion) {
221241
}
222242
break;
223243
}
244+
return null;
224245
}
225246
else if (mcMajorVersion <= 11 && mcMajorVersion >= 8) {
226247
// 必须恰好 Java 8
@@ -233,6 +254,7 @@ public static string JavaAutoSelector(string TargetMcVersion) {
233254
}
234255
break;
235256
}
257+
return null;
236258
}
237259
else if (mcMajorVersion <= 7) {
238260
// 最高 Java 8
@@ -246,6 +268,7 @@ public static string JavaAutoSelector(string TargetMcVersion) {
246268
}
247269
break;
248270
}
271+
return null;
249272
}
250273
else if (mcMajorVersion <= 5) {
251274
// 最高 Java 12
@@ -259,6 +282,7 @@ public static string JavaAutoSelector(string TargetMcVersion) {
259282
}
260283
break;
261284
}
285+
return null;
262286
}
263287
else {
264288
return "核心版本非法";

MainPage.xaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<TextBlock Text="Minecraft 11.45.14" Margin="20,5,0,0" FontSize="14" Height="20" />
3333
</StackPanel>
3434
<StackPanel Height="48" DockPanel.Dock="Right" Orientation="Horizontal" Margin="0,0,20,0" VerticalAlignment="Center">
35-
<soda:SodaCheckBox Margin="0,0,15,0" Width="120" Height="40" />
35+
<soda:SodaCheckBox Margin="0,0,15,0" Width="125" />
3636
<soda:SodaButton Width="80" Margin="0,0,15,0" Text="Java 测试" Click="EnvironmentCheckButtonClick" />
3737
<soda:SodaButton Width="40" Margin="0,0,15,0" Text="Log" Click="LogFolderOpenerButtonClick" />
3838
<soda:SodaButton x:Name="StartBtn" Width="120" Text="{DynamicResource MainPage_StartGame}" Click="StartBtn_Click" Height="45" ButtonType="Main" />

Pages/Settings/Set_About.xaml

+4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
55
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:soda="clr-namespace:SodaCL.Controls"
67
xmlns:local="clr-namespace:SodaCL.Pages.Settings" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" Title="Set_About">
78
<Grid>
89
<Grid.RowDefinitions>
@@ -13,6 +14,9 @@
1314
<Image Grid.Row="1" Width="128" Height="128" Source="/Resources/Images/Release.ico" />
1415
<!--<Button Name="BackBtn" Width="32" Height="32" Margin="0,0,10,0" Click="BackBtn_Click">
1516
</Button>-->
17+
<StackPanel>
18+
<soda:SodaCheckBox Width="125"/>
19+
</StackPanel>
1620
<Border Grid.Row="2">
1721
<TextBlock>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum dignissimos alias distinctio vero est ex exercitationem error pariatur quo! Delectus ipsum nam incidunt iure atque est eos aperiam rem doloribus.</TextBlock>
1822
</Border>

0 commit comments

Comments
 (0)