├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ └── feature_request.yml ├── stale.yml └── workflows │ └── android.yml ├── .gitignore ├── .vscode └── settings.json ├── GPLAY_PRIVACY_POLICY ├── LICENSE ├── README.md ├── app_pojavlauncher ├── app_pojavlauncher.iml ├── build.gradle ├── debug.keystore ├── libs │ ├── ExagearApacheCommons.jar │ └── gson-2.8.6.jar ├── proguard-rules.pro ├── qcxrPojav.keystore └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── ModDescription.css │ ├── TitleWorld │ │ ├── DIM-1 │ │ │ ├── data │ │ │ │ └── raids.dat │ │ │ ├── entities │ │ │ │ ├── r.-1.-1.mca │ │ │ │ ├── r.-1.0.mca │ │ │ │ ├── r.0.-1.mca │ │ │ │ └── r.0.0.mca │ │ │ ├── poi │ │ │ │ ├── r.-1.-1.mca │ │ │ │ ├── r.-1.0.mca │ │ │ │ ├── r.0.-1.mca │ │ │ │ └── r.0.0.mca │ │ │ └── region │ │ │ │ ├── r.-1.-1.mca │ │ │ │ ├── r.-1.0.mca │ │ │ │ ├── r.0.-1.mca │ │ │ │ └── r.0.0.mca │ │ ├── DIM1 │ │ │ └── data │ │ │ │ └── raids_end.dat │ │ ├── advancements │ │ │ ├── 1b83cf52-6de7-4072-a8af-bad111ef97b0.json │ │ │ └── 9983eb58-0068-46e4-9925-a594a3ce0d95.json │ │ ├── data │ │ │ └── raids.dat │ │ ├── entities │ │ │ ├── r.-1.-1.mca │ │ │ ├── r.-1.0.mca │ │ │ ├── r.0.-1.mca │ │ │ └── r.0.0.mca │ │ ├── icon.png │ │ ├── level.dat │ │ ├── level.dat_old │ │ ├── playerdata │ │ │ ├── 1b83cf52-6de7-4072-a8af-bad111ef97b0.dat │ │ │ ├── 1b83cf52-6de7-4072-a8af-bad111ef97b0.dat_old │ │ │ ├── 9983eb58-0068-46e4-9925-a594a3ce0d95.dat │ │ │ └── 9983eb58-0068-46e4-9925-a594a3ce0d95.dat_old │ │ ├── poi │ │ │ ├── r.-1.-1.mca │ │ │ ├── r.-1.0.mca │ │ │ ├── r.0.-1.mca │ │ │ └── r.0.0.mca │ │ ├── region │ │ │ ├── r.-1.-1.mca │ │ │ ├── r.-1.-2.mca │ │ │ ├── r.-1.0.mca │ │ │ ├── r.0.-1.mca │ │ │ ├── r.0.-2.mca │ │ │ └── r.0.0.mca │ │ ├── session.lock │ │ └── stats │ │ │ ├── 1b83cf52-6de7-4072-a8af-bad111ef97b0.json │ │ │ └── 9983eb58-0068-46e4-9925-a594a3ce0d95.json │ ├── about_en.txt │ ├── arc_dns_injector.jar │ ├── components │ │ ├── caciocavallo │ │ │ ├── ResConfHack.jar │ │ │ ├── cacio-androidnw-1.10-SNAPSHOT.jar │ │ │ ├── cacio-shared-1.10-SNAPSHOT.jar │ │ │ └── version │ │ ├── lwjgl3 │ │ │ ├── jsr305.jar │ │ │ ├── lwjgl-glfw-classes-3.2.3.jar │ │ │ └── version │ │ └── security │ │ │ ├── java_sandbox.policy │ │ │ └── pro-grade.jar │ ├── font │ │ └── LICENSE_OFL.txt │ ├── jsons │ │ ├── curseforge-compat.json │ │ ├── modmanager.json │ │ └── modrinth-compat.json │ ├── language_list.txt │ ├── launcher_profiles.json │ ├── options.txt │ ├── resolv.conf │ ├── servers.dat │ ├── sodium-extra.properties │ └── sodium-mixins.properties │ ├── java │ ├── com │ │ ├── ipaulpro │ │ │ └── afilechooser │ │ │ │ └── FileListAdapter.java │ │ ├── kdt │ │ │ ├── DefocusableScrollView.java │ │ │ ├── LoggerView.java │ │ │ ├── mcgui │ │ │ │ ├── MineButton.java │ │ │ │ └── MineEditText.java │ │ │ └── pickafile │ │ │ │ ├── FileListView.java │ │ │ │ ├── FileSelectedListener.java │ │ │ │ └── SortFileName.java │ │ └── oracle │ │ │ └── dalvik │ │ │ └── VMLauncher.java │ ├── net │ │ └── kdt │ │ │ └── pojavlaunch │ │ │ ├── AWTCanvasView.java │ │ │ ├── AWTInputBridge.java │ │ │ ├── AWTInputEvent.java │ │ │ ├── Architecture.java │ │ │ ├── BaseActivity.java │ │ │ ├── BaseLauncherActivity.java │ │ │ ├── BaseMainActivity.java │ │ │ ├── CustomControlsActivity.java │ │ │ ├── DisplayableLocale.java │ │ │ ├── EfficientAndroidLWJGLKeycode.java │ │ │ ├── ExitActivity.java │ │ │ ├── FatalErrorActivity.java │ │ │ ├── ImportControlActivity.java │ │ │ ├── JAssetInfo.java │ │ │ ├── JAssets.java │ │ │ ├── JMinecraftVersionList.java │ │ │ ├── JavaGUILauncherActivity.java │ │ │ ├── Logger.java │ │ │ ├── LwjglGlfwKeycode.java │ │ │ ├── MCProfile.java │ │ │ ├── MCXRLoader.java │ │ │ ├── MainActivity.java │ │ │ ├── MinecraftGLView.java │ │ │ ├── MinecraftLEGLView.java │ │ │ ├── PojavApplication.java │ │ │ ├── PojavLauncherActivity.java │ │ │ ├── PojavLoginActivity.java │ │ │ ├── PojavMigrator.java │ │ │ ├── PojavProfile.java │ │ │ ├── SingleTapConfirm.java │ │ │ ├── TapDetector.java │ │ │ ├── Tools.java │ │ │ ├── Touchpad.java │ │ │ ├── authenticator │ │ │ ├── microsoft │ │ │ │ ├── MicrosoftAuthTask.java │ │ │ │ ├── Msa.java │ │ │ │ └── ui │ │ │ │ │ └── MicrosoftLoginGUIActivity.java │ │ │ └── mojang │ │ │ │ ├── InvalidateTokenTask.java │ │ │ │ ├── RefreshListener.java │ │ │ │ └── yggdrasil │ │ │ │ ├── ErrorResponse.java │ │ │ │ ├── NetworkResponse.java │ │ │ │ ├── Profile.java │ │ │ │ ├── RefreshRequest.java │ │ │ │ └── YggdrasilAuthenticator.java │ │ │ ├── customcontrols │ │ │ ├── ControlData.java │ │ │ ├── ControlDrawerData.java │ │ │ ├── ControlLayout.java │ │ │ ├── CustomControls.java │ │ │ ├── LayoutConverter.java │ │ │ ├── TouchCharInput.java │ │ │ ├── buttons │ │ │ │ ├── ControlButton.java │ │ │ │ ├── ControlDrawer.java │ │ │ │ └── ControlSubButton.java │ │ │ ├── gamepad │ │ │ │ ├── Gamepad.java │ │ │ │ ├── GamepadButton.java │ │ │ │ ├── GamepadDpad.java │ │ │ │ ├── GamepadJoystick.java │ │ │ │ └── GamepadMap.java │ │ │ └── handleview │ │ │ │ ├── ActionPopupWindow.java │ │ │ │ ├── EditControlButtonPopup.java │ │ │ │ ├── EditControlDrawerPopup.java │ │ │ │ ├── EditControlSubButtonPopup.java │ │ │ │ ├── HandleView.java │ │ │ │ ├── PinnedPopupWindow.java │ │ │ │ ├── PositionListener.java │ │ │ │ ├── SelectionEndHandleView.java │ │ │ │ └── ViewPositionListener.java │ │ │ ├── extra │ │ │ ├── ExtraCore.java │ │ │ └── ExtraListener.java │ │ │ ├── fragments │ │ │ ├── LauncherFragment.java │ │ │ └── ModsFragment.java │ │ │ ├── modmanager │ │ │ ├── ModData.java │ │ │ ├── ModManager.java │ │ │ ├── State.java │ │ │ └── api │ │ │ │ ├── Curseforge.java │ │ │ │ ├── Fabric.java │ │ │ │ ├── Github.java │ │ │ │ ├── Modrinth.java │ │ │ │ └── Quilt.java │ │ │ ├── multirt │ │ │ ├── MultiRTConfigDialog.java │ │ │ ├── MultiRTUtils.java │ │ │ ├── RTRecyclerViewAdapter.java │ │ │ ├── RTSpinnerAdapter.java │ │ │ └── Runtime.java │ │ │ ├── prefs │ │ │ ├── BackButtonPreference.java │ │ │ ├── ControlOffsetPreference.java │ │ │ ├── CustomSeekBarPreference.java │ │ │ ├── LauncherPreferences.java │ │ │ ├── PerVersionConfigDialog.java │ │ │ ├── RuntimeManagerPreference.java │ │ │ └── screens │ │ │ │ ├── LauncherPreferenceControlFragment.java │ │ │ │ ├── LauncherPreferenceExperimentalFragment.java │ │ │ │ ├── LauncherPreferenceFragment.java │ │ │ │ ├── LauncherPreferenceJavaFragment.java │ │ │ │ ├── LauncherPreferenceMiscellaneousFragment.java │ │ │ │ └── LauncherPreferenceVideoFragment.java │ │ │ ├── scoped │ │ │ └── GameFolderProvider.java │ │ │ ├── tasks │ │ │ ├── MinecraftDownloaderTask.java │ │ │ └── RefreshVersionListTask.java │ │ │ ├── utils │ │ │ ├── APIUtils.java │ │ │ ├── DownloadUtils.java │ │ │ ├── FileUtils.java │ │ │ ├── JREUtils.java │ │ │ ├── JSONUtils.java │ │ │ ├── LocaleUtils.java │ │ │ ├── MCOptionUtils.java │ │ │ ├── MathUtils.java │ │ │ ├── UiUitls.java │ │ │ └── V117CompatUtil.java │ │ │ └── value │ │ │ ├── AccountSkin.java │ │ │ ├── DependentLibrary.java │ │ │ ├── ForgeInstallProfile.java │ │ │ ├── MinecraftAccount.java │ │ │ ├── MinecraftClientInfo.java │ │ │ ├── MinecraftLibraryArtifact.java │ │ │ ├── PerVersionConfig.java │ │ │ └── launcherprofiles │ │ │ ├── LauncherProfiles.java │ │ │ ├── MinecraftAuthenticationDatabase.java │ │ │ ├── MinecraftLauncherProfiles.java │ │ │ ├── MinecraftLauncherSettings.java │ │ │ ├── MinecraftProfile.java │ │ │ ├── MinecraftResolution.java │ │ │ └── MinecraftSelectedUser.java │ └── org │ │ └── lwjgl │ │ └── glfw │ │ └── CallbackBridge.java │ ├── jni │ ├── Android.mk │ ├── Application.mk │ ├── GL │ │ ├── gl.h │ │ ├── glext.h │ │ └── osmesa.h │ ├── awt_bridge.c │ ├── awt_xawt │ │ └── xawt_fake.c │ ├── egl_bridge.c │ ├── input_bridge_v1.c │ ├── input_bridge_v2.c │ ├── input_bridge_v3.c │ ├── jre_launcher.c │ ├── log.h │ ├── mcxr_loader.cpp │ ├── stdio_is.c │ ├── utils.c │ ├── utils.h │ └── xhook │ │ ├── queue.h │ │ ├── tree.h │ │ ├── xh_core.c │ │ ├── xh_core.h │ │ ├── xh_elf.c │ │ ├── xh_elf.h │ │ ├── xh_errno.h │ │ ├── xh_jni.c │ │ ├── xh_log.c │ │ ├── xh_log.h │ │ ├── xh_util.c │ │ ├── xh_util.h │ │ ├── xh_version.c │ │ ├── xh_version.h │ │ ├── xhook.c │ │ └── xhook.h │ ├── jniLibs │ ├── arm64-v8a │ │ ├── libOSMesa_8.so │ │ ├── libgl4es_114.so │ │ ├── libgl4es_115.so │ │ ├── libjnidispatch.so │ │ ├── liblwjgl.so │ │ ├── liblwjgl_opengl.so │ │ ├── liblwjgl_opengles.so │ │ ├── liblwjgl_stb.so │ │ ├── libopenal.so │ │ ├── libopenxr_loader.so │ │ ├── libvgpu.so │ │ └── libvirgl_test_server.so │ ├── armeabi-v7a │ │ ├── libgl4es_114.so │ │ └── libvgpu.so │ ├── x86 │ │ ├── libgl4es_114.so │ │ └── libvgpu.so │ └── x86_64 │ │ ├── libgl4es_114.so │ │ └── libvgpu.so │ └── res │ ├── drawable-anydpi-v21 │ └── ic_folder.xml │ ├── drawable-hdpi │ ├── ic_file.png │ ├── ic_folder.png │ ├── ic_setting_disable_gestures.png │ ├── ic_setting_freeform.png │ ├── ic_setting_lib_check.png │ ├── ic_setting_ram.png │ └── ic_setting_tap_length.png │ ├── drawable-mdpi │ ├── ic_file.png │ ├── ic_folder.png │ ├── ic_menu_java.png │ ├── ic_menu_news.png │ ├── ic_menu_no_news.png │ ├── ic_menu_settings.png │ ├── ic_menu_warning.png │ ├── ic_remove.png │ ├── ic_setting_btn_scale.png │ ├── ic_setting_jre_args.png │ └── ic_setting_mouse_pointer.png │ ├── drawable-xhdpi │ ├── ic_file.png │ ├── ic_folder.png │ └── ic_setting_hide_sidebar.png │ ├── drawable-xxhdpi │ ├── fabric_logo.png │ ├── ic_file.png │ └── ic_folder.png │ ├── drawable │ ├── bg.png │ ├── button.jpg │ ├── control_button.xml │ ├── control_button_normal.xml │ ├── control_button_pressed.xml │ ├── control_side_action_window.9.png │ ├── grassblock.xml │ ├── ic_arrow_back_white.xml │ ├── ic_gamepad_pointer.png │ ├── ic_logo.png │ ├── ic_mouse_pointer.png │ ├── ic_setting_ignore_notch.png │ ├── ic_setting_mouse_pointer_spd.png │ ├── ic_setting_resolution_scaler.png │ ├── ic_setting_sign_in_background.png │ ├── ic_view_handle.xml │ ├── marker_gray.xml │ ├── marker_green.xml │ ├── marker_red.xml │ ├── marker_yellow.xml │ ├── menu_background.xml │ ├── mine_button_background.xml │ ├── mine_button_focused.9.png │ ├── mine_button_unfocused.9.png │ ├── modsbutton.png │ ├── no_focus_shown.xml │ ├── pojav_logo.png │ ├── qc512.png │ ├── questcraftxp.png │ └── side.png │ ├── font │ ├── minecraft_ten.ttf │ ├── minecrafter.ttf │ └── noto_sans_bold.ttf │ ├── layout │ ├── activity_basemain.xml │ ├── activity_custom_controls.xml │ ├── activity_import_control.xml │ ├── activity_java_gui_launcher.xml │ ├── activity_pojav_launcher.xml │ ├── activity_pojav_login.xml │ ├── control_action_popup_text.xml │ ├── dialog_control_button_setting.xml │ ├── dialog_control_offset_preference.xml │ ├── dialog_live_mouse_speed_editor.xml │ ├── dialog_per_version_control.xml │ ├── dialog_select_account.xml │ ├── fragment_console_log.xml │ ├── fragment_mods.xml │ ├── fragment_news.xml │ ├── item_minecraft_account.xml │ ├── item_mod.xml │ ├── item_multirt_runtime.xml │ ├── start_screen.xml │ └── view_logger.xml │ ├── menu │ ├── menu_customctrl.xml │ ├── menu_runopt.xml │ └── menu_versionopt.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── values-af │ └── strings.xml │ ├── values-ar │ └── strings.xml │ ├── values-ba │ └── strings.xml │ ├── values-ca │ └── strings.xml │ ├── values-cs │ └── strings.xml │ ├── values-da │ └── strings.xml │ ├── values-de │ └── strings.xml │ ├── values-el │ └── strings.xml │ ├── values-en-rGB │ └── strings.xml │ ├── values-en-rUD │ └── strings.xml │ ├── values-en │ └── strings.xml │ ├── values-es │ └── strings.xml │ ├── values-fa-rIR │ └── strings.xml │ ├── values-fi │ └── strings.xml │ ├── values-fil │ └── strings.xml │ ├── values-fr │ └── strings.xml │ ├── values-hi │ └── strings.xml │ ├── values-hu │ └── strings.xml │ ├── values-in │ └── strings.xml │ ├── values-it │ └── strings.xml │ ├── values-iw │ └── strings.xml │ ├── values-ja │ └── strings.xml │ ├── values-kk │ └── strings.xml │ ├── values-ko │ └── strings.xml │ ├── values-la │ └── strings.xml │ ├── values-lol-rAA │ └── strings.xml │ ├── values-lt │ └── strings.xml │ ├── values-ms │ └── strings.xml │ ├── values-nl │ └── strings.xml │ ├── values-no │ └── strings.xml │ ├── values-pl │ └── strings.xml │ ├── values-pt-rBR │ └── strings.xml │ ├── values-pt │ └── strings.xml │ ├── values-ro │ └── strings.xml │ ├── values-rpr │ └── strings.xml │ ├── values-ru │ └── strings.xml │ ├── values-sk-rSK │ └── strings.xml │ ├── values-sr-rCS │ └── strings.xml │ ├── values-sr │ └── strings.xml │ ├── values-sv │ └── strings.xml │ ├── values-th │ └── strings.xml │ ├── values-tr │ └── strings.xml │ ├── values-tt │ └── strings.xml │ ├── values-uk │ └── strings.xml │ ├── values-vi │ └── strings.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── dimens.xml │ ├── headings_array.xml │ ├── ic_launcher_background.xml │ ├── strings.xml │ └── styles.xml │ └── xml │ ├── pref_control.xml │ ├── pref_experimental.xml │ ├── pref_java.xml │ ├── pref_main.xml │ ├── pref_misc.xml │ └── pref_video.xml ├── arc_dns_injector ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── git │ └── artdeell │ └── arcdns │ ├── ArcDNSInjectorAgent.java │ ├── CacheUtilCommons.java │ ├── CacheUtil_J8.java │ ├── CacheUtil_J9.java │ └── other │ └── JavaVersion.java ├── build.gradle ├── crowdin.yml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── jre_lwjgl3glfw ├── build.gradle ├── jre_lwjgl3glfw.iml ├── libs │ ├── jsr305.jar │ ├── lwjgl-jemalloc.jar │ ├── lwjgl-openal.jar │ ├── lwjgl-opengl.jar │ ├── lwjgl-stb.jar │ ├── lwjgl-tinyfd.jar │ └── lwjgl.jar └── src │ └── main │ └── java │ ├── android │ └── util │ │ ├── ArrayMap.java │ │ ├── ContainerHelpers.java │ │ ├── EmptyArray.java │ │ ├── MapCollections.java │ │ └── Objects.java │ ├── net │ └── minecraft │ │ └── client │ │ └── ClientBrandRetriever.java.z │ └── org │ └── lwjgl │ ├── BufferChecks.java │ ├── BufferUtils.java.z │ ├── LWJGLException.java │ ├── LWJGLUtil.java │ ├── MemoryUtil.java.z │ ├── PointerBuffer.java.z │ ├── PointerWrapper.java │ ├── PointerWrapperAbstract.java │ ├── Sys.java │ ├── glfw │ ├── CallbackBridge.java │ ├── Callbacks.java │ ├── EventLoop.java │ ├── GLFW.java │ ├── GLFWCharCallback.java │ ├── GLFWCharCallbackI.java │ ├── GLFWCharModsCallback.java │ ├── GLFWCharModsCallbackI.java │ ├── GLFWCursorEnterCallback.java │ ├── GLFWCursorEnterCallbackI.java │ ├── GLFWCursorPosCallback.java │ ├── GLFWCursorPosCallbackI.java │ ├── GLFWDropCallback.java │ ├── GLFWDropCallbackI.java │ ├── GLFWErrorCallback.java │ ├── GLFWErrorCallbackI.java │ ├── GLFWFramebufferSizeCallback.java │ ├── GLFWFramebufferSizeCallbackI.java │ ├── GLFWGamepadState.java │ ├── GLFWGammaRamp.java │ ├── GLFWImage.java │ ├── GLFWJoystickCallback.java │ ├── GLFWJoystickCallbackI.java │ ├── GLFWKeyCallback.java │ ├── GLFWKeyCallbackI.java │ ├── GLFWMonitorCallback.java │ ├── GLFWMonitorCallbackI.java │ ├── GLFWMouseButtonCallback.java │ ├── GLFWMouseButtonCallbackI.java │ ├── GLFWNativeGLX.java │ ├── GLFWScrollCallback.java │ ├── GLFWScrollCallbackI.java │ ├── GLFWVidMode.java │ ├── GLFWWindowCloseCallback.java │ ├── GLFWWindowCloseCallbackI.java │ ├── GLFWWindowContentScaleCallback.java │ ├── GLFWWindowContentScaleCallbackI.java │ ├── GLFWWindowFocusCallback.java │ ├── GLFWWindowFocusCallbackI.java │ ├── GLFWWindowIconifyCallback.java │ ├── GLFWWindowIconifyCallbackI.java │ ├── GLFWWindowMaximizeCallback.java │ ├── GLFWWindowMaximizeCallbackI.java │ ├── GLFWWindowPosCallback.java │ ├── GLFWWindowPosCallbackI.java │ ├── GLFWWindowProperties.java │ ├── GLFWWindowRefreshCallback.java │ ├── GLFWWindowRefreshCallbackI.java │ ├── GLFWWindowSizeCallback.java │ ├── GLFWWindowSizeCallbackI.java │ └── package-info.java │ ├── input │ ├── Controller.java │ ├── Controllers.java │ ├── Cursor.java │ ├── EventQueue.java │ ├── GLFWController.java │ ├── GLFWInputImplementation.java │ ├── KeyCodes.java │ ├── Keyboard.java │ └── Mouse.java │ ├── openal │ ├── AL.java │ ├── AL10.java │ ├── ALC10.java │ ├── ALCcontext.java │ ├── ALCdevice.java │ ├── EFX10.java │ ├── EFXUtil.java │ ├── OpenALException.java │ └── Util.java │ ├── opengl │ ├── ARBBufferObject.java │ ├── ARBShaderObjects.java │ ├── AWTGLCanvas.java │ ├── Context.java │ ├── ContextAttribs.java │ ├── ContextCapabilities.java │ ├── ContextGL.java │ ├── Display.java │ ├── DisplayImplementation.java │ ├── DisplayMode.java │ ├── Drawable.java │ ├── DrawableGL.java │ ├── DrawableLWJGL.java │ ├── EXTAbgr.java │ ├── EXTTextureRectangle.java │ ├── GL.java │ ├── GL11.java │ ├── GL15.java │ ├── GL20.java │ ├── GLContext.java │ ├── GLSync.java │ ├── GlobalLock.java │ ├── InputImplementation.java │ ├── OpenGLException.java │ ├── Pbuffer.java │ ├── PeerInfo.java │ ├── PixelFormat.java │ ├── PixelFormatLWJGL.java │ ├── RenderTexture.java │ ├── SharedDrawable.java │ ├── Sync.java │ └── Util.java │ └── util │ ├── Color.java │ ├── Dimension.java │ ├── Display.java │ ├── Point.java │ ├── ReadableColor.java │ ├── ReadableDimension.java │ ├── ReadablePoint.java │ ├── ReadableRectangle.java │ ├── Rectangle.java │ ├── Renderable.java │ ├── Timer.java │ ├── WaveData.java │ ├── WritableColor.java │ ├── WritableDimension.java │ ├── WritablePoint.java │ ├── WritableRectangle.java │ ├── XPMFile.java │ ├── glu │ ├── Cylinder.java │ ├── Disk.java │ ├── GLU.java │ ├── GLUtessellator.java │ ├── GLUtessellatorCallback.java │ ├── GLUtessellatorCallbackAdapter.java │ ├── MipMap.java │ ├── PartialDisk.java │ ├── PixelStoreState.java │ ├── Project.java │ ├── Quadric.java │ ├── Registry.java │ ├── Sphere.java │ ├── Util.java │ └── tessellation │ │ ├── ActiveRegion.java │ │ ├── CachedVertex.java │ │ ├── Dict.java │ │ ├── DictNode.java │ │ ├── GLUface.java │ │ ├── GLUhalfEdge.java │ │ ├── GLUmesh.java │ │ ├── GLUtessellatorImpl.java │ │ ├── GLUvertex.java │ │ ├── Geom.java │ │ ├── Mesh.java │ │ ├── Normal.java │ │ ├── PriorityQ.java │ │ ├── PriorityQHeap.java │ │ ├── PriorityQSort.java │ │ ├── Render.java │ │ ├── Sweep.java │ │ ├── TessMono.java │ │ └── TessState.java │ ├── input │ └── ControllerAdapter.java.z │ └── vector │ ├── Matrix.java │ ├── Matrix2f.java │ ├── Matrix3f.java │ ├── Matrix4f.java │ ├── Quaternion.java │ ├── ReadableVector.java │ ├── ReadableVector2f.java │ ├── ReadableVector3f.java │ ├── ReadableVector4f.java │ ├── Vector.java │ ├── Vector2f.java │ ├── Vector3f.java │ ├── Vector4f.java │ ├── WritableVector2f.java │ ├── WritableVector3f.java │ └── WritableVector4f.java ├── scripts ├── languagelist_updater.bat └── languagelist_updater.sh ├── servers.dat └── settings.gradle /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | open_collective: pojavlauncher 2 | patreon: pojavlauncher 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: Feature request 2 | description: 'Ask for new features.' 3 | title: "[F-Req] " 4 | labels: [enhancement] 5 | body: 6 | - type: textarea 7 | id: version 8 | attributes: 9 | label: Is this request related to a bug? 10 | description: | 11 | Give us some details into the problem, and how this affects it. 12 | placeholder: 'Example: You should add a version selector because of the text box being too small.' 13 | validations: 14 | required: false 15 | 16 | - type: textarea 17 | attributes: 18 | label: Describe the request. 19 | description: | 20 | What do you want to see changed, added, or removed? Make sure to be specific. 21 | placeholder: 'Example: A scrollable version picker.' 22 | validations: 23 | required: false 24 | 25 | - type: textarea 26 | attributes: 27 | label: Anything else? 28 | description: | 29 | Add any other context about the problem here. 30 | validations: 31 | required: false 32 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 4 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 1 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - pinned 8 | - security 9 | # Label to use when marking an issue as stale 10 | staleLabel: stale 11 | # Comment to post when marking an issue as stale. Set to `false` to disable 12 | markComment: > 13 | This issue has been automatically marked as stale because it has not had 14 | recent activity. It will be closed if no further activity occurs. Thank you 15 | for your contributions. 16 | # Comment to post when closing a stale issue. Set to false to disable 17 | closeComment: true 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle 2 | /build 3 | /*/build 4 | app_pojavlauncher/src/main/assets/components/jre 5 | local.properties 6 | .idea/ 7 | app_pojavlauncher/.cxx/ 8 | .vs/ 9 | /app_pojavlauncher/libs/OpenXR-SDK/ 10 | .DS_STORE 11 | app_pojavlauncher/src/main/assets/artifacts/ 12 | app_pojavlauncher/src/main/assets/unzippedArtifacts/ 13 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "java.configuration.updateBuildConfiguration": "interactive" 3 | } 4 | -------------------------------------------------------------------------------- /GPLAY_PRIVACY_POLICY: -------------------------------------------------------------------------------- 1 | 1. This app (while idle) does NOT collect any sensitive information, and does NOT use network (exception is the "News" page, it uses network to load the launcher news) 2 | 2. While running Minecraft, app also does NOT collect any sensitive information about your device. Snooper by Mojang does. 3 | 3. Some sensitive data is stored in crash reports after the game crashes, but it's not being shared to anyone except the current user. 4 | -------------------------------------------------------------------------------- /app_pojavlauncher/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/debug.keystore -------------------------------------------------------------------------------- /app_pojavlauncher/libs/ExagearApacheCommons.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/libs/ExagearApacheCommons.jar -------------------------------------------------------------------------------- /app_pojavlauncher/libs/gson-2.8.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/libs/gson-2.8.6.jar -------------------------------------------------------------------------------- /app_pojavlauncher/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\tools\adt-bundle-windows-x86_64-20131030\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # We use Reflection on the builder to avoid creating too many objects 20 | -keep class net.objecthunter.exp4j.ExpressionBuilder** 21 | -keepclassmembers class net.objecthunter.exp4j.ExpressionBuilder** { 22 | *; 23 | } 24 | # Option screens 25 | -keep class net.kdt.pojavlaunch.prefs.screens** {*;} 26 | 27 | 28 | -------------------------------------------------------------------------------- /app_pojavlauncher/qcxrPojav.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/qcxrPojav.keystore -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/data/raids.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/data/raids.dat -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/entities/r.-1.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/entities/r.-1.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/entities/r.-1.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/entities/r.-1.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/entities/r.0.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/entities/r.0.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/entities/r.0.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/entities/r.0.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/poi/r.-1.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/poi/r.-1.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/poi/r.-1.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/poi/r.-1.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/poi/r.0.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/poi/r.0.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/poi/r.0.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/poi/r.0.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/region/r.-1.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/region/r.-1.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/region/r.-1.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/region/r.-1.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/region/r.0.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/region/r.0.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/region/r.0.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM-1/region/r.0.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/DIM1/data/raids_end.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/DIM1/data/raids_end.dat -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/data/raids.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/data/raids.dat -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/entities/r.-1.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/entities/r.-1.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/entities/r.-1.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/entities/r.-1.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/entities/r.0.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/entities/r.0.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/entities/r.0.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/entities/r.0.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/icon.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/level.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/level.dat -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/level.dat_old: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/level.dat_old -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/playerdata/1b83cf52-6de7-4072-a8af-bad111ef97b0.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/playerdata/1b83cf52-6de7-4072-a8af-bad111ef97b0.dat -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/playerdata/1b83cf52-6de7-4072-a8af-bad111ef97b0.dat_old: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/playerdata/1b83cf52-6de7-4072-a8af-bad111ef97b0.dat_old -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/playerdata/9983eb58-0068-46e4-9925-a594a3ce0d95.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/playerdata/9983eb58-0068-46e4-9925-a594a3ce0d95.dat -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/playerdata/9983eb58-0068-46e4-9925-a594a3ce0d95.dat_old: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/playerdata/9983eb58-0068-46e4-9925-a594a3ce0d95.dat_old -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/poi/r.-1.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/poi/r.-1.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/poi/r.-1.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/poi/r.-1.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/poi/r.0.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/poi/r.0.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/poi/r.0.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/poi/r.0.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/region/r.-1.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/region/r.-1.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/region/r.-1.-2.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/region/r.-1.-2.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/region/r.-1.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/region/r.-1.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/region/r.0.-1.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/region/r.0.-1.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/region/r.0.-2.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/region/r.0.-2.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/region/r.0.0.mca: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/TitleWorld/region/r.0.0.mca -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/TitleWorld/session.lock: -------------------------------------------------------------------------------- 1 | ☃ -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/about_en.txt: -------------------------------------------------------------------------------- 1 | %s (Minecraft Java Launcher for Android), version %s by Tran Khanh Duy (based on "Boardwalk" app)
2 | 3 | * License:
4 | • This application is licensed under GNU GPLv3.
5 | 6 | * Credits / Third party components and their licenses:
7 | • Apache Commons Compress (unknown or Apache License 2.0).
8 | • exp4j: Apache License 2.0.
9 | • GL4ES: MIT License.
10 | • LegacyLauncher: (unknown license).
11 | • OpenJDK: GNU GPLv2 License.
12 | • LWJGL: LWJGL 2's License.

