Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
10dc86a
增加对Linux和amcOS的Java搜索处理部分(暂时没有测试)
whitecat346 Mar 21, 2025
73bfaa9
部分优化,虽然效果不是很理想
whitecat346 Mar 22, 2025
e4d5e1e
超级离谱优化版本,吓人,睡觉去了
whitecat346 Mar 22, 2025
a12cde3
最终优化版本。累死了
whitecat346 Mar 23, 2025
bd77958
优化JavaEntity实现细节,减少运行时output的内存占用(虽然不知道到底有啥用)
whitecat346 Mar 24, 2025
9ef55ec
重构MyColor(部分)
whitecat346 Mar 28, 2025
dc04f15
增加Unix下Java搜索的未测试警告
whitecat346 Mar 28, 2025
e8396c3
Merge branch 'main' into main
whitecat346 Mar 28, 2025
1b13f8f
更改部分MyColor方法和构造函数,简化代码
whitecat346 Mar 30, 2025
8aaf0e4
修改部分错误代码
whitecat346 Mar 30, 2025
b3af3a3
修改部分代码
whitecat346 Mar 30, 2025
0505874
更新Unix下的Java搜索,分离不同平台的处理逻辑值对应的文件
whitecat346 Apr 3, 2025
673b151
Windows下Java搜索的巨大提升
whitecat346 Apr 3, 2025
abaad82
fix some bugs in Windows.SearchJavaAsync
whitecat346 Apr 4, 2025
b638ba9
修复了 Java 可执行文件判断错误的问题
YiZhiMCQiu Apr 10, 2025
5872c4e
修改警告内容
YiZhiMCQiu Apr 10, 2025
c94a35f
优化 java 可执行文件判断
YiZhiMCQiu Apr 10, 2025
ba5d7f1
fix problem
whitecat346 Apr 13, 2025
bce439f
fix problem
whitecat346 Apr 13, 2025
e66593e
fix(MyColor): build error
LaoSparrow Apr 17, 2025
377eea5
refactor(Java/Unix): a bit rework
LaoSparrow Apr 18, 2025
b4c3ec7
Merge branch 'main' into main
whitecat346 Apr 18, 2025
66df516
fix/error FromHsl2
whitecat346 Apr 18, 2025
94afc0d
Merge pull request #2 from YiZhiMCQiu/main
whitecat346 Apr 18, 2025
16388c2
Merge branch 'main' into whitecat346-main
whitecat346 Apr 19, 2025
1ac73e2
Merge pull request #5 from LaoSparrow/whitecat346-main
whitecat346 Apr 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions PCL2.Neo.sln
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ VisualStudioVersion = 17.12.35527.113
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PCL2.Neo", "PCL2.Neo\PCL2.Neo.csproj", "{AF527853-D92E-44CE-A3EB-1E308C4FBFE2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PCL2.NeoTests", "PCL2.NeoTests\PCL2.NeoTests.csproj", "{04D722EF-BBE3-4572-AF9E-1E692F850C12}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -15,6 +17,10 @@ Global
{AF527853-D92E-44CE-A3EB-1E308C4FBFE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AF527853-D92E-44CE-A3EB-1E308C4FBFE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF527853-D92E-44CE-A3EB-1E308C4FBFE2}.Release|Any CPU.Build.0 = Release|Any CPU
{04D722EF-BBE3-4572-AF9E-1E692F850C12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04D722EF-BBE3-4572-AF9E-1E692F850C12}.Debug|Any CPU.Build.0 = Debug|Any CPU
{04D722EF-BBE3-4572-AF9E-1E692F850C12}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04D722EF-BBE3-4572-AF9E-1E692F850C12}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
10 changes: 10 additions & 0 deletions PCL2.Neo.sln.DotSettings.user
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,14 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Ffe877ad5dc9742caa5e7dfcad5831d581e2200_003F82_003F21113a39_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATransitionBase_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Ffe877ad5dc9742caa5e7dfcad5831d581e2200_003F01_003Fa44768fa_003FTransitionBase_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATransition_00601_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Ffe877ad5dc9742caa5e7dfcad5831d581e2200_003F62_003F990aa4ca_003FTransition_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=c5802d4c_002D1f9b_002D4bd8_002Da087_002D0035332caf40/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="ConvertHslToRgbTest" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;TestAncestor&gt;&#xD;
&lt;TestId&gt;MSTest::04D722EF-BBE3-4572-AF9E-1E692F850C12::net9.0::PCL2.Neo.Models.Tests.MyColorTests.ConvertHslToRgbTest&lt;/TestId&gt;&#xD;
&lt;/TestAncestor&gt;&#xD;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=d0ef7641_002D239c_002D4bff_002Da782_002Dc0a706747836/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="ConvertHslToRgbTest #2" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;TestAncestor&gt;&#xD;
&lt;TestId&gt;MSTest::04D722EF-BBE3-4572-AF9E-1E692F850C12::net9.0::PCL2.Neo.Models.Tests.MainTests&lt;/TestId&gt;&#xD;
&lt;/TestAncestor&gt;&#xD;
&lt;/SessionState&gt;</s:String>
</wpf:ResourceDictionary>
20 changes: 11 additions & 9 deletions PCL2.Neo/Helpers/ThemeHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,17 +55,18 @@ public void Refresh(ThemeVariant themeVariant)
brushTitle.GradientStops.Add(new GradientStop
{
Offset = 0,
Color = new MyColor().FromHsl2(_colorHue - _colorHueTopbarDelta, _colorSat, 48 + _colorLightAdjust)
Color = MyColor.FromHsl2(_colorHue - _colorHueTopbarDelta, _colorSat,
48 + _colorLightAdjust)
});
brushTitle.GradientStops.Add(new GradientStop
{
Offset = 0.5,
Color = new MyColor().FromHsl2(_colorHue, _colorSat, 54 + _colorLightAdjust)
Offset = 0.5, Color = MyColor.FromHsl2(_colorHue, _colorSat, 54 + _colorLightAdjust)
});
brushTitle.GradientStops.Add(new GradientStop
{
Offset = 1,
Color = new MyColor().FromHsl2(_colorHue + _colorHueTopbarDelta, _colorSat, 48 + _colorLightAdjust)
Color = MyColor.FromHsl2(_colorHue + _colorHueTopbarDelta, _colorSat,
48 + _colorLightAdjust)
});

