diff --git a/app_pojavlauncher/src/main/AndroidManifest.xml b/app_pojavlauncher/src/main/AndroidManifest.xml index 28c2ea9e0..143d4e014 100644 --- a/app_pojavlauncher/src/main/AndroidManifest.xml +++ b/app_pojavlauncher/src/main/AndroidManifest.xml @@ -10,6 +10,7 @@ android:maxSdkVersion="28"/> + > { private final Spinner mVersionSpinner; private final Spinner mJavaRuntimeSpinner; private final Spinner mRendererSpinner; + private final EditText mPathSelectionEditText; private final List mRenderNames; private final AlertDialog mDialog; private String mSelectedVersionId; private String mEditingProfile; private final EditSaveCallback mEditSaveCallback; private final Handler mUiThreadHandler; + public static MinecraftProfile generateTemplate() { MinecraftProfile TEMPLATE = new MinecraftProfile(); TEMPLATE.name = "New"; @@ -75,6 +78,9 @@ public class ProfileEditor implements ExtraListener> { mRendererSpinner.setAdapter(new ArrayAdapter<>(context, android.R.layout.simple_spinner_dropdown_item,renderList)); } mProfileIconImageView = mMainView.findViewById(R.id.vprof_editor_icon); + ((TextView)mMainView.findViewById(R.id.vprof_editor_beginPathView)).setText(Tools.DIR_GAME_HOME+"/"); + mPathSelectionEditText = mainView.findViewById(R.id.vprof_editor_path); + builder.setPositiveButton(R.string.global_save,this::save); builder.setNegativeButton(android.R.string.cancel,(dialog,which)->destroy(dialog)); builder.setNeutralButton(R.string.global_delete,(dialogInterface, i) -> { @@ -144,8 +150,12 @@ public class ProfileEditor implements ExtraListener> { } } ArrayList versions = (ArrayList) ExtraCore.getValue(ExtraConstants.VERSION_LIST); - BaseLauncherActivity.updateVersionSpinner(context,versions, mVersionSpinner, mSelectedVersionId); - mDialog.show(); + + BaseLauncherActivity.updateVersionSpinner(context,versions,versionSpinner, selectedVersionId); + if(minecraftProfile.gameDir != null && minecraftProfile.gameDir.startsWith(Tools.LAUNCHERPROFILES_RTPREFIX)) { + pathSelectionEditor.setText(minecraftProfile.gameDir.substring(Tools.LAUNCHERPROFILES_RTPREFIX.length())); + } + dialog.show(); return true; } public void save(DialogInterface dialog, int which) { @@ -175,8 +185,13 @@ public class ProfileEditor implements ExtraListener> { }else{ profile.javaDir = Tools.LAUNCHERPROFILES_RTPREFIX+selectedRuntime.name; } + if(mRendererSpinner.getSelectedItemPosition() == mRenderNames.size()) profile.pojavRendererName = null; else profile.pojavRendererName = mRenderNames.get(mRendererSpinner.getSelectedItemPosition()); + String selectedPath = mPathSelectionEditText.getText().toString(); + if(!selectedPath.isEmpty()) { + profile.gameDir = Tools.LAUNCHERPROFILES_RTPREFIX+selectedPath; + } LauncherProfiles.mainProfileJson.profiles.put(mEditingProfile,profile); mEditSaveCallback.onSave(mEditingProfile,isNew, false); destroy(dialog); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/V117CompatUtil.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/V117CompatUtil.java index 6bb2a53df..cbd2b1d2e 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/V117CompatUtil.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/V117CompatUtil.java @@ -113,10 +113,11 @@ public class V117CompatUtil { String renderer; String gamePath; LauncherProfiles.update(); - MinecraftProfile prof = LauncherProfiles.mainProfileJson.profiles.get(((BaseLauncherActivity)activity).mProfile.selectedProfile); + MinecraftProfile prof = LauncherProfiles.mainProfileJson.profiles.get(((BaseLauncherActivity)ctx).mProfile.selectedProfile); if(prof == null) throw new MinecraftDownloaderTask.SilentException(); renderer = prof.pojavRendererName != null ? prof.pojavRendererName : LauncherPreferences.PREF_RENDERER; - gamePath = prof.gameDir != null ? prof.gameDir : Tools.DIR_GAME_NEW; + gamePath = prof.gameDir != null && prof.gameDir.startsWith(Tools.LAUNCHERPROFILES_RTPREFIX) ? prof.gameDir.replace(Tools.LAUNCHERPROFILES_RTPREFIX,Tools.DIR_GAME_HOME + "/") : Tools.DIR_GAME_NEW; + //String if(renderer.equals("vulkan_zink") || renderer.equals("opengles3_virgl")) return; //don't install for zink/virgl users; diff --git a/app_pojavlauncher/src/main/jni/input_bridge_v3.c b/app_pojavlauncher/src/main/jni/input_bridge_v3.c index 14b88c861..12069bffb 100644 --- a/app_pojavlauncher/src/main/jni/input_bridge_v3.c +++ b/app_pojavlauncher/src/main/jni/input_bridge_v3.c @@ -381,13 +381,13 @@ JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSetWindowAttrib( return; // nothing to do yet } - jclass glfwClazz = (*runtimeJNIEnvPtr_ANDROID)->FindClass(runtimeJNIEnvPtr_ANDROID, "org/lwjgl/glfw/GLFW"); + jclass glfwClazz = (*runtimeJNIEnvPtr_JRE)->FindClass(runtimeJNIEnvPtr_JRE, "org/lwjgl/glfw/GLFW"); assert(glfwClazz != NULL); - jmethodID glfwMethod = (*runtimeJNIEnvPtr_ANDROID)->GetStaticMethodID(runtimeJNIEnvPtr_ANDROID, glfwMethod, "glfwSetWindowAttrib", "(JII)V"); + jmethodID glfwMethod = (*runtimeJNIEnvPtr_JRE)->GetStaticMethodID(runtimeJNIEnvPtr_JRE, glfwClazz, "glfwSetWindowAttrib", "(JII)V"); assert(glfwMethod != NULL); - (*runtimeJNIEnvPtr_ANDROID)->CallStaticVoidMethod( - runtimeJNIEnvPtr_ANDROID, + (*runtimeJNIEnvPtr_JRE)->CallStaticVoidMethod( + runtimeJNIEnvPtr_JRE, glfwClazz, glfwMethod, (jlong) showingWindow, attrib, value ); diff --git a/app_pojavlauncher/src/main/res/layout/version_profile_editor.xml b/app_pojavlauncher/src/main/res/layout/version_profile_editor.xml index 4b2bb07f3..8dca17ca6 100644 --- a/app_pojavlauncher/src/main/res/layout/version_profile_editor.xml +++ b/app_pojavlauncher/src/main/res/layout/version_profile_editor.xml @@ -62,8 +62,9 @@ android:layout_marginEnd="16dp" android:minHeight="48dp" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/vprof_editior_profile_name" /> + app:layout_constraintTop_toBottomOf="@+id/vprof_editor_path" /> + + + + \ No newline at end of file