13 | • pro-gradle: Apache License 2.0.
14 | • xHook: Mixed licenses.
15 | • More (check at GitHub). 16 | • Privacy policy. 17 | • Thanks to MCHeads for providing Minecraft avatars. 18 | 19 | * Notes:
20 | - This app is under development and might not be stable.
21 | - This app is not affiliated with Minecraft, Mojang or Microsoft.

22 | 23 | * Translators can be found at Crowdin 24 | 25 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/arc_dns_injector.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/arc_dns_injector.jar -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/components/caciocavallo/ResConfHack.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/components/caciocavallo/ResConfHack.jar -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/components/caciocavallo/cacio-androidnw-1.10-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/components/caciocavallo/cacio-androidnw-1.10-SNAPSHOT.jar -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/components/caciocavallo/cacio-shared-1.10-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/components/caciocavallo/cacio-shared-1.10-SNAPSHOT.jar -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/components/caciocavallo/version: -------------------------------------------------------------------------------- 1 | 20210430 -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/components/lwjgl3/jsr305.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/components/lwjgl3/jsr305.jar -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/components/lwjgl3/lwjgl-glfw-classes-3.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/components/lwjgl3/lwjgl-glfw-classes-3.2.3.jar -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/components/lwjgl3/version: -------------------------------------------------------------------------------- 1 | 1671433205922 -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/components/security/java_sandbox.policy: -------------------------------------------------------------------------------- 1 | // PojavLauncher JRE Sandbox 2 | // DO NOT EDIT THIS FILE WITHOUT KNOWLEDGE! 3 | // This file is important to protect you against viruses/malwares that could be come from unknown Java Programs (run on mod install) or a mod. 4 | 5 | priority "grant"; 6 | 7 | grant { 8 | permission java.io.FilePermission "./-", "read, write, delete"; 9 | permission java.io.FilePermission "${java.io.tmpdir}/-", "read, write, delete"; 10 | permission java.io.FilePermission "${user.home}/-", "read, write, delete"; 11 | }; 12 | 13 | deny { 14 | permission java.io.FilePermission "${pojav.path.private.account}/-", "read, write, delete"; 15 | permission java.io.FilePermission "<>", "write, delete, execute"; 16 | }; 17 | 18 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/components/security/pro-grade.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/assets/components/security/pro-grade.jar -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/language_list.txt: -------------------------------------------------------------------------------- 1 | values-af-rZA 2 | values-ar-rSA 3 | values-ba-rRU 4 | values-ca-rES 5 | values-cs-rCZ 6 | values-da-rDK 7 | values-de-rDE 8 | values-el-rGR 9 | values-en-rGB 10 | values-en-rUS 11 | values-es-rES 12 | values-fil-rPH 13 | values-fi-rFI 14 | values-fr-rFR 15 | values-hu-rHU 16 | values-in-rID 17 | values-it-rIT 18 | values-iw-rIL 19 | values-ja-rJP 20 | values-kk-rKZ 21 | values-ko-rKR 22 | values-la-rLA 23 | values-lt-rLT 24 | values-nl-rNL 25 | values-no-rNO 26 | values-pl-rPL 27 | values-pt-rBR 28 | values-pt-rPT 29 | values-ro-rRO 30 | values-ru-rRU 31 | values-sr-rSP 32 | values-sv-rSE 33 | values-th-rTH 34 | values-tr-rTR 35 | values-tt-rRU 36 | values-uk-rUA 37 | values-vi-rVN 38 | values-zh-rCN 39 | values-zh-rTW 40 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/launcher_profiles.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "(Default)": { 4 | "name": "(Default)", 5 | "lastVersionId": "Unknown" 6 | } 7 | }, 8 | "selectedProfile": "(Default)" 9 | } 10 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/resolv.conf: -------------------------------------------------------------------------------- 1 | nameserver 8.8.8.8 2 | nameserver 8.8.4.4 -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/sodium-extra.properties: -------------------------------------------------------------------------------- 1 | mixin.sodium.resolution=false 2 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/assets/sodium-mixins.properties: -------------------------------------------------------------------------------- 1 | # This is the configuration file for Sodium. 2 | # 3 | # You can find information on editing this file and all the available options here: 4 | # https://github.com/jellysquid3/sodium-fabric/wiki/Configuration-File 5 | # 6 | # By default, this file will be empty except for this notice. 7 | mixin.features.chunk_rendering=false 8 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/com/kdt/DefocusableScrollView.java: -------------------------------------------------------------------------------- 1 | package com.kdt; 2 | 3 | import android.content.Context; 4 | import android.graphics.Rect; 5 | import android.util.AttributeSet; 6 | import android.widget.ScrollView; 7 | 8 | /** 9 | Class allowing to ignore the focusing from an item such an EditText within it. 10 | Ignoring it will stop the scrollView from refocusing on the view 11 | */ 12 | public class DefocusableScrollView extends ScrollView { 13 | 14 | 15 | 16 | private boolean mKeepFocusing = false; 17 | 18 | 19 | public DefocusableScrollView(Context context) { 20 | super(context); 21 | } 22 | 23 | public DefocusableScrollView(Context context, AttributeSet attrs) { 24 | super(context, attrs); 25 | } 26 | 27 | public DefocusableScrollView(Context context, AttributeSet attrs, int defStyleAttr) { 28 | super(context, attrs, defStyleAttr); 29 | } 30 | 31 | public DefocusableScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 32 | super(context, attrs, defStyleAttr, defStyleRes); 33 | } 34 | 35 | public void setKeepFocusing(boolean shouldKeepFocusing){ 36 | mKeepFocusing = shouldKeepFocusing; 37 | } 38 | 39 | public boolean isKeepFocusing(){ 40 | return mKeepFocusing; 41 | } 42 | 43 | @Override 44 | protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) { 45 | if(!mKeepFocusing) return 0; 46 | return super.computeScrollDeltaToGetChildRectOnScreen(rect); 47 | } 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/com/kdt/mcgui/MineButton.java: -------------------------------------------------------------------------------- 1 | package com.kdt.mcgui; 2 | 3 | import android.content.*; 4 | import android.graphics.*; 5 | import android.util.*; 6 | 7 | import androidx.core.content.res.ResourcesCompat; 8 | 9 | import net.kdt.pojavlaunch.R; 10 | 11 | public class MineButton extends androidx.appcompat.widget.AppCompatButton { 12 | 13 | public MineButton(Context ctx) { 14 | this(ctx, null); 15 | } 16 | 17 | public MineButton(Context ctx, AttributeSet attrs) { 18 | super(ctx, attrs); 19 | init(); 20 | } 21 | 22 | public void init() { 23 | setTypeface(ResourcesCompat.getFont(getContext(), R.font.noto_sans_bold)); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/com/kdt/mcgui/MineEditText.java: -------------------------------------------------------------------------------- 1 | package com.kdt.mcgui; 2 | 3 | import android.content.*; 4 | import android.util.*; 5 | import android.graphics.*; 6 | 7 | public class MineEditText extends com.google.android.material.textfield.TextInputEditText { 8 | public MineEditText(Context ctx) { 9 | super(ctx); 10 | init(); 11 | } 12 | 13 | public MineEditText(Context ctx, AttributeSet attrs) { 14 | super(ctx, attrs); 15 | init(); 16 | } 17 | 18 | public void init() { 19 | setBackgroundColor(Color.parseColor("#131313")); 20 | setPadding(5, 5, 5, 5); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/com/kdt/pickafile/FileSelectedListener.java: -------------------------------------------------------------------------------- 1 | package com.kdt.pickafile; 2 | 3 | import java.io.File; 4 | 5 | public abstract class FileSelectedListener 6 | { 7 | public abstract void onFileSelected(File file, String path); 8 | public void onFileLongClick(File file, String path) {} 9 | } 10 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/com/kdt/pickafile/SortFileName.java: -------------------------------------------------------------------------------- 1 | package com.kdt.pickafile; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class SortFileName implements Comparator 7 | { 8 | @Override 9 | public int compare(File f1, File f2) { 10 | return f1.getName().compareToIgnoreCase(f2.getName()); 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/com/oracle/dalvik/VMLauncher.java: -------------------------------------------------------------------------------- 1 | package com.oracle.dalvik; 2 | 3 | public final class VMLauncher { 4 | private VMLauncher() { 5 | } 6 | public static native int launchJVM(String[] args); 7 | } 8 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTInputBridge.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch; 2 | 3 | public class AWTInputBridge { 4 | public static final int EVENT_TYPE_CHAR = 1000; 5 | // public static final int EVENT_TYPE_CHAR_MODS = 1001; 6 | // public static final int EVENT_TYPE_CURSOR_ENTER = 1002; 7 | public static final int EVENT_TYPE_CURSOR_POS = 1003; 8 | // public static final int EVENT_TYPE_FRAMEBUFFER_SIZE = 1004; 9 | public static final int EVENT_TYPE_KEY = 1005; 10 | public static final int EVENT_TYPE_MOUSE_BUTTON = 1006; 11 | public static final int EVENT_TYPE_SCROLL = 1007; 12 | // public static final int EVENT_TYPE_WINDOW_SIZE = 1008; 13 | 14 | public static void sendKey(char keychar, int keycode) { 15 | // TODO: Android -> AWT keycode mapping 16 | nativeSendData(EVENT_TYPE_KEY, (int) keychar, keycode, 0, 0); 17 | } 18 | 19 | public static void sendMousePress(int awtButtons, boolean isDown) { 20 | nativeSendData(EVENT_TYPE_MOUSE_BUTTON, awtButtons, isDown ? 1 : 0, 0, 0); 21 | } 22 | 23 | public static void sendMousePress(int awtButtons) { 24 | sendMousePress(awtButtons, true); 25 | sendMousePress(awtButtons, false); 26 | } 27 | 28 | public static void sendMousePos(int x, int y) { 29 | nativeSendData(EVENT_TYPE_CURSOR_POS, x, y, 0, 0); 30 | } 31 | 32 | static { 33 | System.loadLibrary("pojavexec_awt"); 34 | } 35 | 36 | public static native void nativeSendData(int type, int i1, int i2, int i3, int i4); 37 | public static native void nativePutClipboard(String data); 38 | } 39 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseActivity.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch; 2 | 3 | import android.content.*; 4 | import android.os.*; 5 | import androidx.appcompat.app.*; 6 | import net.kdt.pojavlaunch.utils.*; 7 | 8 | import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_IGNORE_NOTCH; 9 | 10 | public abstract class BaseActivity extends AppCompatActivity { 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | Tools.setFullscreen(this); 15 | Tools.updateWindowSize(this); 16 | } 17 | 18 | @Override 19 | protected void attachBaseContext(Context base) { 20 | super.attachBaseContext(LocaleUtils.setLocale(base)); 21 | } 22 | 23 | @Override 24 | public void startActivity(Intent i) { 25 | super.startActivity(i); 26 | //new Throwable("StartActivity").printStackTrace(); 27 | } 28 | 29 | @Override 30 | protected void onPostResume() { 31 | super.onPostResume(); 32 | Tools.ignoreNotch(PREF_IGNORE_NOTCH,this); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/DisplayableLocale.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch; 2 | import java.util.*; 3 | 4 | public class DisplayableLocale { 5 | public final Locale mLocale; 6 | public final CharSequence mName; 7 | 8 | private static Locale processStringLocale(String locale) { 9 | if (locale.contains("-")) { 10 | String[] split = locale.split("-"); 11 | return new Locale(split[0], split[1]); 12 | } else { 13 | return new Locale(locale); 14 | } 15 | } 16 | 17 | public DisplayableLocale(String locale) { 18 | this(processStringLocale(locale)); 19 | } 20 | 21 | public DisplayableLocale(Locale locale) { 22 | this(locale, locale.getDisplayName(locale)); 23 | } 24 | 25 | public DisplayableLocale(Locale locale, CharSequence name) { 26 | mLocale = locale; 27 | mName = name; 28 | } 29 | 30 | public Locale toLocale() { 31 | return mLocale; 32 | } 33 | 34 | @Override 35 | public String toString() { 36 | return mName.toString(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/ExitActivity.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch; 2 | 3 | import android.content.Context; 4 | import android.content.DialogInterface; 5 | import android.content.Intent; 6 | import android.os.Bundle; 7 | 8 | import androidx.annotation.Keep; 9 | import androidx.annotation.Nullable; 10 | import androidx.appcompat.app.AlertDialog; 11 | import androidx.appcompat.app.AppCompatActivity; 12 | 13 | @Keep 14 | public class ExitActivity extends AppCompatActivity { 15 | 16 | @Override 17 | public void onCreate(@Nullable Bundle savedInstanceState) { 18 | super.onCreate(savedInstanceState); 19 | int code = -1; 20 | Bundle extras = getIntent().getExtras(); 21 | if(extras != null) { 22 | code = extras.getInt("code",-1); 23 | } 24 | 25 | new AlertDialog.Builder(this) 26 | .setMessage(getString(R.string.mcn_exit_title,code)) 27 | .setPositiveButton(android.R.string.ok, null) 28 | .setOnDismissListener(dialog -> ExitActivity.this.finish()) 29 | .show(); 30 | } 31 | 32 | public static void showExitMessage(Context ctx, int code) { 33 | Intent i = new Intent(ctx,ExitActivity.class); 34 | i.putExtra("code",code); 35 | i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 36 | i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 37 | ctx.startActivity(i); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/FatalErrorActivity.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch; 2 | 3 | import android.content.*; 4 | import android.os.*; 5 | import androidx.appcompat.app.*; 6 | import android.util.*; 7 | import androidx.appcompat.app.AlertDialog; 8 | 9 | public class FatalErrorActivity extends AppCompatActivity { 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | 15 | Bundle extras = getIntent().getExtras(); 16 | boolean storageAllow = extras.getBoolean("storageAllow"); 17 | final String stackTrace = Log.getStackTraceString((Throwable) extras.getSerializable("throwable")); 18 | String strSavePath = extras.getString("savePath"); 19 | String errHeader = storageAllow ? 20 | "Crash stack trace saved to " + strSavePath + "." : 21 | "Storage permission is required to save crash stack trace!"; 22 | 23 | new AlertDialog.Builder(this) 24 | .setTitle(R.string.error_fatal) 25 | .setMessage(errHeader + "\n\n" + stackTrace) 26 | .setPositiveButton(android.R.string.ok, (p1, p2) -> finish()) 27 | .setNegativeButton(R.string.global_restart, (p1, p2) -> startActivity(new Intent(FatalErrorActivity.this, PojavLoginActivity.class))) 28 | .setNeutralButton(android.R.string.copy, (p1, p2) -> { 29 | ClipboardManager mgr = (ClipboardManager) FatalErrorActivity.this.getSystemService(CLIPBOARD_SERVICE); 30 | mgr.setPrimaryClip(ClipData.newPlainText("error", stackTrace)); 31 | 32 | finish(); 33 | }) 34 | .setCancelable(false) 35 | .show(); 36 | } 37 | 38 | public static void showError(Context ctx, String savePath, boolean storageAllow, Throwable th) { 39 | Intent ferrorIntent = new Intent(ctx, FatalErrorActivity.class); 40 | ferrorIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 41 | ferrorIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 42 | ferrorIntent.putExtra("throwable", th); 43 | ferrorIntent.putExtra("savePath", savePath); 44 | ferrorIntent.putExtra("storageAllow", storageAllow); 45 | ctx.startActivity(ferrorIntent); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JAssetInfo.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch; 2 | 3 | public class JAssetInfo 4 | { 5 | public String hash; 6 | public int size; 7 | } 8 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JAssets.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | import java.util.Map; 6 | 7 | public class JAssets { 8 | @SerializedName("map_to_resources") public boolean mapToResources; 9 | public Map objects; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MCXRLoader.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch; 2 | 3 | import android.app.Activity; 4 | 5 | public class MCXRLoader { 6 | public static native void setActivity(Activity ctx); 7 | 8 | static { 9 | System.loadLibrary("mcxr_loader"); 10 | } 11 | 12 | public static native void launch(MainActivity activity); 13 | } 14 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/SingleTapConfirm.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch; 2 | 3 | import android.view.*; 4 | import android.view.GestureDetector.*; 5 | 6 | public class SingleTapConfirm extends SimpleOnGestureListener { 7 | @Override 8 | public boolean onSingleTapUp(MotionEvent event) { 9 | return true; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/authenticator/mojang/InvalidateTokenTask.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.authenticator.mojang; 2 | 3 | import android.content.*; 4 | import android.os.*; 5 | import net.kdt.pojavlaunch.authenticator.mojang.yggdrasil.*; 6 | import java.io.*; 7 | import java.lang.ref.WeakReference; 8 | import java.util.*; 9 | import net.kdt.pojavlaunch.*; 10 | import net.kdt.pojavlaunch.value.*; 11 | 12 | public class InvalidateTokenTask extends AsyncTask { 13 | private YggdrasilAuthenticator authenticator = new YggdrasilAuthenticator(); 14 | //private Gson gson = new Gson(); 15 | private MinecraftAccount profilePath; 16 | 17 | private final WeakReference ctx; 18 | private String path; 19 | 20 | public InvalidateTokenTask(Context ctx) { 21 | this.ctx = new WeakReference<>(ctx); 22 | } 23 | 24 | @Override 25 | public Throwable doInBackground(String... args) { 26 | path = args[0]; 27 | try { 28 | 29 | 30 | this.profilePath = MinecraftAccount.load(args[0]); 31 | if (profilePath.accessToken.equals("0")) { 32 | return null; 33 | } 34 | this.authenticator.invalidate(profilePath.accessToken, 35 | UUID.fromString(profilePath.isMicrosoft ? profilePath.profileId : profilePath.clientToken /* should be? */)); 36 | return null; 37 | } catch (Throwable e) { 38 | return e; 39 | } 40 | } 41 | 42 | @Override 43 | public void onPostExecute(Throwable result) { 44 | if (result != null) { 45 | Tools.showError(ctx.get(), result); 46 | } 47 | new File(Tools.DIR_ACCOUNT_NEW + "/" + path + ".json").delete(); 48 | } 49 | } 50 | 51 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/authenticator/mojang/RefreshListener.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.authenticator.mojang; 2 | 3 | import net.kdt.pojavlaunch.*; 4 | import net.kdt.pojavlaunch.value.*; 5 | 6 | public interface RefreshListener 7 | { 8 | public void onFailed(Throwable e); 9 | public void onSuccess(MinecraftAccount profile); 10 | } 11 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/authenticator/mojang/yggdrasil/ErrorResponse.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.authenticator.mojang.yggdrasil; 2 | 3 | public class ErrorResponse { 4 | public String cause; 5 | public String error; 6 | public String errorMessage; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/authenticator/mojang/yggdrasil/NetworkResponse.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.authenticator.mojang.yggdrasil; 2 | 3 | import java.util.*; 4 | 5 | public class NetworkResponse 6 | { 7 | public final int statusCode; 8 | public final Object response; 9 | public NetworkResponse(int statusCode, Object response) { 10 | this.statusCode = statusCode; 11 | this.response = response; 12 | } 13 | 14 | public void throwExceptionIfNeed(String msg) { 15 | if (statusCode < 200 || statusCode >= 300) { 16 | throw new RuntimeException(msg); 17 | } 18 | } 19 | 20 | public void throwExceptionIfNeed() { 21 | throwExceptionIfNeed("Respone error, code: " + statusCode + ", message: " + response); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/authenticator/mojang/yggdrasil/Profile.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.authenticator.mojang.yggdrasil; 2 | 3 | public class Profile { 4 | public String id; 5 | public boolean legacy; 6 | public String name; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/authenticator/mojang/yggdrasil/RefreshRequest.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.authenticator.mojang.yggdrasil; 2 | 3 | import java.util.UUID; 4 | 5 | public class RefreshRequest { 6 | public String accessToken; 7 | public UUID clientToken; 8 | 9 | public RefreshRequest(String accessToken, UUID clientToken) { 10 | this.accessToken = accessToken; 11 | this.clientToken = clientToken; 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/GamepadButton.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.customcontrols.gamepad; 2 | 3 | import android.view.KeyEvent; 4 | 5 | /** 6 | * Simple button able to store its state and some properties 7 | */ 8 | public class GamepadButton { 9 | 10 | public int[] keycodes; 11 | public boolean isToggleable = false; 12 | private boolean mIsDown = false; 13 | private boolean mIsToggled = false; 14 | 15 | public void update(KeyEvent event){ 16 | boolean isKeyDown = (event.getAction() == KeyEvent.ACTION_DOWN); 17 | update(isKeyDown); 18 | } 19 | 20 | public void update(boolean isKeyDown){ 21 | if(isKeyDown != mIsDown){ 22 | mIsDown = isKeyDown; 23 | if(isToggleable){ 24 | if(isKeyDown){ 25 | mIsToggled = !mIsToggled; 26 | Gamepad.sendInput(keycodes, mIsToggled); 27 | } 28 | return; 29 | } 30 | Gamepad.sendInput(keycodes, mIsDown); 31 | } 32 | } 33 | 34 | public void resetButtonState(){ 35 | if(mIsDown || mIsToggled){ 36 | Gamepad.sendInput(keycodes, false); 37 | } 38 | mIsDown = false; 39 | mIsToggled = false; 40 | } 41 | 42 | public boolean isDown(){ 43 | return isToggleable ? mIsToggled : mIsDown; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/handleview/EditControlSubButtonPopup.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.customcontrols.handleview; 2 | 3 | import android.view.View; 4 | 5 | import net.kdt.pojavlaunch.R; 6 | import net.kdt.pojavlaunch.customcontrols.buttons.ControlButton; 7 | 8 | public class EditControlSubButtonPopup extends EditControlButtonPopup{ 9 | 10 | 11 | public EditControlSubButtonPopup(ControlButton button){ 12 | super(button); 13 | } 14 | 15 | @Override 16 | protected void hideUselessViews() { 17 | (mRootView.findViewById(R.id.editSize_textView)).setVisibility(View.GONE); 18 | (mRootView.findViewById(R.id.editOrientation_textView)).setVisibility(View.GONE); 19 | 20 | mDynamicPositionCheckbox.setVisibility(View.GONE); 21 | 22 | (mRootView.findViewById(R.id.editDynamicPositionX_textView)).setVisibility(View.GONE); 23 | mDynamicXEditText.setVisibility(View.GONE); 24 | 25 | (mRootView.findViewById(R.id.editDynamicPositionY_textView)).setVisibility(View.GONE); 26 | mDynamicYEditText.setVisibility(View.GONE); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/handleview/ViewPositionListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2011 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /* 18 | * This class has been splited from android/widget/Editor$HandleView.java 19 | */ 20 | package net.kdt.pojavlaunch.customcontrols.handleview; 21 | 22 | public interface ViewPositionListener { 23 | void updatePosition(int parentPositionX, int parentPositionY, boolean parentPositionChanged, boolean parentScrolled); 24 | } 25 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/extra/ExtraListener.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.extra; 2 | 3 | import androidx.annotation.Nullable; 4 | 5 | /** 6 | * Listener class for the ExtraCore 7 | * An ExtraListener can listen to a virtually unlimited amount of values 8 | */ 9 | public interface ExtraListener { 10 | 11 | /** 12 | * Called upon a new value being set 13 | * @param key The name of the value 14 | * @param value The new value as a string 15 | * @return Whether you consume the Listener (stop listening) 16 | */ 17 | boolean onValueSet(String key, @Nullable T value); 18 | 19 | } -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modmanager/ModData.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.modmanager; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class ModData { 6 | @SerializedName("title") 7 | public String title; 8 | @SerializedName("slug") 9 | public String slug; 10 | @SerializedName("icon_url") 11 | public String iconUrl; 12 | 13 | public String platform; 14 | public String repo; 15 | public boolean isActive; 16 | public FileData fileData; 17 | 18 | public ModData() { 19 | isActive = false; 20 | fileData = new FileData(); 21 | } 22 | 23 | //Only set when calling a getModFileData method 24 | public static class FileData { 25 | public String id; 26 | public String url; 27 | public String filename; 28 | } 29 | } -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/Runtime.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.multirt; 2 | 3 | import java.util.Objects; 4 | 5 | public class Runtime { 6 | public Runtime(String name) { 7 | this.name = name; 8 | } 9 | 10 | public String name; 11 | public String versionString; 12 | public String arch; 13 | public int javaVersion; 14 | 15 | @Override 16 | public boolean equals(Object o) { 17 | if (this == o) return true; 18 | if (o == null || getClass() != o.getClass()) return false; 19 | Runtime runtime = (Runtime) o; 20 | return name.equals(runtime.name); 21 | } 22 | @Override 23 | public int hashCode() { 24 | return Objects.hash(name); 25 | } 26 | } -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/BackButtonPreference.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.prefs; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | 6 | import androidx.preference.Preference; 7 | 8 | import net.kdt.pojavlaunch.R; 9 | import net.kdt.pojavlaunch.extra.ExtraCore; 10 | 11 | public class BackButtonPreference extends Preference { 12 | public BackButtonPreference(Context context, AttributeSet attrs) { 13 | super(context, attrs); 14 | init(); 15 | } 16 | 17 | public BackButtonPreference(Context context) { 18 | this(context, null); 19 | } 20 | 21 | private void init(){ 22 | if(getTitle() == null){ 23 | setTitle(R.string.preference_back_title); 24 | } 25 | if(getIcon() == null){ 26 | setIcon(R.drawable.ic_arrow_back_white); 27 | } 28 | } 29 | 30 | 31 | @Override 32 | protected void onClick() { 33 | // It is caught by an ExtraListener in the LauncherActivity 34 | ExtraCore.setValue("back_preference", "true"); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/RuntimeManagerPreference.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.prefs; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | 6 | import androidx.preference.Preference; 7 | 8 | import net.kdt.pojavlaunch.BaseLauncherActivity; 9 | 10 | public class RuntimeManagerPreference extends Preference{ 11 | public RuntimeManagerPreference(Context ctx) { 12 | this(ctx, null); 13 | } 14 | 15 | public RuntimeManagerPreference(Context ctx, AttributeSet attrs) { 16 | super(ctx, attrs); 17 | setPersistent(false); 18 | } 19 | 20 | @Override 21 | protected void onClick() { 22 | super.onClick(); 23 | ((BaseLauncherActivity)this.getContext()).mRuntimeConfigDialog.mDialog.show(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceExperimentalFragment.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.prefs.screens; 2 | 3 | import android.os.Bundle; 4 | 5 | import net.kdt.pojavlaunch.R; 6 | 7 | public class LauncherPreferenceExperimentalFragment extends LauncherPreferenceFragment { 8 | 9 | @Override 10 | public void onCreatePreferences(Bundle b, String str) { 11 | addPreferencesFromResource(R.xml.pref_experimental); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceFragment.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.prefs.screens; 2 | 3 | 4 | import android.graphics.Color; 5 | import android.os.*; 6 | 7 | import androidx.activity.OnBackPressedCallback; 8 | import androidx.annotation.NonNull; 9 | import androidx.annotation.Nullable; 10 | import androidx.preference.*; 11 | import net.kdt.pojavlaunch.R; 12 | import net.kdt.pojavlaunch.prefs.LauncherPreferences; 13 | 14 | import android.content.*; 15 | import android.view.View; 16 | import android.widget.Toast; 17 | 18 | import static net.kdt.pojavlaunch.Architecture.is32BitsDevice; 19 | import static net.kdt.pojavlaunch.Tools.getTotalDeviceMemory; 20 | import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_NOTCH_SIZE; 21 | 22 | /** 23 | * Preference for the main screen, any sub-screen should inherit this class for consistent behavior, 24 | * overriding only onCreatePreferences 25 | */ 26 | public class LauncherPreferenceFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { 27 | 28 | @Override 29 | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 30 | view.setBackgroundColor(Color.parseColor("#232323")); 31 | super.onViewCreated(view, savedInstanceState); 32 | } 33 | 34 | @Override 35 | public void onCreatePreferences(Bundle b, String str) { 36 | addPreferencesFromResource(R.xml.pref_main); 37 | } 38 | 39 | @Override 40 | public void onResume() { 41 | super.onResume(); 42 | getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); 43 | } 44 | 45 | @Override 46 | public void onPause() { 47 | getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); 48 | super.onPause(); 49 | } 50 | 51 | @Override 52 | public void onSharedPreferenceChanged(SharedPreferences p, String s) { 53 | LauncherPreferences.loadPreferences(getContext()); 54 | } 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceJavaFragment.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.prefs.screens; 2 | 3 | import static net.kdt.pojavlaunch.Architecture.is32BitsDevice; 4 | import static net.kdt.pojavlaunch.Tools.getTotalDeviceMemory; 5 | 6 | import android.os.Bundle; 7 | import android.widget.TextView; 8 | 9 | import androidx.preference.EditTextPreference; 10 | 11 | import net.kdt.pojavlaunch.R; 12 | import net.kdt.pojavlaunch.prefs.CustomSeekBarPreference; 13 | import net.kdt.pojavlaunch.prefs.LauncherPreferences; 14 | 15 | public class LauncherPreferenceJavaFragment extends LauncherPreferenceFragment { 16 | @Override 17 | public void onCreatePreferences(Bundle b, String str) { 18 | int ramAllocation = LauncherPreferences.PREF_RAM_ALLOCATION; 19 | 20 | // Triggers a write for some reason 21 | addPreferencesFromResource(R.xml.pref_java); 22 | 23 | int maxRAM; 24 | int deviceRam = getTotalDeviceMemory(getContext()); 25 | 26 | CustomSeekBarPreference seek7 = findPreference("allocation"); 27 | seek7.setMin(256); 28 | 29 | if(is32BitsDevice()) maxRAM = Math.min(1100, deviceRam); 30 | else maxRAM = deviceRam - (deviceRam < 3064 ? 800 : 1024); //To have a minimum for the device to breathe 31 | 32 | seek7.setMax(maxRAM); 33 | seek7.setValue(ramAllocation); 34 | seek7.setSuffix(" MB"); 35 | 36 | 37 | EditTextPreference editJVMArgs = findPreference("javaArgs"); 38 | if (editJVMArgs != null) { 39 | editJVMArgs.setOnBindEditTextListener(TextView::setSingleLine); 40 | } 41 | 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceMiscellaneousFragment.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.prefs.screens; 2 | 3 | import android.os.Build; 4 | import android.os.Bundle; 5 | 6 | import androidx.preference.SwitchPreference; 7 | 8 | import net.kdt.pojavlaunch.R; 9 | 10 | public class LauncherPreferenceMiscellaneousFragment extends LauncherPreferenceFragment { 11 | @Override 12 | public void onCreatePreferences(Bundle b, String str) { 13 | addPreferencesFromResource(R.xml.pref_misc); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceVideoFragment.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.prefs.screens; 2 | 3 | import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_NOTCH_SIZE; 4 | 5 | import android.os.Build; 6 | import android.os.Bundle; 7 | 8 | import androidx.preference.PreferenceFragmentCompat; 9 | 10 | import net.kdt.pojavlaunch.R; 11 | import net.kdt.pojavlaunch.prefs.CustomSeekBarPreference; 12 | 13 | /** 14 | * Fragment for any settings video related 15 | */ 16 | public class LauncherPreferenceVideoFragment extends LauncherPreferenceFragment { 17 | @Override 18 | public void onCreatePreferences(Bundle b, String str) { 19 | addPreferencesFromResource(R.xml.pref_video); 20 | 21 | //Disable notch checking behavior on android 8.1 and below. 22 | findPreference("ignoreNotch").setVisible(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && PREF_NOTCH_SIZE != 0); 23 | 24 | CustomSeekBarPreference seek5 = findPreference("resolutionRatio"); 25 | seek5.setMin(25); 26 | seek5.setMax(200); 27 | seek5.setSuffix(" %"); 28 | 29 | // #724 bug fix 30 | if (seek5.getValue() < 25) { 31 | seek5.setValue(100); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/FileUtils.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.utils; 2 | 3 | import java.io.File; 4 | 5 | public class FileUtils { 6 | public static boolean exists(String filePath){ 7 | return new File(filePath).exists(); 8 | } 9 | } -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JSONUtils.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.utils; 2 | 3 | import java.util.*; 4 | 5 | public class JSONUtils { 6 | public static String[] insertJSONValueList(String[] args, Map keyValueMap) { 7 | for (int i = 0; i < args.length; i++) { 8 | args[i] = insertSingleJSONValue(args[i], keyValueMap); 9 | } 10 | return args; 11 | } 12 | 13 | public static String insertSingleJSONValue(String value, Map keyValueMap) { 14 | String valueInserted = value; 15 | for (Map.Entry keyValue : keyValueMap.entrySet()) { 16 | valueInserted = valueInserted.replace("${" + keyValue.getKey() + "}", keyValue.getValue() == null ? "" : keyValue.getValue()); 17 | } 18 | return valueInserted; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/LocaleUtils.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.utils; 2 | 3 | import android.content.*; 4 | import android.content.res.*; 5 | import androidx.preference.*; 6 | import java.util.*; 7 | import net.kdt.pojavlaunch.prefs.*; 8 | 9 | public class LocaleUtils { 10 | public static final Locale DEFAULT_LOCALE; 11 | 12 | static { 13 | DEFAULT_LOCALE = Locale.getDefault(); 14 | } 15 | 16 | public static Context setLocale(Context context) { 17 | if (LauncherPreferences.DEFAULT_PREF == null) { 18 | LauncherPreferences.DEFAULT_PREF = PreferenceManager.getDefaultSharedPreferences(context); 19 | LauncherPreferences.loadPreferences(context); 20 | } 21 | 22 | Locale locale; 23 | if (LauncherPreferences.PREF_LANGUAGE.equals("default")) { 24 | locale = DEFAULT_LOCALE; 25 | } else { 26 | locale = new Locale(LauncherPreferences.PREF_LANGUAGE); 27 | } 28 | 29 | Locale.setDefault(locale); 30 | 31 | Resources res = context.getResources(); 32 | Configuration config = new Configuration(res.getConfiguration()); 33 | config.setLocale(locale); 34 | context = context.createConfigurationContext(config); 35 | return context; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/MathUtils.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.utils; 2 | 3 | public class MathUtils { 4 | 5 | //Ported from https://www.arduino.cc/reference/en/language/functions/math/map/ 6 | public static float map(float x, float in_min, float in_max, float out_min, float out_max) { 7 | return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/UiUitls.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.utils; 2 | 3 | import android.app.Activity; 4 | import android.os.Handler; 5 | import android.os.Looper; 6 | import android.text.Spannable; 7 | import android.text.SpannableString; 8 | import android.widget.TextView; 9 | 10 | public class UiUitls extends Activity { 11 | 12 | public static Handler UIHandler = new Handler(Looper.getMainLooper()); 13 | 14 | public static void runOnUI(Runnable runnable) { 15 | UIHandler.post(runnable); 16 | } 17 | } -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/AccountSkin.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value; 2 | import android.graphics.Bitmap; 3 | import android.graphics.BitmapFactory; 4 | import android.util.Base64; 5 | import java.io.File; 6 | import java.io.IOException; 7 | import java.util.Map; 8 | import net.kdt.pojavlaunch.Tools; 9 | import net.kdt.pojavlaunch.utils.DownloadUtils; 10 | 11 | public class AccountSkin { 12 | public static Bitmap getSkin(String uuid) throws IOException { 13 | Profile p = Tools.GLOBAL_GSON.fromJson(DownloadUtils.downloadString("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid), Profile.class); 14 | for (Property property : p.properties) { 15 | if (property.name.equals("textures")) { 16 | return getSkinFromProperty(Tools.GLOBAL_GSON.fromJson(new String(Base64.decode(property.value, Base64.DEFAULT), "UTF-8"), SkinProperty.class)); 17 | } 18 | } 19 | 20 | return null; 21 | } 22 | 23 | private static Bitmap getSkinFromProperty(SkinProperty p) throws IOException { 24 | for (Map.Entry texture : p.textures.entrySet()) { 25 | if (texture.getKey().equals("SKIN")) { 26 | String skinFile = File.createTempFile("skin", ".png", new File(Tools.DIR_DATA, "cache")).getAbsolutePath(); 27 | Tools.downloadFile(texture.getValue().url.replace("http://","https://"), skinFile); 28 | return BitmapFactory.decodeFile(skinFile); 29 | } 30 | } 31 | 32 | return null; 33 | } 34 | 35 | public static class Texture { 36 | public String url; 37 | } 38 | 39 | public static class SkinProperty { 40 | public Map textures; 41 | } 42 | 43 | public static class Property { 44 | public String name, value; 45 | } 46 | 47 | public static class Profile { 48 | public Property[] properties; 49 | } 50 | } 51 | 52 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/DependentLibrary.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value; 2 | 3 | import androidx.annotation.Keep; 4 | 5 | import net.kdt.pojavlaunch.JMinecraftVersionList; 6 | 7 | @Keep 8 | public class DependentLibrary { 9 | public String name; 10 | public LibraryDownloads downloads; 11 | public String url; 12 | public JMinecraftVersionList.Arguments.ArgValue.ArgRules[] rules; 13 | 14 | @Keep 15 | public static class LibraryDownloads { 16 | public MinecraftLibraryArtifact artifact; 17 | public LibraryDownloads(MinecraftLibraryArtifact artifact) { 18 | this.artifact = artifact; 19 | } 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/ForgeInstallProfile.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value; 2 | 3 | import net.kdt.pojavlaunch.*; 4 | 5 | public class ForgeInstallProfile { 6 | // ----- < 1.12.2 Forge Install Profile ----- 7 | public ForgeInstallProperties install; 8 | public JMinecraftVersionList.Version versionInfo; 9 | 10 | public static class ForgeInstallProperties { 11 | public String profileName; 12 | public String target; 13 | public String path; 14 | public String version; 15 | public String filePath; // universal file .jar 16 | public String minecraft; // target Minecraft version 17 | } 18 | 19 | // ----- 1.12.2+ Forge Install Profile ----- 20 | public String version; 21 | public String json; 22 | public String path; 23 | public String minecraft; // target Minecraft version 24 | } 25 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/MinecraftClientInfo.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value; 2 | 3 | public class MinecraftClientInfo 4 | { 5 | public String sha1; 6 | public int size; 7 | public String url; 8 | } 9 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/MinecraftLibraryArtifact.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value; 2 | 3 | public class MinecraftLibraryArtifact extends MinecraftClientInfo 4 | { 5 | public String path; 6 | } 7 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/PerVersionConfig.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value; 2 | 3 | import com.google.gson.JsonSyntaxException; 4 | import com.google.gson.reflect.TypeToken; 5 | 6 | import net.kdt.pojavlaunch.Tools; 7 | import net.kdt.pojavlaunch.value.launcherprofiles.MinecraftLauncherProfiles; 8 | 9 | import java.io.File; 10 | import java.io.IOException; 11 | import java.util.HashMap; 12 | 13 | public class PerVersionConfig { 14 | static File pvcFile; 15 | public static HashMap configMap; 16 | public static void update() throws IOException { 17 | if(configMap == null) { 18 | pvcFile = new File(Tools.DIR_GAME_HOME,"per-version-config.json"); 19 | if(pvcFile.exists()) { 20 | try { 21 | configMap = Tools.GLOBAL_GSON.fromJson(Tools.read(pvcFile.getAbsolutePath()), new TypeToken>() { 22 | }.getType()); 23 | }catch(JsonSyntaxException ex) { 24 | ex.printStackTrace(); 25 | configMap = new HashMap<>(); 26 | } 27 | }else{ 28 | configMap = new HashMap<>(); 29 | } 30 | }else{ 31 | Tools.write(pvcFile.getAbsolutePath(),Tools.GLOBAL_GSON.toJson(configMap)); 32 | } 33 | } 34 | public static class VersionConfig { 35 | public String jvmArgs; 36 | public String gamePath; 37 | public String selectedRuntime; 38 | public String renderer; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/LauncherProfiles.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value.launcherprofiles; 2 | import com.google.gson.*; 3 | import net.kdt.pojavlaunch.*; 4 | import java.io.*; 5 | 6 | public class LauncherProfiles 7 | { 8 | public static MinecraftLauncherProfiles mainProfileJson; 9 | public static File launcherProfilesFile = new File(Tools.DIR_GAME_NEW + "/launcher_profiles.json"); 10 | public static MinecraftLauncherProfiles update() { 11 | try { 12 | if (mainProfileJson == null) { 13 | if (launcherProfilesFile.exists()) { 14 | mainProfileJson = Tools.GLOBAL_GSON.fromJson(Tools.read(launcherProfilesFile.getAbsolutePath()), MinecraftLauncherProfiles.class); 15 | } else { 16 | mainProfileJson = new MinecraftLauncherProfiles(); 17 | } 18 | } else { 19 | Tools.write(launcherProfilesFile.getAbsolutePath(), mainProfileJson.toJson()); 20 | } 21 | 22 | // insertMissing(); 23 | return mainProfileJson; 24 | } catch (Throwable th) { 25 | throw new RuntimeException(th); 26 | } 27 | } 28 | /* 29 | public static String insert; 30 | 31 | private static void insertMissing() { 32 | if (mainProfileJson.authenticationDatabase == null) { 33 | MinecraftAuthenticationDatabase mad = new MinecraftAuthenticationDatabase(); 34 | mainProfileJson.authenticationDatabase = mad; 35 | } 36 | } 37 | */ 38 | } 39 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/MinecraftAuthenticationDatabase.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value.launcherprofiles; 2 | 3 | public class MinecraftAuthenticationDatabase 4 | { 5 | public String accessToken; 6 | public String displayName; 7 | public String username; 8 | public String uuid; 9 | // public MinecraftProfile[] profiles; 10 | } 11 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/MinecraftLauncherProfiles.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value.launcherprofiles; 2 | import java.util.*; 3 | import net.kdt.pojavlaunch.*; 4 | 5 | public class MinecraftLauncherProfiles 6 | { 7 | public Map profiles; 8 | public String clientToken; 9 | public Map authenticationDatabase; 10 | // public Map launcherVersion; 11 | public MinecraftLauncherSettings settings; 12 | // public Map analyticsToken; 13 | public int analyticsFailcount; 14 | public MinecraftSelectedUser selectedUser; 15 | 16 | public String toJson() { 17 | return Tools.GLOBAL_GSON.toJson(this); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/MinecraftLauncherSettings.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value.launcherprofiles; 2 | 3 | public class MinecraftLauncherSettings 4 | { 5 | public boolean enableSnapshots; 6 | public boolean enableAdvanced; 7 | public boolean keepLauncherOpen; 8 | public boolean showGameLog; 9 | public String locale; 10 | public boolean showMenu; 11 | public boolean enableHistorical; 12 | public String profileSorting; 13 | public boolean crashAssistance; 14 | public boolean enableAnalytics; 15 | } 16 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/MinecraftProfile.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value.launcherprofiles; 2 | 3 | public class MinecraftProfile 4 | { 5 | public String name; 6 | public String type; 7 | public String created; 8 | public String lastUsed; 9 | public String icon; 10 | public String lastVersionId; 11 | public String gameDir; 12 | public String javaDir; 13 | public String javaArgs; 14 | public String logConfig; 15 | public boolean logConfigIsXML; 16 | public MinecraftResolution[] resolution; 17 | } 18 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/MinecraftResolution.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value.launcherprofiles; 2 | 3 | public class MinecraftResolution 4 | { 5 | public int width; 6 | public int height; 7 | } 8 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/launcherprofiles/MinecraftSelectedUser.java: -------------------------------------------------------------------------------- 1 | package net.kdt.pojavlaunch.value.launcherprofiles; 2 | 3 | public class MinecraftSelectedUser 4 | { 5 | public String account; 6 | public String profile; 7 | } 8 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jni/Application.mk: -------------------------------------------------------------------------------- 1 | # NDK_TOOLCHAIN_VERSION := 4.9 2 | APP_PLATFORM := android-21 3 | APP_STL := c++_shared 4 | # APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 5 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jni/log.h: -------------------------------------------------------------------------------- 1 | #ifdef __ANDROID__ 2 | #include 3 | 4 | #define TAG "jrelog" 5 | #endif 6 | 7 | #ifdef __cplusplus 8 | extern "C" { 9 | #endif 10 | 11 | #define LOGE(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__) 12 | #define LOGW(...) __android_log_print(ANDROID_LOG_SILENT, TAG, __VA_ARGS__) 13 | #define LOGI(...) __android_log_print(ANDROID_LOG_SILENT, TAG, __VA_ARGS__) 14 | #define LOGD(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__) 15 | 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | 20 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jni/mcxr_loader.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | // 6 | // Created by Judge on 12/23/2021. 7 | // 8 | 9 | static jobject* context; 10 | static jobject* app; 11 | static JavaVM* jvm; 12 | 13 | jint JNI_OnLoad(JavaVM* vm, void* reserved) { 14 | if (jvm == nullptr) { 15 | jvm = vm; 16 | } 17 | return JNI_VERSION_1_4; 18 | } 19 | 20 | JNIEXPORT JNICALL 21 | extern "C" jlong 22 | Java_net_sorenon_mcxr_play_MCXRNativeLoad_getJVMPtr(JNIEnv *env, jclass clazz) { 23 | return reinterpret_cast(&jvm); 24 | } 25 | 26 | JNIEXPORT JNICALL 27 | extern "C" void 28 | Java_net_sorenon_mcxr_play_MCXRNativeLoad_renderImage(JNIEnv *env, jclass clazz, jint colorAttachment, jint index) { 29 | glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, colorAttachment, 0, index); 30 | } 31 | 32 | JNIEXPORT JNICALL 33 | extern "C" jlong 34 | Java_net_sorenon_mcxr_play_MCXRNativeLoad_getApplicationActivityPtr(JNIEnv *env, jclass clazz) { 35 | return reinterpret_cast(&app); 36 | } 37 | 38 | extern "C" 39 | JNIEXPORT void JNICALL 40 | Java_net_kdt_pojavlaunch_MCXRLoader_launch(JNIEnv *env, jclass clazz, jobject main) { 41 | main = (*env).NewGlobalRef(main); 42 | jclass clazz1 = (*env).GetObjectClass(main); 43 | jmethodID id = (*env).GetMethodID(clazz1, "runCraft", "()V"); 44 | std::thread thread([=]() { 45 | JNIEnv* threadEnv; 46 | jvm->AttachCurrentThread(&threadEnv, nullptr); 47 | threadEnv->CallVoidMethod(main, id); 48 | }); 49 | thread.detach(); 50 | } 51 | 52 | extern "C" 53 | JNIEXPORT void JNICALL 54 | Java_net_kdt_pojavlaunch_MCXRLoader_setActivity(JNIEnv *env, jclass clazz, jobject ctx) { 55 | app = reinterpret_cast(env->NewGlobalRef(ctx)); 56 | } -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jni/utils.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | static JavaVM* runtimeJavaVMPtr; 6 | static JNIEnv* runtimeJNIEnvPtr_ANDROID; 7 | static JNIEnv* runtimeJNIEnvPtr_JRE; 8 | 9 | static JavaVM* dalvikJavaVMPtr; 10 | static JNIEnv* dalvikJNIEnvPtr_ANDROID; 11 | static JNIEnv* dalvikJNIEnvPtr_JRE; 12 | 13 | static long showingWindow; 14 | 15 | static bool isInputReady, isCursorEntered, isPrepareGrabPos, isUseStackQueueCall; 16 | 17 | static int savedWidth, savedHeight; 18 | 19 | jboolean attachThread(bool isAndroid, JNIEnv** secondJNIEnvPtr); 20 | char** convert_to_char_array(JNIEnv *env, jobjectArray jstringArray); 21 | jobjectArray convert_from_char_array(JNIEnv *env, char **charArray, int num_rows); 22 | void free_char_array(JNIEnv *env, jobjectArray jstringArray, const char **charArray); 23 | jstring convertStringJVM(JNIEnv* srcEnv, JNIEnv* dstEnv, jstring srcStr); 24 | 25 | void closeGLFWWindow(); 26 | 27 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jni/xhook/xh_core.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018-present, iQIYI, Inc. All rights reserved. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | // 21 | 22 | // Created by caikelun on 2018-04-11. 23 | 24 | #ifndef XH_CORE_H 25 | #define XH_CORE_H 1 26 | 27 | #ifdef __cplusplus 28 | extern "C" { 29 | #endif 30 | 31 | int xh_core_register(const char *pathname_regex_str, const char *symbol, 32 | void *new_func, void **old_func); 33 | 34 | int xh_core_ignore(const char *pathname_regex_str, const char *symbol); 35 | 36 | int xh_core_refresh(int async); 37 | 38 | void xh_core_clear(); 39 | 40 | void xh_core_enable_debug(int flag); 41 | 42 | void xh_core_enable_sigsegv_protection(int flag); 43 | 44 | #ifdef __cplusplus 45 | } 46 | #endif 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jni/xhook/xh_errno.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018-present, iQIYI, Inc. All rights reserved. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | // 21 | 22 | // Created by caikelun on 2018-04-11. 23 | 24 | #ifndef XH_ERRNO_H 25 | #define XH_ERRNO_H 1 26 | 27 | #define XH_ERRNO_UNKNOWN 1001 28 | #define XH_ERRNO_INVAL 1002 29 | #define XH_ERRNO_NOMEM 1003 30 | #define XH_ERRNO_REPEAT 1004 31 | #define XH_ERRNO_NOTFND 1005 32 | #define XH_ERRNO_BADMAPS 1006 33 | #define XH_ERRNO_FORMAT 1007 34 | #define XH_ERRNO_ELFINIT 1008 35 | #define XH_ERRNO_SEGVERR 1009 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jni/xhook/xh_log.c: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018-present, iQIYI, Inc. All rights reserved. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | // 21 | 22 | // Created by caikelun on 2018-04-11. 23 | 24 | #include 25 | #include "xh_log.h" 26 | 27 | android_LogPriority xh_log_priority = ANDROID_LOG_WARN; 28 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jni/xhook/xh_version.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018-present, iQIYI, Inc. All rights reserved. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | // 21 | 22 | // Created by caikelun on 2018-04-11. 23 | 24 | #ifndef XH_VERSION_H 25 | #define XH_VERSION_H 1 26 | 27 | #ifdef __cplusplus 28 | extern "C" { 29 | #endif 30 | 31 | unsigned int xh_version(); 32 | 33 | const char *xh_version_str(); 34 | 35 | const char *xh_version_str_full(); 36 | 37 | #ifdef __cplusplus 38 | } 39 | #endif 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jni/xhook/xhook.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018-present, iQIYI, Inc. All rights reserved. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | // 21 | 22 | // Created by caikelun on 2018-04-11. 23 | 24 | #ifndef XHOOK_H 25 | #define XHOOK_H 1 26 | 27 | #ifdef __cplusplus 28 | extern "C" { 29 | #endif 30 | 31 | #define XHOOK_EXPORT __attribute__((visibility("default"))) 32 | 33 | int xhook_register(const char *pathname_regex_str, const char *symbol, 34 | void *new_func, void **old_func) XHOOK_EXPORT; 35 | 36 | int xhook_ignore(const char *pathname_regex_str, const char *symbol) XHOOK_EXPORT; 37 | 38 | int xhook_refresh(int async) XHOOK_EXPORT; 39 | 40 | void xhook_clear() XHOOK_EXPORT; 41 | 42 | void xhook_enable_debug(int flag) XHOOK_EXPORT; 43 | 44 | void xhook_enable_sigsegv_protection(int flag) XHOOK_EXPORT; 45 | 46 | #ifdef __cplusplus 47 | } 48 | #endif 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/libOSMesa_8.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libOSMesa_8.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/libgl4es_114.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libgl4es_114.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/libgl4es_115.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libgl4es_115.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/libjnidispatch.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libjnidispatch.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_opengl.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_opengl.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_opengles.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_opengles.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_stb.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/liblwjgl_stb.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/libopenal.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libopenal.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/libopenxr_loader.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libopenxr_loader.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/libvgpu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libvgpu.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/arm64-v8a/libvirgl_test_server.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/arm64-v8a/libvirgl_test_server.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libgl4es_114.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libgl4es_114.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libvgpu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/armeabi-v7a/libvgpu.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/x86/libgl4es_114.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/x86/libgl4es_114.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/x86/libvgpu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/x86/libvgpu.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/x86_64/libgl4es_114.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/x86_64/libgl4es_114.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/jniLibs/x86_64/libvgpu.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/jniLibs/x86_64/libvgpu.so -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-anydpi-v21/ic_folder.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-hdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-hdpi/ic_file.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-hdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-hdpi/ic_folder.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-hdpi/ic_setting_disable_gestures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-hdpi/ic_setting_disable_gestures.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-hdpi/ic_setting_freeform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-hdpi/ic_setting_freeform.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-hdpi/ic_setting_lib_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-hdpi/ic_setting_lib_check.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-hdpi/ic_setting_ram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-hdpi/ic_setting_ram.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-hdpi/ic_setting_tap_length.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-hdpi/ic_setting_tap_length.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_file.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_folder.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_menu_java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_menu_java.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_menu_news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_menu_news.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_menu_no_news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_menu_no_news.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_menu_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_menu_settings.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_menu_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_menu_warning.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_remove.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_setting_btn_scale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_setting_btn_scale.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_setting_jre_args.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_setting_jre_args.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-mdpi/ic_setting_mouse_pointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-mdpi/ic_setting_mouse_pointer.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-xhdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-xhdpi/ic_file.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-xhdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-xhdpi/ic_folder.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-xhdpi/ic_setting_hide_sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-xhdpi/ic_setting_hide_sidebar.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-xxhdpi/fabric_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-xxhdpi/fabric_logo.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-xxhdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-xxhdpi/ic_file.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable-xxhdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable-xxhdpi/ic_folder.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/bg.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/button.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/button.jpg -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/control_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/control_button_normal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/control_button_pressed.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/control_side_action_window.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/control_side_action_window.9.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/ic_arrow_back_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/ic_gamepad_pointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/ic_gamepad_pointer.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/ic_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/ic_logo.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/ic_mouse_pointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/ic_mouse_pointer.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/ic_setting_ignore_notch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/ic_setting_ignore_notch.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/ic_setting_mouse_pointer_spd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/ic_setting_mouse_pointer_spd.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/ic_setting_resolution_scaler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/ic_setting_resolution_scaler.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/ic_setting_sign_in_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/ic_setting_sign_in_background.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/ic_view_handle.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/marker_gray.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/marker_green.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/marker_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/marker_yellow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/menu_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 7 | 9 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/mine_button_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/mine_button_focused.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/mine_button_focused.9.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/mine_button_unfocused.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/mine_button_unfocused.9.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/modsbutton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/modsbutton.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/no_focus_shown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/pojav_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/pojav_logo.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/qc512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/qc512.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/questcraftxp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/questcraftxp.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/drawable/side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/drawable/side.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/font/minecraft_ten.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/font/minecraft_ten.ttf -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/font/minecrafter.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/font/minecrafter.ttf -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/font/noto_sans_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/font/noto_sans_bold.ttf -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/layout/activity_custom_controls.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 13 | 14 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/layout/control_action_popup_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | 15 | 28 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/layout/dialog_live_mouse_speed_editor.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 21 | 22 | 31 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/layout/fragment_console_log.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/layout/fragment_news.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 17 | 18 | 19 | 20 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/layout/start_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | 17 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/menu/menu_customctrl.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 13 | 14 | 17 | 18 | 21 | 22 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/menu/menu_runopt.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 22 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/menu/menu_versionopt.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/app_pojavlauncher/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values-af/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values-da/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values-fi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Näytä Lisää 12 | Näytä Vähemmän 13 | 14 | 17 | 18 | 19 | 20 | 21 | Varoitus 22 | Käynnistä Minecraft: Java Edition Questissäsi! 23 | 24 | 25 | 26 | 30 | 31 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values-hi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | PojavLauncher (Minecraft: Java Edition Android के लिए) 5 | QuestCraft 6 | अपने Quest पर Minecraft: Java संस्करण खेलें! 7 | 8 | 9 | 10 | ईमेल या उपयोगकर्ता का नाम 11 | 12 | मुझे लोग्ड इन रखें 13 | Mojang लॉगिन 14 | 15 | यह उपयोगकर्तानाम/username पहले से मौजूद है। 16 | एकाउंट का चयन करें 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | लॉग आउटपुट 33 | 37 | 38 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values-la/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | PojavLauncher (Minecraft: Java Edition quia Android) 5 | QuestCraft 6 | Lorem Minecraft: Java Edition in vestra Quest! 7 | 8 | 9 | 10 | Email uel vos 11 | 12 | Custodi me apud log 13 | Mojang Login 14 | 15 | Hoc nomen iam exi 16 | Ob selectos 17 | 18 | 19 | Et ob hoc remotus! 20 | 21 | 22 | Pojav launcher crashed subito 23 | 24 | 27 | 28 | 29 | 30 | 31 | Monitum 32 | 33 | Exitus 34 | 35 | 36 | Log output 37 | 41 | 42 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values-sr-rCS/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 40dp 4 | 5 | 6 | 16dp 7 | 16dp 8 | 9 | 10 | 2dp 11 | 3dp 12 | 4dp 13 | 8dp 14 | 16dp 15 | 24dp 16 | 32dp 17 | 18 | 19 | 60dp 20 | 60dp 21 | 160dp 22 | 48dp 23 | 24dp 24 | 25 | 26 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values/headings_array.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @string/mcl_setting_renderer_gles2_4 5 | 6 | 7 | 8 | opengles2 9 | 10 | 11 | 12 | @string/gles_hack_none 13 | @string/gles_hack_always 14 | @string/gles_hack_sometimes 15 | 16 | 17 | 0 18 | 1 19 | 4 20 | 21 | 22 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/xml/pref_experimental.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 14 | 15 | 21 | 22 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/xml/pref_java.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 16 | 17 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/xml/pref_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/xml/pref_misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 15 | 16 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app_pojavlauncher/src/main/res/xml/pref_video.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 15 | 16 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /arc_dns_injector/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /arc_dns_injector/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java-library' 3 | } 4 | 5 | java { 6 | sourceCompatibility = JavaVersion.VERSION_1_7 7 | targetCompatibility = JavaVersion.VERSION_1_7 8 | } 9 | jar { 10 | manifest { 11 | attributes("Manifest-Version": "1.0", 12 | "PreMain-Class": "git.artdeell.arcdns.ArcDNSInjectorAgent") 13 | } 14 | destinationDirectory.set(file("../app_pojavlauncher/src/main/assets/")) 15 | } -------------------------------------------------------------------------------- /arc_dns_injector/src/main/java/git/artdeell/arcdns/ArcDNSInjectorAgent.java: -------------------------------------------------------------------------------- 1 | package git.artdeell.arcdns; 2 | 3 | public class ArcDNSInjectorAgent { 4 | public static void premain(String args) { 5 | System.out.println("Arc Capes DNS Injector"); 6 | System.out.println("Parts of Alibaba's DCM library were used, please read https://github.com/alibaba/java-dns-cache-manipulator/blob/main/README.md for more info"); 7 | try { 8 | String[] injectedIps = new String[]{args}; 9 | if (CacheUtilCommons.isJavaVersionAtMost8()) { 10 | CacheUtil_J8.setInetAddressCache("s.optifine.net", injectedIps, CacheUtilCommons.NEVER_EXPIRATION); 11 | } else { 12 | CacheUtil_J9.setInetAddressCache("s.optifine.net", injectedIps, CacheUtilCommons.NEVER_EXPIRATION); 13 | } 14 | System.out.println("Added DNS cache entry: s.optifine.net/"+args); 15 | }catch (Exception e) { 16 | System.out.println("Failed to inject cache!"); 17 | e.printStackTrace(); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | mavenCentral() 6 | google() 7 | jcenter() 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:7.0.4' 11 | 12 | // NOTE: Do not place syour application dependencies here; they belong 13 | // in the individual module build.gradle files 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | mavenCentral() 20 | google() 21 | maven { url "https://jitpack.io" } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: /app_pojavlauncher/src/main/res/values/strings.xml 3 | translation: /app_pojavlauncher/src/main/res/values-%android_code%/%original_file_name% 4 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | android.enableJetifier=true 2 | android.useAndroidX=true 3 | android.bundle.enableUncompressedNativeLibs=false 4 | android.bundle.language.enableSplit=false 5 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Jul 17 15:47:09 PDT 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | apply plugin: 'eclipse' 3 | 4 | group = 'org.lwjgl.glfw' 5 | version = '3.2.3' 6 | 7 | java { 8 | sourceCompatibility = JavaVersion.VERSION_1_8 9 | targetCompatibility = JavaVersion.VERSION_1_8 10 | } 11 | 12 | jar { 13 | //baseName = project.name 14 | baseName = "lwjgl-glfw-classes" 15 | destinationDirectory.set(file("../app_pojavlauncher/src/main/assets/components/lwjgl3/")) 16 | 17 | // Auto update the version with a timestamp so the project jar gets updated by Pojav 18 | File versionFile = file("../app_pojavlauncher/src/main/assets/components/lwjgl3/version") 19 | versionFile.write(String.valueOf(new Date().getTime())) 20 | from { 21 | configurations.default.collect { 22 | println(it.getName()) 23 | it.isDirectory() ? it : zipTree(it) 24 | } 25 | } 26 | } 27 | 28 | repositories { 29 | mavenCentral() 30 | } 31 | 32 | dependencies { 33 | implementation fileTree(dir: 'libs', include: ['*.jar']) 34 | } 35 | 36 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/jre_lwjgl3glfw.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/libs/jsr305.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/jre_lwjgl3glfw/libs/jsr305.jar -------------------------------------------------------------------------------- /jre_lwjgl3glfw/libs/lwjgl-jemalloc.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/jre_lwjgl3glfw/libs/lwjgl-jemalloc.jar -------------------------------------------------------------------------------- /jre_lwjgl3glfw/libs/lwjgl-openal.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/jre_lwjgl3glfw/libs/lwjgl-openal.jar -------------------------------------------------------------------------------- /jre_lwjgl3glfw/libs/lwjgl-opengl.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/jre_lwjgl3glfw/libs/lwjgl-opengl.jar -------------------------------------------------------------------------------- /jre_lwjgl3glfw/libs/lwjgl-stb.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/jre_lwjgl3glfw/libs/lwjgl-stb.jar -------------------------------------------------------------------------------- /jre_lwjgl3glfw/libs/lwjgl-tinyfd.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/jre_lwjgl3glfw/libs/lwjgl-tinyfd.jar -------------------------------------------------------------------------------- /jre_lwjgl3glfw/libs/lwjgl.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuestCraftPlusPlus/PojavLauncher/ea4a6c09d4f30dc01d52ee3aac6dd548fe46755c/jre_lwjgl3glfw/libs/lwjgl.jar -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/android/util/ContainerHelpers.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package android.util; 18 | 19 | class ContainerHelpers { 20 | 21 | // This is Arrays.binarySearch(), but doesn't do any argument validation. 22 | static int binarySearch(int[] array, int size, int value) { 23 | int lo = 0; 24 | int hi = size - 1; 25 | 26 | while (lo <= hi) { 27 | final int mid = (lo + hi) >>> 1; 28 | final int midVal = array[mid]; 29 | 30 | if (midVal < value) { 31 | lo = mid + 1; 32 | } else if (midVal > value) { 33 | hi = mid - 1; 34 | } else { 35 | return mid; // value found 36 | } 37 | } 38 | return ~lo; // value not present 39 | } 40 | 41 | static int binarySearch(long[] array, int size, long value) { 42 | int lo = 0; 43 | int hi = size - 1; 44 | 45 | while (lo <= hi) { 46 | final int mid = (lo + hi) >>> 1; 47 | final long midVal = array[mid]; 48 | 49 | if (midVal < value) { 50 | lo = mid + 1; 51 | } else if (midVal > value) { 52 | hi = mid - 1; 53 | } else { 54 | return mid; // value found 55 | } 56 | } 57 | return ~lo; // value not present 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/android/util/EmptyArray.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package android.util; 17 | 18 | public final class EmptyArray { 19 | private EmptyArray() {} 20 | public static final boolean[] BOOLEAN = new boolean[0]; 21 | public static final byte[] BYTE = new byte[0]; 22 | public static final char[] CHAR = new char[0]; 23 | public static final double[] DOUBLE = new double[0]; 24 | public static final int[] INT = new int[0]; 25 | public static final Class[] CLASS = new Class[0]; 26 | public static final Object[] OBJECT = new Object[0]; 27 | public static final String[] STRING = new String[0]; 28 | public static final Throwable[] THROWABLE = new Throwable[0]; 29 | public static final StackTraceElement[] STACK_TRACE_ELEMENT = new StackTraceElement[0]; 30 | } 31 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/net/minecraft/client/ClientBrandRetriever.java.z: -------------------------------------------------------------------------------- 1 | package net.minecraft.client; 2 | 3 | public class ClientBrandRetriever { 4 | public static String getClientModName() { 5 | // return "vanilla"; 6 | return System.getProperty("net.minecraft.clientmodname", "vanilla"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/PointerWrapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2002-2008 LWJGL Project 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are 7 | * met: 8 | * 9 | * * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * * Neither the name of 'LWJGL' nor the names of 17 | * its contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package org.lwjgl; 33 | 34 | /** 35 | * A common interface for classes that wrap pointer addresses. 36 | * 37 | * @author Spasi 38 | */ 39 | public interface PointerWrapper { 40 | 41 | long getPointer(); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetCharCallback SetCharCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     unsigned int codepoint
21 |  * )
22 | * 23 | * @since version 2.4 24 | */ 25 | @FunctionalInterface 26 | @NativeType("GLFWcharfun") 27 | public interface GLFWCharCallbackI extends CallbackI.V { 28 | 29 | String SIGNATURE = "(pi)v"; 30 | 31 | @Override 32 | default String getSignature() { return SIGNATURE; } 33 | 34 | @Override 35 | default void callback(long args) { 36 | invoke( 37 | dcbArgPointer(args), 38 | dcbArgInt(args) 39 | ); 40 | } 41 | 42 | /** 43 | * Will be called when a Unicode character is input. 44 | * 45 | * @param window the window that received the event 46 | * @param codepoint the Unicode code point of the character 47 | */ 48 | void invoke(@NativeType("GLFWwindow *") long window, @NativeType("unsigned int") int codepoint); 49 | 50 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCharModsCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetCharModsCallback SetCharModsCallback} method. 14 | * 15 | *