_mainWindow.NavBackgroundBorder.Background = brushTitle;
Expand All @@ -90,19 +91,20 @@ public void Refresh(ThemeVariant themeVariant)
brushBackground.GradientStops.Add(new GradientStop
{
Offset = -0.1,
Color = new MyColor().FromHsl2(_colorHue - 20, Math.Min(60, _colorSat) * 0.5, 80 * lightAdjust)
Color = MyColor.FromHsl2(_colorHue - 20, Math.Min(60, _colorSat) * 0.5f,
80 * lightAdjust)
});
brushBackground.GradientStops.Add(new GradientStop
{
Offset = 0.4,
Color = new MyColor().FromHsl2(_colorHue, _colorSat * 0.9, 90 * lightAdjust)
Offset = 0.4, Color = MyColor.FromHsl2(_colorHue, _colorSat * 0.9f, 90 * lightAdjust)
});
brushBackground.GradientStops.Add(new GradientStop
{
Offset = 1.1,
Color = new MyColor().FromHsl2(_colorHue + 20, Math.Min(60, _colorSat) * 0.5, 80 * lightAdjust)
Color = MyColor.FromHsl2(_colorHue + 20, Math.Min(60, _colorSat) * 0.5f,
80 * lightAdjust)
});

_mainWindow.MainBorder.Background = brushBackground;
}
}
}
32 changes: 0 additions & 32 deletions PCL2.Neo/Models/Minecraft/Java.cs

This file was deleted.

