diff --git a/app_2009scape/src/main/java/net/kdt/pojavlaunch/BaseLauncherActivity.java b/app_2009scape/src/main/java/net/kdt/pojavlaunch/BaseLauncherActivity.java index c45313f10..d467681cd 100644 --- a/app_2009scape/src/main/java/net/kdt/pojavlaunch/BaseLauncherActivity.java +++ b/app_2009scape/src/main/java/net/kdt/pojavlaunch/BaseLauncherActivity.java @@ -139,7 +139,7 @@ public abstract class BaseLauncherActivity extends BaseActivity { if (data == null) return; //final Uri uri = data.getData(); - Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.beta); + Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.miniclient); String path = uri.getPath(); //File modFile = new File(new URI(path)); diff --git a/app_2009scape/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java b/app_2009scape/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java index 6a4c1ef3a..e6f7bccc2 100644 --- a/app_2009scape/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java +++ b/app_2009scape/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java @@ -2,8 +2,10 @@ package net.kdt.pojavlaunch; import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.*; import android.os.Vibrator; +import android.util.Log; import android.view.*; import android.view.View.*; import android.view.inputmethod.InputMethodManager; @@ -91,6 +93,8 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou findViewById(R.id.keyboard).setOnTouchListener(this); findViewById(R.id.camera).setOnTouchListener(this); findViewById(R.id.mb2).setOnTouchListener(this); + + this.touchPad = findViewById(R.id.main_touchpad); touchPad.setVisibility(View.VISIBLE); @@ -187,7 +191,8 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou placeMouseAt(CallbackBridge.physicalWidth / 2, CallbackBridge.physicalHeight / 2); - final File modFile = (File) getIntent().getExtras().getSerializable("modFile"); + final File miniclient = (File) getIntent().getExtras().getSerializable("miniclient"); + final File config = new File(getFilesDir(), "config.json"); final String javaArgs = getIntent().getExtras().getString("javaArgs"); mTextureView = findViewById(R.id.installmod_surfaceview); @@ -213,7 +218,7 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou }); new Thread(() -> { try { - launchJavaRuntime(modFile, javaArgs); + launchJavaRuntime(miniclient, javaArgs,config); } catch (Throwable e) { Tools.showError(JavaGUILauncherActivity.this, e); } @@ -392,7 +397,7 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou touchPad.setVisibility(isVirtualMouseEnabled ? View.GONE : View.VISIBLE); } - public int launchJavaRuntime(File modFile, String javaArgs) { + public int launchJavaRuntime(File miniclient, String javaArgs,File config) { JREUtils.redirectAndPrintJRELog(this); try { JREUtils.jreReleaseList = JREUtils.readJREReleaseProperties(); @@ -406,13 +411,18 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou javaArgList.addAll(Arrays.asList(javaArgs.split(" "))); } else { javaArgList.add("-jar"); - javaArgList.add(modFile.getAbsolutePath()); + javaArgList.add(miniclient.getAbsolutePath()); + javaArgList.add(config.getAbsolutePath()); // Pass client config as arg0 + javaArgList.add("username=miniclientparam:"); + javaArgList.add("password=miniclientparam:"); } Logger.getInstance().appendToLog("Info: Java arguments: " + Arrays.toString(javaArgList.toArray(new String[0]))); + Log.i("Info: Java arguments: ",Arrays.toString(javaArgList.toArray(new String[0]))); // Run java on sandbox, non-overrideable. Collections.reverse(javaArgList); + javaArgList.add("-Xbootclasspath/a:" + Tools.DIR_DATA + "/pro-grade.jar"); javaArgList.add("-Djava.security.manager=net.sourceforge.prograde.sm.ProGradeJSM"); javaArgList.add("-Djava.security.policy=" + Tools.DIR_DATA + "/java_sandbox.policy"); diff --git a/app_2009scape/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java b/app_2009scape/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java index f2e3e2f89..2caaa7404 100644 --- a/app_2009scape/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java +++ b/app_2009scape/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java @@ -6,6 +6,7 @@ import static net.kdt.pojavlaunch.Tools.getFileName; import android.Manifest; import android.app.Activity; import android.app.ProgressDialog; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; @@ -19,14 +20,12 @@ import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.LinearLayout; -import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; @@ -42,7 +41,6 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.util.Arrays; public class PojavLoginActivity extends BaseActivity // MineActivity @@ -155,20 +153,20 @@ public class PojavLoginActivity extends BaseActivity barrier.setCancelable(false); barrier.show(); - Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.beta); + Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.miniclient); barrier.setMessage(PojavLoginActivity.this.getString(R.string.multirt_progress_caching)); Thread t = new Thread(()->{ try { final String name = getFileName(this, uri); - final File modInstallerFile = new File(getCacheDir(), name); - FileOutputStream fos = new FileOutputStream(modInstallerFile); + final File miniclient = new File(getCacheDir(), name); + FileOutputStream fos = new FileOutputStream(miniclient); IOUtils.copy(getContentResolver().openInputStream(uri), fos); fos.close(); PojavLoginActivity.this.runOnUiThread(() -> { barrier.dismiss(); Intent intent = new Intent(PojavLoginActivity.this, JavaGUILauncherActivity.class); - intent.putExtra("modFile", modInstallerFile); + intent.putExtra("miniclient", miniclient); startActivity(intent); }); }catch(IOException e) { @@ -219,6 +217,23 @@ public class PojavLoginActivity extends BaseActivity } } private void initMain() throws Throwable { + // Copy config.json to writable storage + // https://stackoverflow.com/questions/38590996/copy-xml-from-raw-folder-to-internal-storage-and-use-it-in-android + File file = new File(getFilesDir(), "config.json"); + try { + Context context = getApplicationContext(); + InputStream inputStream = context.getResources().openRawResource(R.raw.config); + FileOutputStream fileOutputStream = new FileOutputStream(file); + byte buf[]=new byte[1024]; + int len; + while((len=inputStream.read(buf))>0) { + fileOutputStream.write(buf,0,len); + } + fileOutputStream.close(); + inputStream.close(); + System.out.println("Write to Local"); + } catch (IOException e1) {} + mkdirs(Tools.DIR_ACCOUNT_NEW); mkdirs(Tools.DIR_GAME_HOME); mkdirs(Tools.DIR_GAME_HOME + "/lwjgl3"); diff --git a/app_2009scape/src/main/res/raw/config.json b/app_2009scape/src/main/res/raw/config.json new file mode 100644 index 000000000..8f81c7bb4 --- /dev/null +++ b/app_2009scape/src/main/res/raw/config.json @@ -0,0 +1,63 @@ +{ + "ip_management": "play.2009scape.org", + "world": 1, + "debug": { + "hd_login_region_debug_verbose": false, + "npc_debug": false, + "hd_login_region_debug": false, + "world_map_debug": false, + "item_debug": false, + "object_debug": false, + "cache_debug": false + }, + "customization": { + "slayer": { + "color": "#635a38", + "opacity": "180", + "enabled": true + }, + "login_theme": "scape main", + "rendering_options": { + "skybox": { + "skybox_color": "Coming in a future update..." + }, + "technical": { + "render_distance_increase": true + } + }, + "december_snow": false, + "right_click_menu": { + "border": { + "color": "#FFFFFF", + "opacity": "0" + }, + "background": { + "color": "#5D5447", + "opacity": "255" + }, + "styles": { + "presets": "custom", + "rs3border": false, + "Presets provide default customizations.": "rs3, classic, or custom. custom allows you to define your own values above. Classic is standard 2009." + }, + "title_bar": { + "color": "#000000", + "font_color": "#FFFFFF", + "opacity": "255" + } + }, + "xpdrops": { + "drop_mode": 0, + "track_mode": 0, + "enabled": true + }, + "launcher": { + "closeOnClientLaunch": true, + "notifyUpdates": true + } + }, + "server_port": 43594, + "ip_address": "play.2009scape.org", + "wl_port": 5555, + "js5_port": 43593 +} \ No newline at end of file diff --git a/app_2009scape/src/main/res/raw/beta.jar b/app_2009scape/src/main/res/raw/miniclient.jar similarity index 95% rename from app_2009scape/src/main/res/raw/beta.jar rename to app_2009scape/src/main/res/raw/miniclient.jar index 224bd49a4..f4a3fc6b7 100644 Binary files a/app_2009scape/src/main/res/raw/beta.jar and b/app_2009scape/src/main/res/raw/miniclient.jar differ