Deprecared: scheduled for removal in version 4.0.

16 | * 17 | *

Type

18 | * 19 | *

20 |  * void (*) (
21 |  *     GLFWwindow *window,
22 |  *     unsigned int codepoint,
23 |  *     int mods
24 |  * )
25 | * 26 | * @since version 3.1 27 | */ 28 | @FunctionalInterface 29 | @NativeType("GLFWcharmodsfun") 30 | public interface GLFWCharModsCallbackI extends CallbackI.V { 31 | 32 | String SIGNATURE = "(pii)v"; 33 | 34 | @Override 35 | default String getSignature() { return SIGNATURE; } 36 | 37 | @Override 38 | default void callback(long args) { 39 | invoke( 40 | dcbArgPointer(args), 41 | dcbArgInt(args), 42 | dcbArgInt(args) 43 | ); 44 | } 45 | 46 | /** 47 | * Will be called when a Unicode character is input regardless of what modifier keys are used. 48 | * 49 | * @param window the window that received the event 50 | * @param codepoint the Unicode code point of the character 51 | * @param mods bitfield describing which modifier keys were held down 52 | */ 53 | void invoke(@NativeType("GLFWwindow *") long window, @NativeType("unsigned int") int codepoint, int mods); 54 | 55 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorEnterCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetCursorEnterCallback SetCursorEnterCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     int entered
21 |  * )
22 | * 23 | * @since version 3.0 24 | */ 25 | @FunctionalInterface 26 | @NativeType("GLFWcursorenterfun") 27 | public interface GLFWCursorEnterCallbackI extends CallbackI.V { 28 | 29 | String SIGNATURE = "(pi)v"; 30 | 31 | @Override 32 | default String getSignature() { return SIGNATURE; } 33 | 34 | @Override 35 | default void callback(long args) { 36 | invoke( 37 | dcbArgPointer(args), 38 | dcbArgInt(args) != 0 39 | ); 40 | } 41 | 42 | /** 43 | * Will be called when the cursor enters or leaves the client area of the window. 44 | * 45 | * @param window the window that received the event 46 | * @param entered {@link GLFW#GLFW_TRUE TRUE} if the cursor entered the window's content area, or {@link GLFW#GLFW_FALSE FALSE} if it left it 47 | */ 48 | void invoke(@NativeType("GLFWwindow *") long window, @NativeType("int") boolean entered); 49 | 50 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWCursorPosCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetCursorPosCallback SetCursorPosCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     double xpos,
21 |  *     double ypos
22 |  * )
23 | * 24 | * @since version 3.0 25 | */ 26 | @FunctionalInterface 27 | @NativeType("GLFWcursorposfun") 28 | public interface GLFWCursorPosCallbackI extends CallbackI.V { 29 | 30 | String SIGNATURE = "(pdd)v"; 31 | 32 | @Override 33 | default String getSignature() { return SIGNATURE; } 34 | 35 | @Override 36 | default void callback(long args) { 37 | invoke( 38 | dcbArgPointer(args), 39 | dcbArgDouble(args), 40 | dcbArgDouble(args) 41 | ); 42 | } 43 | 44 | /** 45 | * Will be called when the cursor is moved. 46 | * 47 | *

The callback function receives the cursor position, measured in screen coordinates but relative to the top-left corner of the window client area. On 48 | * platforms that provide it, the full sub-pixel cursor position is passed on.

49 | * 50 | * @param window the window that received the event 51 | * @param xpos the new cursor x-coordinate, relative to the left edge of the content area 52 | * @param ypos the new cursor y-coordinate, relative to the top edge of the content area 53 | */ 54 | void invoke(@NativeType("GLFWwindow *") long window, double xpos, double ypos); 55 | 56 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWDropCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetDropCallback SetDropCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     int count,
21 |  *     char const **names
22 |  * )
23 | * 24 | * @since version 3.1 25 | */ 26 | @FunctionalInterface 27 | @NativeType("GLFWdropfun") 28 | public interface GLFWDropCallbackI extends CallbackI.V { 29 | 30 | String SIGNATURE = "(pip)v"; 31 | 32 | @Override 33 | default String getSignature() { return SIGNATURE; } 34 | 35 | @Override 36 | default void callback(long args) { 37 | invoke( 38 | dcbArgPointer(args), 39 | dcbArgInt(args), 40 | dcbArgPointer(args) 41 | ); 42 | } 43 | 44 | /** 45 | * Will be called when one or more dragged files are dropped on the window. 46 | * 47 | * @param window the window that received the event 48 | * @param count the number of dropped files 49 | * @param names pointer to the array of UTF-8 encoded path names of the dropped files 50 | */ 51 | void invoke(@NativeType("GLFWwindow *") long window, int count, @NativeType("char const **") long names); 52 | 53 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWErrorCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetErrorCallback SetErrorCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     int error,
20 |  *     char *description
21 |  * )
22 | * 23 | * @since version 3.0 24 | */ 25 | @FunctionalInterface 26 | @NativeType("GLFWerrorfun") 27 | public interface GLFWErrorCallbackI extends CallbackI.V { 28 | 29 | String SIGNATURE = "(ip)v"; 30 | 31 | @Override 32 | default String getSignature() { return SIGNATURE; } 33 | 34 | @Override 35 | default void callback(long args) { 36 | invoke( 37 | dcbArgInt(args), 38 | dcbArgPointer(args) 39 | ); 40 | } 41 | 42 | /** 43 | * Will be called with an error code and a human-readable description when a GLFW error occurs. 44 | * 45 | * @param error the error code 46 | * @param description a pointer to a UTF-8 encoded string describing the error 47 | */ 48 | void invoke(int error, @NativeType("char *") long description); 49 | 50 | } 51 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWFramebufferSizeCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetFramebufferSizeCallback SetFramebufferSizeCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     int width,
21 |  *     int height
22 |  * )
23 | * 24 | * @since version 3.0 25 | */ 26 | @FunctionalInterface 27 | @NativeType("GLFWframebuffersizefun") 28 | public interface GLFWFramebufferSizeCallbackI extends CallbackI.V { 29 | 30 | String SIGNATURE = "(pii)v"; 31 | 32 | @Override 33 | default String getSignature() { return SIGNATURE; } 34 | 35 | @Override 36 | default void callback(long args) { 37 | invoke( 38 | dcbArgPointer(args), 39 | dcbArgInt(args), 40 | dcbArgInt(args) 41 | ); 42 | } 43 | 44 | /** 45 | * Will be called when the framebuffer of the specified window is resized. 46 | * 47 | * @param window the window whose framebuffer was resized 48 | * @param width the new width, in pixels, of the framebuffer 49 | * @param height the new height, in pixels, of the framebuffer 50 | */ 51 | void invoke(@NativeType("GLFWwindow *") long window, int width, int height); 52 | 53 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWJoystickCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetJoystickCallback SetJoystickCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     int jid,
20 |  *     int event
21 |  * )
22 | * 23 | * @since version 3.2 24 | */ 25 | @FunctionalInterface 26 | @NativeType("GLFWjoystickfun") 27 | public interface GLFWJoystickCallbackI extends CallbackI.V { 28 | 29 | String SIGNATURE = "(ii)v"; 30 | 31 | @Override 32 | default String getSignature() { return SIGNATURE; } 33 | 34 | @Override 35 | default void callback(long args) { 36 | invoke( 37 | dcbArgInt(args), 38 | dcbArgInt(args) 39 | ); 40 | } 41 | 42 | /** 43 | * Will be called when a joystick is connected to or disconnected from the system. 44 | * 45 | * @param jid the joystick that was connected or disconnected 46 | * @param event one of {@link GLFW#GLFW_CONNECTED CONNECTED} or {@link GLFW#GLFW_DISCONNECTED DISCONNECTED}. Remaining values reserved for future use. 47 | */ 48 | void invoke(int jid, int event); 49 | 50 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWKeyCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetKeyCallback SetKeyCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     int key,
21 |  *     int scancode,
22 |  *     int action,
23 |  *     int mods
24 |  * )
25 | */ 26 | @FunctionalInterface 27 | @NativeType("GLFWkeyfun") 28 | public interface GLFWKeyCallbackI extends CallbackI.V { 29 | 30 | String SIGNATURE = "(piiii)v"; 31 | 32 | @Override 33 | default String getSignature() { return SIGNATURE; } 34 | 35 | @Override 36 | default void callback(long args) { 37 | invoke( 38 | dcbArgPointer(args), 39 | dcbArgInt(args), 40 | dcbArgInt(args), 41 | dcbArgInt(args), 42 | dcbArgInt(args) 43 | ); 44 | } 45 | 46 | /** 47 | * Will be called when a key is pressed, repeated or released. 48 | * 49 | * @param window the window that received the event 50 | * @param key the keyboard key that was pressed or released 51 | * @param scancode the system-specific scancode of the key 52 | * @param action the key action. One of:
{@link GLFW#GLFW_PRESS PRESS}{@link GLFW#GLFW_RELEASE RELEASE}{@link GLFW#GLFW_REPEAT REPEAT}
53 | * @param mods bitfield describing which modifiers keys were held down 54 | */ 55 | void invoke(@NativeType("GLFWwindow *") long window, int key, int scancode, int action, int mods); 56 | 57 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMonitorCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetMonitorCallback SetMonitorCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWmonitor *monitor,
20 |  *     int event
21 |  * )
22 | * 23 | * @since version 3.0 24 | */ 25 | @FunctionalInterface 26 | @NativeType("GLFWmonitorfun") 27 | public interface GLFWMonitorCallbackI extends CallbackI.V { 28 | 29 | String SIGNATURE = "(pi)v"; 30 | 31 | @Override 32 | default String getSignature() { return SIGNATURE; } 33 | 34 | @Override 35 | default void callback(long args) { 36 | invoke( 37 | dcbArgPointer(args), 38 | dcbArgInt(args) 39 | ); 40 | } 41 | 42 | /** 43 | * Will be called when a monitor is connected to or disconnected from the system. 44 | * 45 | * @param monitor the monitor that was connected or disconnected 46 | * @param event one of {@link GLFW#GLFW_CONNECTED CONNECTED} or {@link GLFW#GLFW_DISCONNECTED DISCONNECTED}. Remaining values reserved for future use. 47 | */ 48 | void invoke(@NativeType("GLFWmonitor *") long monitor, int event); 49 | 50 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWMouseButtonCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetMouseButtonCallback SetMouseButtonCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     int button,
21 |  *     int action,
22 |  *     int mods
23 |  * )
24 | */ 25 | @FunctionalInterface 26 | @NativeType("GLFWmousebuttonfun") 27 | public interface GLFWMouseButtonCallbackI extends CallbackI.V { 28 | 29 | String SIGNATURE = "(piii)v"; 30 | 31 | @Override 32 | default String getSignature() { return SIGNATURE; } 33 | 34 | @Override 35 | default void callback(long args) { 36 | invoke( 37 | dcbArgPointer(args), 38 | dcbArgInt(args), 39 | dcbArgInt(args), 40 | dcbArgInt(args) 41 | ); 42 | } 43 | 44 | /** 45 | * Will be called when a mouse button is pressed or released. 46 | * 47 | * @param window the window that received the event 48 | * @param button the mouse button that was pressed or released 49 | * @param action the button action. One of:
{@link GLFW#GLFW_PRESS PRESS}{@link GLFW#GLFW_RELEASE RELEASE}
50 | * @param mods bitfield describing which modifiers keys were held down 51 | */ 52 | void invoke(@NativeType("GLFWwindow *") long window, int button, int action, int mods); 53 | 54 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWScrollCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetScrollCallback SetScrollCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     double xoffset,
21 |  *     double yoffset
22 |  * )
23 | * 24 | * @since version 3.0 25 | */ 26 | @FunctionalInterface 27 | @NativeType("GLFWscrollfun") 28 | public interface GLFWScrollCallbackI extends CallbackI.V { 29 | 30 | String SIGNATURE = "(pdd)v"; 31 | 32 | @Override 33 | default String getSignature() { return SIGNATURE; } 34 | 35 | @Override 36 | default void callback(long args) { 37 | invoke( 38 | dcbArgPointer(args), 39 | dcbArgDouble(args), 40 | dcbArgDouble(args) 41 | ); 42 | } 43 | 44 | /** 45 | * Will be called when a scrolling device is used, such as a mouse wheel or scrolling area of a touchpad. 46 | * 47 | * @param window the window that received the event 48 | * @param xoffset the scroll offset along the x-axis 49 | * @param yoffset the scroll offset along the y-axis 50 | */ 51 | void invoke(@NativeType("GLFWwindow *") long window, double xoffset, double yoffset); 52 | 53 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowCloseCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowCloseCallback SetWindowCloseCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window
20 |  * )
21 | * 22 | * @since version 2.5 23 | */ 24 | @FunctionalInterface 25 | @NativeType("GLFWwindowclosefun") 26 | public interface GLFWWindowCloseCallbackI extends CallbackI.V { 27 | 28 | String SIGNATURE = "(p)v"; 29 | 30 | @Override 31 | default String getSignature() { return SIGNATURE; } 32 | 33 | @Override 34 | default void callback(long args) { 35 | invoke( 36 | dcbArgPointer(args) 37 | ); 38 | } 39 | 40 | /** 41 | * Will be called when the user attempts to close the specified window, for example by clicking the close widget in the title bar. 42 | * 43 | * @param window the window that the user attempted to close 44 | */ 45 | void invoke(@NativeType("GLFWwindow *") long window); 46 | 47 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowContentScaleCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowContentScaleCallback SetWindowContentScaleCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     float xscale,
21 |  *     float yscale
22 |  * )
23 | * 24 | * @since version 3.3 25 | */ 26 | @FunctionalInterface 27 | @NativeType("GLFWwindowcontentscalefun") 28 | public interface GLFWWindowContentScaleCallbackI extends CallbackI.V { 29 | 30 | String SIGNATURE = "(pff)v"; 31 | 32 | @Override 33 | default String getSignature() { return SIGNATURE; } 34 | 35 | @Override 36 | default void callback(long args) { 37 | invoke( 38 | dcbArgPointer(args), 39 | dcbArgFloat(args), 40 | dcbArgFloat(args) 41 | ); 42 | } 43 | 44 | /** 45 | * Will be called when the window content scale changes. 46 | * 47 | * @param window the window whose content scale changed 48 | * @param xscale the new x-axis content scale of the window 49 | * @param yscale the new y-axis content scale of the window 50 | */ 51 | void invoke(@NativeType("GLFWwindow *") long window, float xscale, float yscale); 52 | 53 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowFocusCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowFocusCallback SetWindowFocusCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     int focused
21 |  * )
22 | * 23 | * @since version 3.0 24 | */ 25 | @FunctionalInterface 26 | @NativeType("GLFWwindowfocusfun") 27 | public interface GLFWWindowFocusCallbackI extends CallbackI.V { 28 | 29 | String SIGNATURE = "(pi)v"; 30 | 31 | @Override 32 | default String getSignature() { return SIGNATURE; } 33 | 34 | @Override 35 | default void callback(long args) { 36 | invoke( 37 | dcbArgPointer(args), 38 | dcbArgInt(args) != 0 39 | ); 40 | } 41 | 42 | /** 43 | * Will be called when the specified window gains or loses focus. 44 | * 45 | * @param window the window that was focused or defocused 46 | * @param focused {@link GLFW#GLFW_TRUE TRUE} if the window was focused, or {@link GLFW#GLFW_FALSE FALSE} if it was defocused 47 | */ 48 | void invoke(@NativeType("GLFWwindow *") long window, @NativeType("int") boolean focused); 49 | 50 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowIconifyCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowIconifyCallback SetWindowIconifyCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     int iconified
21 |  * )
22 | * 23 | * @since version 3.0 24 | */ 25 | @FunctionalInterface 26 | @NativeType("GLFWwindowiconifyfun") 27 | public interface GLFWWindowIconifyCallbackI extends CallbackI.V { 28 | 29 | String SIGNATURE = "(pi)v"; 30 | 31 | @Override 32 | default String getSignature() { return SIGNATURE; } 33 | 34 | @Override 35 | default void callback(long args) { 36 | invoke( 37 | dcbArgPointer(args), 38 | dcbArgInt(args) != 0 39 | ); 40 | } 41 | 42 | /** 43 | * Will be called when the specified window is iconified or restored. 44 | * 45 | * @param window the window that was iconified or restored. 46 | * @param iconified {@link GLFW#GLFW_TRUE TRUE} if the window was iconified, or {@link GLFW#GLFW_FALSE FALSE} if it was restored 47 | */ 48 | void invoke(@NativeType("GLFWwindow *") long window, @NativeType("int") boolean iconified); 49 | 50 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowMaximizeCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowMaximizeCallback SetWindowMaximizeCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     int maximized
21 |  * )
22 | * 23 | * @since version 3.3 24 | */ 25 | @FunctionalInterface 26 | @NativeType("GLFWwindowmaximizefun") 27 | public interface GLFWWindowMaximizeCallbackI extends CallbackI.V { 28 | 29 | String SIGNATURE = "(pi)v"; 30 | 31 | @Override 32 | default String getSignature() { return SIGNATURE; } 33 | 34 | @Override 35 | default void callback(long args) { 36 | invoke( 37 | dcbArgPointer(args), 38 | dcbArgInt(args) != 0 39 | ); 40 | } 41 | 42 | /** 43 | * Will be called when the specified window is maximized or restored. 44 | * 45 | * @param window the window that was maximized or restored. 46 | * @param maximized {@link GLFW#GLFW_TRUE TRUE} if the window was maximized, or {@link GLFW#GLFW_FALSE FALSE} if it was restored 47 | */ 48 | void invoke(@NativeType("GLFWwindow *") long window, @NativeType("int") boolean maximized); 49 | 50 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowPosCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowPosCallback SetWindowPosCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     int xpos,
21 |  *     int ypos
22 |  * )
23 | * 24 | * @since version 3.0 25 | */ 26 | @FunctionalInterface 27 | @NativeType("GLFWwindowposfun") 28 | public interface GLFWWindowPosCallbackI extends CallbackI.V { 29 | 30 | String SIGNATURE = "(pii)v"; 31 | 32 | @Override 33 | default String getSignature() { return SIGNATURE; } 34 | 35 | @Override 36 | default void callback(long args) { 37 | invoke( 38 | dcbArgPointer(args), 39 | dcbArgInt(args), 40 | dcbArgInt(args) 41 | ); 42 | } 43 | 44 | /** 45 | * Will be called when the specified window moves. 46 | * 47 | * @param window the window that was moved 48 | * @param xpos the new x-coordinate, in screen coordinates, of the upper-left corner of the content area of the window 49 | * @param ypos the new y-coordinate, in screen coordinates, of the upper-left corner of the content area of the window 50 | */ 51 | void invoke(@NativeType("GLFWwindow *") long window, int xpos, int ypos); 52 | 53 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowProperties.java: -------------------------------------------------------------------------------- 1 | package org.lwjgl.glfw; 2 | 3 | import java.util.*; 4 | 5 | public class GLFWWindowProperties { 6 | public int width = GLFW.mGLFWWindowWidth; 7 | public int height = GLFW.mGLFWWindowHeight; 8 | public int x, y; 9 | public CharSequence title; 10 | public boolean shouldClose, isInitialSizeCalled, isCursorEntered; 11 | public Map inputModes = new HashMap<>(); 12 | public Map windowAttribs = new HashMap<>(); 13 | } 14 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowRefreshCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowRefreshCallback SetWindowRefreshCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window
20 |  * )
21 | * 22 | * @since version 2.5 23 | */ 24 | @FunctionalInterface 25 | @NativeType("GLFWwindowrefreshfun") 26 | public interface GLFWWindowRefreshCallbackI extends CallbackI.V { 27 | 28 | String SIGNATURE = "(p)v"; 29 | 30 | @Override 31 | default String getSignature() { return SIGNATURE; } 32 | 33 | @Override 34 | default void callback(long args) { 35 | invoke( 36 | dcbArgPointer(args) 37 | ); 38 | } 39 | 40 | /** 41 | * Will be called when the client area of the specified window needs to be redrawn, for example if the window has been exposed after having been covered by 42 | * another window. 43 | * 44 | * @param window the window whose content needs to be refreshed 45 | */ 46 | void invoke(@NativeType("GLFWwindow *") long window); 47 | 48 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/GLFWWindowSizeCallbackI.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | package org.lwjgl.glfw; 7 | 8 | import org.lwjgl.system.*; 9 | 10 | import static org.lwjgl.system.dyncall.DynCallback.*; 11 | 12 | /** 13 | * Instances of this interface may be passed to the {@link GLFW#glfwSetWindowSizeCallback SetWindowSizeCallback} method. 14 | * 15 | *

Type

16 | * 17 | *

18 |  * void (*) (
19 |  *     GLFWwindow *window,
20 |  *     int width,
21 |  *     int height
22 |  * )
23 | */ 24 | @FunctionalInterface 25 | @NativeType("GLFWwindowsizefun") 26 | public interface GLFWWindowSizeCallbackI extends CallbackI.V { 27 | 28 | String SIGNATURE = "(pii)v"; 29 | 30 | @Override 31 | default String getSignature() { return SIGNATURE; } 32 | 33 | @Override 34 | default void callback(long args) { 35 | invoke( 36 | dcbArgPointer(args), 37 | dcbArgInt(args), 38 | dcbArgInt(args) 39 | ); 40 | } 41 | 42 | /** 43 | * Will be called when the specified window is resized. 44 | * 45 | * @param window the window that was resized 46 | * @param width the new width, in screen coordinates, of the window 47 | * @param height the new height, in screen coordinates, of the window 48 | */ 49 | void invoke(@NativeType("GLFWwindow *") long window, int width, int height); 50 | 51 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/glfw/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright LWJGL. All rights reserved. 3 | * License terms: https://www.lwjgl.org/license 4 | * MACHINE GENERATED FILE, DO NOT EDIT 5 | */ 6 | 7 | /** 8 | * Contains bindings to the GLFW library. 9 | * 10 | *

GLFW comes with extensive documentation, which you can read online here. The 11 | * Frequently Asked Questions are also useful.

12 | * 13 | *

On macOS the JVM must be started with the {@code -XstartOnFirstThread} argument for GLFW to work. This is necessary because most GLFW functions must be 14 | * called on the main thread and the Cocoa API on macOS requires that thread to be the first thread in the process. For this reason, on-screen GLFW 15 | * windows and the GLFW event loop are incompatible with other window toolkits (such as AWT/Swing or JavaFX) on macOS. Off-screen GLFW windows can be used 16 | * with other window toolkits, but only if the window toolkit is initialized before GLFW.

17 | */ 18 | @org.lwjgl.system.NonnullDefault 19 | package org.lwjgl.glfw; 20 | 21 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Controllers.java: -------------------------------------------------------------------------------- 1 | package org.lwjgl.input; 2 | 3 | import org.lwjgl.Sys; 4 | import org.lwjgl.glfw.GLFWJoystickCallback; 5 | 6 | public class Controllers { 7 | static GLFWController ctrlr; 8 | public static void create() { 9 | ctrlr = new GLFWController(); 10 | ctrlr.jid = 0; 11 | } 12 | public static Controller getController(int ctrl) { 13 | return ctrlr; 14 | } 15 | public static int getControllerCount() { 16 | return 1; 17 | } 18 | public static void poll() { 19 | ctrlr.poll(); 20 | } 21 | public static boolean next() { 22 | ctrlr.poll(); 23 | return true; 24 | } 25 | public static boolean isCreated() { 26 | return true; 27 | } 28 | public static void destroy() { 29 | 30 | } 31 | public static void clearEvents() {} 32 | public static Controller getEventSource() { 33 | return ctrlr; 34 | } 35 | 36 | public static int getEventControlIndex() { 37 | return 0; 38 | } 39 | 40 | public static boolean isEventButton() { 41 | return true; 42 | } 43 | 44 | public static boolean isEventAxis() { 45 | return true; 46 | } 47 | 48 | public static boolean isEventXAxis() { 49 | return true; 50 | } 51 | 52 | public static boolean isEventYAxis() { 53 | return true; 54 | } 55 | 56 | public static boolean isEventPovX() { 57 | return true; 58 | } 59 | 60 | public static boolean isEventPovY() { 61 | return true; 62 | } 63 | 64 | public static long getEventNanoseconds() { 65 | return Sys.getNanoTime(); 66 | } 67 | 68 | public static boolean getEventButtonState() { 69 | return true; 70 | } 71 | 72 | public static float getEventXAxisValue() { 73 | return ctrlr.getXAxisValue(); 74 | } 75 | 76 | public static float getEventYAxisValue() { 77 | return ctrlr.getYAxisValue(); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/ARBBufferObject.java: -------------------------------------------------------------------------------- 1 | package org.lwjgl.opengl; 2 | 3 | public class ARBBufferObject extends ARBVertexBufferObject 4 | { 5 | } 6 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/EXTAbgr.java: -------------------------------------------------------------------------------- 1 | package org.lwjgl.opengl; 2 | 3 | import org.lwjgl.opengl.EXTABGR; 4 | 5 | public class EXTAbgr { 6 | public final static int GL_ABGR_EXT = EXTABGR.GL_ABGR_EXT; 7 | } 8 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/EXTTextureRectangle.java: -------------------------------------------------------------------------------- 1 | package org.lwjgl.opengl; 2 | 3 | public class EXTTextureRectangle { 4 | public final static int GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT = 34040; 5 | public final static int GL_PROXY_TEXTURE_RECTANGLE_EXT = 34039; 6 | public final static int GL_TEXTURE_BINDING_RECTANGLE_EXT = 34038; 7 | public final static int GL_TEXTURE_RECTANGLE_EXT = 34037; 8 | } 9 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GLContext.java: -------------------------------------------------------------------------------- 1 | package org.lwjgl.opengl; 2 | 3 | 4 | public class GLContext { 5 | 6 | private static ThreadLocal contextCapabilities = new ThreadLocal<>(); 7 | 8 | public static GLContext createFromCurrent() { 9 | return new GLContext(); 10 | } 11 | public static void initCapabilities() { 12 | if(contextCapabilities.get() == null) { 13 | System.out.println("LWJGLX: GL caps init"); 14 | contextCapabilities.set(new ContextCapabilities()); 15 | } 16 | } 17 | public static ContextCapabilities getCapabilities() { 18 | return contextCapabilities.get(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GLSync.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2002-2008 LWJGL Project 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are 7 | * met: 8 | * 9 | * * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * * Neither the name of 'LWJGL' nor the names of 17 | * its contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package org.lwjgl.opengl; 33 | 34 | import org.lwjgl.PointerWrapperAbstract; 35 | 36 | /** 37 | * This class is a wrapper around a GLsync pointer. 38 | * 39 | * @author spasi 40 | */ 41 | public final class GLSync extends PointerWrapperAbstract { 42 | 43 | GLSync(final long sync) { 44 | super(sync); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/GlobalLock.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2002-2008 LWJGL Project 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are 7 | * met: 8 | * 9 | * * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * * Neither the name of 'LWJGL' nor the names of 17 | * its contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package org.lwjgl.opengl; 33 | 34 | /** 35 | * This class contains the global lock that LWJGL will use to 36 | * synchronize access to Display. 37 | */ 38 | final class GlobalLock { 39 | static final Object lock = new Object(); 40 | } 41 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/opengl/PixelFormatLWJGL.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2002-2011 LWJGL Project 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are 7 | * met: 8 | * 9 | * * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * * Neither the name of 'LWJGL' nor the names of 17 | * its contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package org.lwjgl.opengl; 33 | 34 | /** 35 | * [INTERNAL USE ONLY] 36 | * 37 | * @author Spasi 38 | */ 39 | public interface PixelFormatLWJGL { 40 | // Marker interface 41 | } 42 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/util/Renderable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2002-2008 LWJGL Project 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are 7 | * met: 8 | * 9 | * * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * * Neither the name of 'LWJGL' nor the names of 17 | * its contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package org.lwjgl.util; 33 | 34 | /** 35 | * 36 | * Simple interface to things that can be Rendered. 37 | * 38 | * @author $Author$ 39 | * @version $Revision$ 40 | * $Id$ 41 | */ 42 | public interface Renderable { 43 | 44 | /** 45 | * "Render" this thing. This will involve calls to the GL. 46 | */ 47 | void render(); 48 | 49 | } 50 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/util/WritablePoint.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2002-2008 LWJGL Project 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are 7 | * met: 8 | * 9 | * * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * * Neither the name of 'LWJGL' nor the names of 17 | * its contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package org.lwjgl.util; 33 | 34 | /** 35 | * Write interface for Points 36 | * @author $Author$ 37 | * @version $Revision$ 38 | * $Id$ 39 | */ 40 | public interface WritablePoint { 41 | void setLocation(int x, int y); 42 | void setLocation(ReadablePoint p); 43 | void setX(int x); 44 | void setY(int y); 45 | } -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/util/vector/ReadableVector2f.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2002-2008 LWJGL Project 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are 7 | * met: 8 | * 9 | * * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * * Neither the name of 'LWJGL' nor the names of 17 | * its contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package org.lwjgl.util.vector; 33 | 34 | /** 35 | * @author foo 36 | */ 37 | public interface ReadableVector2f extends ReadableVector { 38 | /** 39 | * @return x 40 | */ 41 | float getX(); 42 | /** 43 | * @return y 44 | */ 45 | float getY(); 46 | } 47 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/util/vector/ReadableVector3f.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2002-2008 LWJGL Project 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are 7 | * met: 8 | * 9 | * * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * * Neither the name of 'LWJGL' nor the names of 17 | * its contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package org.lwjgl.util.vector; 33 | 34 | /** 35 | * @author foo 36 | */ 37 | public interface ReadableVector3f extends ReadableVector2f { 38 | /** 39 | * @return z 40 | */ 41 | float getZ(); 42 | } 43 | -------------------------------------------------------------------------------- /jre_lwjgl3glfw/src/main/java/org/lwjgl/util/vector/ReadableVector4f.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2002-2008 LWJGL Project 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are 7 | * met: 8 | * 9 | * * Redistributions of source code must retain the above copyright 10 | * notice, this list of conditions and the following disclaimer. 11 | * 12 | * * Redistributions in binary form must reproduce the above copyright 13 | * notice, this list of conditions and the following disclaimer in the 14 | * documentation and/or other materials provided with the distribution. 15 | * 16 | * * Neither the name of 'LWJGL' nor the names of 17 | * its contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | package org.lwjgl.util.vector; 33 | 34 | /** 35 | * @author foo 36 | */ 37 | public interface ReadableVector4f extends ReadableVector3f { 38 | 39 | /** 40 | * @return w 41 | */ 42 | float getW(); 43 | 44 | } 45 | -------------------------------------------------------------------------------- /scripts/languagelist_updater.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set thisdir = "%~dp0" 4 | set langfile = %thisdir%\..\app_pojavlauncher\src\main\assets\language_list.txt 5 | 6 | del %langfile% 7 | dir %thisdir%\..\app_pojavlauncher\src\main\res\values-* /s /b > %langfile% 8 | 9 | -------------------------------------------------------------------------------- /scripts/languagelist_updater.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | THISDIR=`dirname $0` 4 | LANGFILE=$THISDIR/../app_pojavlauncher/src/main/assets/language_list.txt 5 | 6 | rm -f $LANGFILE 7 | echo $THISDIR/../app_pojavlauncher/src/main/res/values-* | xargs -- basename -a > $LANGFILE 8 | 9 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name='PojavLauncher' 2 | include ':jre_lwjgl3glfw' 3 | include ':app_pojavlauncher' 4 | 5 | include ':arc_dns_injector' 6 | --------------------------------------------------------------------------------