54 changes: 54 additions & 0 deletions PCL2.Neo/Models/Minecraft/Java/Java.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace PCL2.Neo.Models.Minecraft.Java
{
/// <summary>
/// 测试
/// </summary>
public class Java
{
public static async Task<IEnumerable<JavaEntity>> SearchJava()
{
//switch (Environment.OSVersion.Platform)
//{
// case PlatformID.Win32NT:
// javaList.AddRange(await JavaSearcher.Windows.SearchJava());
// break;
// case PlatformID.Unix:
// javaList.AddRange(Unix.SerachJavaForLinuxAsync());
// break;
// case PlatformID.MacOSX:
// break;
// default:
// throw new PlatformNotSupportedException();
//}

// warning: Environment.OSVersion.Platform will have different performance in different .net planform
// detail: .net type : | system | performance
// .net framewrok: macos | Not Support
// .net Core <= 3.1 macos | Unix
// .net 5+ macos | macosx
// this problenm is fixed by follow code

if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
return await Windows.SearchJavaAsync(); // TODO: Read setting to get whether full search or not.
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
return await Unix.SearchJava();
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
return await Unix.SearchJava();
}
else
{
throw new PlatformNotSupportedException();
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,38 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;

namespace PCL2.Neo.Models.Minecraft
namespace PCL2.Neo.Models.Minecraft.Java
{
internal record JavaExist
{
public required bool IsExist { get; set; }

public required string Path { get; set; }
}
public class JavaEntity(string path)
{
public string Path = path.EndsWith('\\') ? path : path + '\\';
public string Path = path;

public bool IsUseable = true;

private void JavaInfoInit()
{
// set version
var regexMatch = Regex.Match(Output, """version "([\d._]+)""");
var match = Regex.Match(regexMatch.Success ? regexMatch.Groups[1].Value : string.Empty,
@"^(\d+)\.");
_version = match.Success ? int.Parse(match.Groups[1].Value) : 0;

if (_version == 1)
{
// java version 8
match = Regex.Match(regexMatch.Groups[1].Value, @"^1\.(\d+)\.");
_version = match.Success ? int.Parse(match.Groups[1].Value) : 0;
}

// set bit
regexMatch = Regex.Match(Output, @"\b(\d+)-Bit\b"); // get bit
_is64Bit = (regexMatch.Success ? regexMatch.Groups[1].Value : string.Empty) == "64";

// delete output
_output = null;
}

private int? _version;

public int Version
Expand All @@ -28,26 +44,15 @@ public int Version
return _version.Value;
}

// get java version code
var javaVersionMatch = Regex.Match(Output, """version "([\d._]+)""");
var match = Regex.Match(javaVersionMatch.Success ? javaVersionMatch.Groups[1].Value : string.Empty,
@"^(\d+)\.");
_version = match.Success ? int.Parse(match.Groups[1].Value) : 0;

if (_version == 1)
{
// java version 8
match = Regex.Match(javaVersionMatch.Groups[1].Value, @"^1\.(\d+)\.");
_version = match.Success ? int.Parse(match.Groups[1].Value) : 0;
// java info init
JavaInfoInit();

return _version.Value;
}

return _version.Value;
return _version!.Value;
}
}
public string JavaExe => Path + "java.exe";
public string JavaWExe => Path + "javaw.exe";

public string JavaExe => System.IO.Path.Combine(Path, "java.exe");
public string JavaWExe => System.IO.Path.Combine(Path, "javaw.exe");

private string? _output;

Expand All @@ -65,7 +70,23 @@ private string Output
}
}

public bool IsJre => !File.Exists(Path + "\\javac.exe");
private bool? _isJre = null;

public bool IsJre
{
get
{
if (_isJre != null)
{
return _isJre.Value;
}

var result = File.Exists(Path + "\\javac.exe");
_isJre = result;
return result;
}
}

public bool IsUserImport { set; get; }

private bool? _is64Bit;
Expand All @@ -79,9 +100,11 @@ public bool Is64Bit
return _is64Bit.Value;
}

var javaBitMatch = Regex.Match(Output, @"\b(\d+)-Bit\b"); // get bit
_is64Bit = (javaBitMatch.Success ? javaBitMatch.Groups[1].Value : string.Empty) == "64";
return _is64Bit.Value;

// java info init
JavaInfoInit();

return _is64Bit!.Value;
}
}

Expand All @@ -100,7 +123,7 @@ private string RunJava()
javaProcess.Start();
javaProcess.WaitForExit();

var output = javaProcess.StandardError.ReadToEnd(); // check stderr have content
var output = javaProcess.StandardError.ReadToEnd();
return output != string.Empty ? output : javaProcess.StandardOutput.ReadToEnd(); // 就是tmd stderr
}
}
Expand Down
Loading
Loading