[Update] Auto-select a compartible runtime if the default one isn't compartible enough

This commit is contained in:
artdeell 2021-07-15 12:23:14 +03:00
parent b8a25f3791
commit b21528a7db
2 changed files with 19 additions and 3 deletions

View File

@ -90,7 +90,12 @@ public class MinecraftDownloaderTask extends AsyncTask<String, String, Throwable
//Now we have the reliable information to check if our runtime settings are good enough //Now we have the reliable information to check if our runtime settings are good enough
if(verInfo.javaVersion != null) { //1.17+ if(verInfo.javaVersion != null) { //1.17+
PerVersionConfig.update();
PerVersionConfig.VersionConfig cfg = PerVersionConfig.configMap.get(p1[0]); PerVersionConfig.VersionConfig cfg = PerVersionConfig.configMap.get(p1[0]);
if(cfg == null) {
cfg = new PerVersionConfig.VersionConfig();
PerVersionConfig.configMap.put(p1[0],cfg);
}
MultiRTUtils.Runtime r = cfg.selectedRuntime != null?MultiRTUtils.read(cfg.selectedRuntime):MultiRTUtils.read(LauncherPreferences.PREF_DEFAULT_RUNTIME); MultiRTUtils.Runtime r = cfg.selectedRuntime != null?MultiRTUtils.read(cfg.selectedRuntime):MultiRTUtils.read(LauncherPreferences.PREF_DEFAULT_RUNTIME);
if(r.javaVersion < verInfo.javaVersion.majorVersion) { if(r.javaVersion < verInfo.javaVersion.majorVersion) {
String appropriateRuntime = MultiRTUtils.getNearestJREName(verInfo.javaVersion.majorVersion); String appropriateRuntime = MultiRTUtils.getNearestJREName(verInfo.javaVersion.majorVersion);
@ -98,7 +103,16 @@ public class MinecraftDownloaderTask extends AsyncTask<String, String, Throwable
cfg.selectedRuntime = appropriateRuntime; cfg.selectedRuntime = appropriateRuntime;
PerVersionConfig.update(); PerVersionConfig.update();
}else{ }else{
return new Exception("Unable to find a compatible Java Runtime for this version"); mActivity.runOnUiThread(()->{
AlertDialog.Builder bldr = new AlertDialog.Builder(mActivity);
bldr.setTitle(R.string.global_error);
bldr.setMessage(R.string.multirt_nocompartiblert);
bldr.setPositiveButton(android.R.string.ok,(dialog, which)->{
dialog.dismiss();
});
bldr.show();
});
throw new SilentException();
} }
} //if else, we are satisfied } //if else, we are satisfied
} }
@ -223,7 +237,7 @@ public class MinecraftDownloaderTask extends AsyncTask<String, String, Throwable
} }
} }
private int addProgress = 0; private int addProgress = 0;
public static class SilentException extends Exception{}
public void zeroProgress() { public void zeroProgress() {
addProgress = 0; addProgress = 0;
} }
@ -316,7 +330,7 @@ public class MinecraftDownloaderTask extends AsyncTask<String, String, Throwable
mActivity.mLaunchProgress.setMax(100); mActivity.mLaunchProgress.setMax(100);
mActivity.mLaunchProgress.setProgress(0); mActivity.mLaunchProgress.setProgress(0);
mActivity.statusIsLaunching(false); mActivity.statusIsLaunching(false);
if(p1 != null) { if(p1 != null && !(p1 instanceof SilentException)) {
p1.printStackTrace(); p1.printStackTrace();
Tools.showError(mActivity, p1); Tools.showError(mActivity, p1);
} }
@ -407,6 +421,7 @@ public class MinecraftDownloaderTask extends AsyncTask<String, String, Throwable
File objectsDir = new File(outputDir, "objects"); File objectsDir = new File(outputDir, "objects");
zeroProgress(); zeroProgress();
for(String assetKey : assetsObjects.keySet()) { for(String assetKey : assetsObjects.keySet()) {
if(!mActivity.mIsAssetsProcessing) break;
JAssetInfo asset = assetsObjects.get(assetKey); JAssetInfo asset = assetsObjects.get(assetKey);
assetsSizeBytes+=asset.size; assetsSizeBytes+=asset.size;
String assetPath = asset.hash.substring(0, 2) + "/" + asset.hash; String assetPath = asset.hash.substring(0, 2) + "/" + asset.hash;

View File

@ -222,4 +222,5 @@
<string name="multirt_config_setdefault">Set default</string> <string name="multirt_config_setdefault">Set default</string>
<string name="multirt_config_setdefault_already">Default</string> <string name="multirt_config_setdefault_already">Default</string>
<string name="multirt_config_removeerror_last">You must have at least one Java Runtime installed</string> <string name="multirt_config_removeerror_last">You must have at least one Java Runtime installed</string>
<string name="multirt_nocompartiblert">Can\'t find any compartible Java Runtime</string>
</resources> </resources>