@@ -255,16 +255,15 @@ public static void removeJava(Path realPath) throws InterruptedException {
255255 }
256256 }
257257
258- private static int compareJavaVersion (JavaRuntime java1 , JavaRuntime java2 , GameJavaVersion suggestedJavaVersion ) {
259- if (suggestedJavaVersion != null ) {
260- boolean b1 = java1 .getParsedVersion () == suggestedJavaVersion .getMajorVersion ();
261- boolean b2 = java2 .getParsedVersion () == suggestedJavaVersion .getMajorVersion ();
258+ private static JavaRuntime chooseJava (@ Nullable JavaRuntime java1 , JavaRuntime java2 ) {
259+ if (java1 == null )
260+ return java2 ;
262261
263- if (b1 != b2 )
264- return b1 ? 1 : - 1 ;
265- }
266-
267- return java1 .getVersionNumber ().compareTo (java2 .getVersionNumber ());
262+ if (java1 . getParsedVersion () != java2 . getParsedVersion () )
263+ // Prefer the Java version that is closer to the game's recommended Java version
264+ return java1 . getParsedVersion () < java2 . getParsedVersion () ? java1 : java2 ;
265+ else
266+ return java1 .getVersionNumber ().compareTo (java2 .getVersionNumber ()) >= 0 ? java1 : java2 ;
268267 }
269268
270269 @ Nullable
@@ -280,9 +279,6 @@ public static JavaRuntime findSuitableJava(Collection<JavaRuntime> javaRuntimes,
280279 && (OperatingSystem .CURRENT_OS == OperatingSystem .WINDOWS || OperatingSystem .CURRENT_OS == OperatingSystem .MACOS )
281280 && (gameVersion == null || gameVersion .compareTo ("1.6" ) < 0 );
282281
283- GameJavaVersion suggestedJavaVersion =
284- (version != null && gameVersion != null && gameVersion .compareTo ("1.7.10" ) >= 0 ) ? version .getJavaVersion () : null ;
285-
286282 JavaRuntime mandatory = null ;
287283 JavaRuntime suggested = null ;
288284 for (JavaRuntime java : javaRuntimes ) {
@@ -310,15 +306,10 @@ public static JavaRuntime findSuitableJava(Collection<JavaRuntime> javaRuntimes,
310306 }
311307
312308 if (!violationMandatory ) {
313- if (mandatory == null ) mandatory = java ;
314- else if (compareJavaVersion (java , mandatory , suggestedJavaVersion ) > 0 )
315- mandatory = java ;
316-
317- if (!violationSuggested ) {
318- if (suggested == null ) suggested = java ;
319- else if (compareJavaVersion (java , suggested , suggestedJavaVersion ) > 0 )
320- suggested = java ;
321- }
309+ mandatory = chooseJava (mandatory , java );
310+
311+ if (!violationSuggested )
312+ suggested = chooseJava (suggested , java );
322313 }
323314 }
324315
0 commit comments