From ff855b5a5225304244c38ef24e8e82f6413dceb9 Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Fri, 25 Sep 2020 21:04:28 +0700 Subject: [PATCH] Add an option to install mod with custom args --- .../kdt/pojavlaunch/InstallModActivity.java | 15 +++-- .../kdt/pojavlaunch/MCLauncherActivity.java | 62 ++++++++++++------- app/src/main/res/values/headings_array.xml | 1 + app/src/main/res/values/strings.xml | 1 + 4 files changed, 53 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/net/kdt/pojavlaunch/InstallModActivity.java b/app/src/main/java/net/kdt/pojavlaunch/InstallModActivity.java index 6f4efac33..9e037dc5b 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/InstallModActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/InstallModActivity.java @@ -50,7 +50,8 @@ public class InstallModActivity extends LoggableActivity JREUtils.redirectAndPrintJRELog(this); final File modFile = (File) getIntent().getExtras().getSerializable("modFile"); - + final String javaArgs = getIntent().getExtras().getString("javaArgs"); + mTextureView = findViewById(R.id.installmod_surfaceview); mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener(){ @@ -68,7 +69,7 @@ public class InstallModActivity extends LoggableActivity new Thread(new Runnable(){ @Override public void run() { - launchJavaRuntime(modFile); + launchJavaRuntime(modFile, javaArgs); // finish(); } }).start(); @@ -107,7 +108,7 @@ public class InstallModActivity extends LoggableActivity // mIsResuming = true; } - private void launchJavaRuntime(File modFile) { + private void launchJavaRuntime(File modFile, String javaArgs) { try { List javaArgList = new ArrayList(); @@ -131,8 +132,12 @@ public class InstallModActivity extends LoggableActivity javaArgList.addAll(Arrays.asList(Tools.read(cacioArgOverrideFile.getAbsolutePath()).split(" "))); } - javaArgList.add("-jar"); - javaArgList.add(modFile.getAbsolutePath()); + if (javaArgs != null) { + javaArgList.addAll(Arrays.asList(javaArgs.split(" "))); + } else { + javaArgList.add("-jar"); + javaArgList.add(modFile.getAbsolutePath()); + } System.out.println(Arrays.toString(javaArgList.toArray(new String[0]))); diff --git a/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java index 751567a78..666c4cacb 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java @@ -765,17 +765,20 @@ public class MCLauncherActivity extends AppCompatActivity { switch (p2) { case 0: // Mod installer - installMod(); + installMod(false); break; - case 1: // Custom controls + case 1: // Mod installer with java args + installMod(true); + break; + case 2: // Custom controls if (Tools.enableDevFeatures) { startActivity(new Intent(MCLauncherActivity.this, CustomControlsActivity.class)); } break; - case 2: // Settings + case 3: // Settings startActivity(new Intent(MCLauncherActivity.this, LauncherPreferenceActivity.class)); break; - case 3:{ // About + case 4: { // About final AlertDialog.Builder aboutB = new AlertDialog.Builder(MCLauncherActivity.this); aboutB.setTitle(R.string.mcl_option_about); try @@ -797,26 +800,43 @@ public class MCLauncherActivity extends AppCompatActivity builder.show(); } - private void installMod() { + private void installMod(boolean customJavaArgs) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.alerttitle_installmod); - builder.setPositiveButton(android.R.string.cancel, null); + builder.setNegativeButton(android.R.string.cancel, null); + + final AlertDialog dialog; + if (customJavaArgs) { + final EditText edit = new EditText(this); + edit.setSingleLine(); + edit.setHint("-jar/-cp /path/to/file.jar ..."); + builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener(){ + @Override + public void onClick(DialogInterface di, int i) { + Intent intent = new Intent(MCLauncherActivity.this, InstallModActivity.class); + intent.putExtra("javaArgs", edit.getText().toString()); + startActivity(intent); + } + }); + dialog = builder.create(); + dialog.setView(edit); + } else { + dialog = builder.create(); + FileListView flv = new FileListView(this); + flv.setFileSelectedListener(new FileSelectedListener(){ - final AlertDialog dialog = builder.create(); - FileListView flv = new FileListView(this); - flv.setFileSelectedListener(new FileSelectedListener(){ - - @Override - public void onFileSelected(File file, String path, String name) { - if (name.endsWith(".jar")) { - Intent intent = new Intent(MCLauncherActivity.this, InstallModActivity.class); - intent.putExtra("modFile", file); - startActivity(intent); - dialog.dismiss(); - } - } - }); - dialog.setView(flv); + @Override + public void onFileSelected(File file, String path, String name) { + if (name.endsWith(".jar")) { + Intent intent = new Intent(MCLauncherActivity.this, InstallModActivity.class); + intent.putExtra("modFile", file); + startActivity(intent); + dialog.dismiss(); + } + } + }); + dialog.setView(flv); + } dialog.show(); } diff --git a/app/src/main/res/values/headings_array.xml b/app/src/main/res/values/headings_array.xml index c1e73b695..3c6001b8d 100644 --- a/app/src/main/res/values/headings_array.xml +++ b/app/src/main/res/values/headings_array.xml @@ -2,6 +2,7 @@ @string/mcl_option_modinstall + @string/mcl_option_modinstallwitharg @string/mcl_option_customcontrol @string/mcl_option_settings @string/mcl_option_about diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 820285292..3950e2b84 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -86,6 +86,7 @@ Options Mod manager (no function) Install mod (Forge, LabyMod, Fabric,...) + Install mod (with custom arguments) Check for update Custom controls Settings