46 Commits
Author SHA1 Message Date
khanhduytran0 fb75288831 Fix: update ANGLE and default binding to desktop
Updated ANGLE to
https://github.com/google/angle/commit/6024e9c05548480c3b2ea42836a11250
9a549a95. It sucks that newer commit completely removed Desktop GL
frontend (as well as no LTW since GLES 3.x aren't gonna be implemented
anytime soon)
Misc: exclude simulator and Mac Catalyst from get-task-allow
enforcement.
2024-12-11 19:22:03 +07:00
khanhduytran0 a722b4a8c9 Build: split sandboxed & TrollStore JIT version
Sandboxed version installed using TrollStore will use URL Scheme to
enable JIT. tipa build keeps self-JIT but is unsafe to use.
2024-01-29 20:48:01 +07:00
khanhduytran0 8bf56d7443 Feat[jar launcher]: add log output
- rename 'Install .jar' to 'Execute .jar'
2023-11-15 05:56:17 +07:00
khanhduytran0 dad3bb0239 Feat: display error if get-task-allow is absent
This notifies user that they are using an unsupported installation method (E-sign for example) that does not provide JIT permission.
2023-09-03 14:26:48 +07:00
Eva Luna 4df7c78dd1 [JIT] Fix issue with logic 2023-07-18 02:00:34 -04:00
Eva Luna af888219a5 [JIT] Remove AltKit disabling feature, as this is the only integration
For some reason on my iPad, isJITEnabled always returned true. This commit logistically should work, but it's technically untested.
2023-07-15 03:26:43 -04:00
Eva Luna 4eeb216ec5 [JIT] Remove support for JitStreamer and custom servers
The official JitStreamer servers were shut down a few months ago, and we haven't seen any reports of users self-hosting it due to the complicated setup required. Viable alternatives are AltJit, SideJit, and Jitterbug (just to name a few.)
2023-07-15 02:45:33 -04:00
khanhduytran0 094160fbee Fix[UI]: profile states on switch/delete 2023-07-06 16:15:41 +07:00
khanhduytran0 6cf61e62c0 Feats: preference isolation & profile management
- Rewrote LauncherPreferences -> PLPreferences
 + Now the file layout is the same as UI layout
 + (get/set)Preference are replaced with corresponding get/set types + Getting/setting is now done through keyPath instead of manually iterating over subdictionaries.
 + Implemented an isolation layer, allowing an instance to have its own settings. This is off by default

- Implemented launcher_profiles
 + Added Profile manager that can be accessed from the sidebar
 + Moved "Game directory (instances)" to this screen
 + Replaced version selector with profile selector. Version selector is moved into profile editor.

- Other changes
 + Cleanup code by using NSPredicate instead of huge for loops
 + Titles in settings are made multilined
 + Controller config: replaced bar button items with localized ones

Due to how large the changes are, this is committed directly to the mainline branch. Bugs are expected to be found (although I did enough tests for this locally)
2023-07-06 13:59:07 +07:00
Duy Tran Khanh 3ee753dbd1 Refactor: split pref builder code, don't reinit views
launcher_profiles.json: set latest-release instead of unknown
2023-07-01 20:07:00 +07:00
Duy Tran Khanh 6cd3d84218 Build: comment out uncommitted header 2023-06-30 16:16:10 +07:00
Duy Tran Khanh 6132c7dc53 Fix UI icons size
Makes icons size smaller

Refactor: clean instance file manager list code
2023-06-30 09:58:11 +07:00
Duy Tran KhanhandDuy Tran Khanh 8d6d66dd94 Feats: external runtime, update LWJGL to 3.3.1 (#579)
* Feat: external runtime manager

Currently missing: mmap hook

* we're past this ui todo

* feat: Bypass Library Validation (untested)

This bypass works because of JIT enabled, so the process can patch
anything loaded in the memory. Unsigned dylib works with JIT too.

* Fix `could not get real path` on iOS 14.x

iOS 15+ is untested, it may need patching in dyld instead of libSystem

* Make redirectFunction syscall-friendly

Replaced builtin_mprotect and vm_protect with a simple syscall to
_kernelrpc_mach_vm_protect_trap

* Add dyld hook back for iOS 15+, auto symlink xawt lib

* Cleanup Tools.java:showError+comments

Use System.exit(1) to drop to Game Exited screen instead of presenting
alert dialog on exception handled.

* Patch both to bypass codesigning at best

* Proper way of ignoring SIGBUS during patch

Turns out other background thread might also be calling inside dirty
page, so let's SIG_IGN them all until page permission is back to RX.

* Feat(install jar): auto detect java version

Rename Default version to Preferred version to match the behavior or
Install .jar detection: only override if selected version > required
version.
Add UnzipKit just to check jar file

Refactor(showDialog): remove viewController parameter, now use its own
ViewController to present.

* Feat: update LWJGL to 3.3.1
(tinygl4angle) add alias for GL_KHR_debug functions
Include nanovg for OneConfig mod
Move all LWJGLX classes to lwjgl3 repo
Set org.lwjgl.util.NoChecks=true to improve performance

* Fix: Forge 1.20 crashes (wrong artifact path)
Now use json-provided artifact path instead of generating one
Make lwjgl fat jar again

* Fix: handle null library artifact

* Fix: fatal glfw callback cleanup

* Build: fix copying LWJGL libraries

* Perf: set default settings

* Fix: incorrect SolClient useStackQueue check

* Feat: builtin runtime installer

Refactor parts of LauncherNavigationController.m
Workaround(LogView): disable animation on update to mitigate overload

* Fix: random game directory failures

This is caused by having current working directory unchanged after
re-making symlink.

* Fixes: TL-style artifact, update arc_dns_injector

Change pojavInit names

* Fix: 1.13+ isUseStackQueueCall check

* Build: update liblwjgl.dylib in attempt to fix ffi_closure_alloc

* Fix and improvements to the logger

- Dynamically get stdout/stderr fileno instead of fixed value
- Improve file migration logging
- Improve dyld bypass logging

* Fix(pickers): file permission issue

---------

Co-authored-by: Duy Tran Khanh <[email protected]>
2023-06-28 21:49:15 +07:00
Eilionoir Tunnicliff dc22673b06 Remove iOS 12/13 supporting code + Alderis
PojavLauncher 3.0 will require heavy modifications in order to work on those two iOS versions now.
2023-05-08 11:15:52 -04:00
Eilionoir Tunnicliff e906a797d5 No more large titles, change various localizations 2023-04-26 11:24:47 -04:00
Duy Tran Khanh 2f966e07d9 Fix: crash on iPadOS 16.4
Invalid indexPath was not handled till 16.4, also fixes focus not
displaying at startup
2023-04-07 07:25:12 +07:00
Duy Tran Khanh 7a497c6d1d Fixes: nil UITableViewCell; small share icon 2023-04-06 07:39:44 +07:00
Duy Tran Khanh fcb9062b47 Fix: potential out of bounds exception 2023-04-04 07:10:42 +07:00
Eilionoir Tunnicliff c8a31cdafa Rewrite the integrations function again to fix dialog race condition 2023-03-23 22:08:35 -04:00
Eilionoir Tunnicliff 7fd4b7902b Add option to disable AltKit, changes to dialogs, and larger navigation bar headers
Time to go play Destiny 2
2023-03-09 17:46:19 -05:00
Eilionoir Tunnicliff e2040fb3be Readd account button to Settings and only show text in landscape mode
There is a bug in this where the text can become "sticky" and stay the same when rotating if the sidebar is opened but no rows are selected (meaning that the app just finished launching and LauncherNewsViewController is still presented by LauncherNavigationController.) More needs to be done to fix this little bug, however it does not hinder the usability of the account button or anything else in the launcher so I'm pushing it now to fix later.
2023-03-09 13:13:32 -05:00
Eilionoir Tunnicliff 0f89fdc0e2 Readd hidden sidebar option and fix issue with portrait mode on compact iPhones 2023-03-05 16:08:05 -05:00
Eilionoir Tunnicliff 8c90010b61 An actual workaround for the UI initialization bug without forcing the iPad UI
Basically consists of pushing the LauncherNewsViewController from LauncherNavigationController when the app first starts up, and setting the navigation bar items from the LNVC class. This commit also moves the account button to the right of the bar, removes the profile name outside of the list view, and does not appear on the Settings view. Removes the hidden sidebar option in favor of always hidden. Moves PID to the bottom of the General section footer. Tested on my iPad Pro (12.9-inch, 2nd generation), iPhone 14 Pro Max, iPhone 6s Plus, and iPhone SE (1st generation) over a grueling week of staring at code and banging my head against a wall. I'm going to bed now.
2023-03-05 00:23:31 -05:00
khanhduytran0 bc084c8112 Revert "Temporary fix for UI initialization bug"
This reverts commit 256cd3846d.
2023-02-09 20:05:45 +07:00
Eilionoir Tunnicliff 256cd3846d Temporary fix for UI initialization bug
Using the iOS 14.0+ API for UISplitViewControllers broke init on those systems. Needs more investigation, to be done on another branch to prevent mainline breakage.
2023-02-09 00:14:03 -05:00
Eilionoir Tunnicliff c42e5478c9 Revert "(Untested) Fix(UI): broken UI init in compact iPhones"
Changed the issue from UI not initializing (which affects all devices) to UI not initializing (on 5.5" and bigger) and just not working at all (on 4.7" and smaller) @khanhduytran0
2023-02-05 16:54:53 -05:00
Duy Tran Khanh 5cad42909b (Untested) Fix(UI): broken UI init in compact iPhones 2023-02-05 11:48:01 +07:00
khanhduytran0 9f9a3f706c Fix: broken TrollStore self-JIT in commit 23d9338
This adds a boolean to toggle JIT check between jailbreak and csops
because the jailbreak detection checks for CS_PLATFORM_BINARY, which
is available for both jailbroken and TrollStore
2023-01-31 05:45:34 +07:00
khanhduytran0 9e03e36be7 Refactor: deduplicate code, use cleaner syntax 2023-01-20 08:36:26 +07:00
Eilionoir Tunnicliff 657530f9e3 Try workaround 2023-01-19 14:46:02 -05:00
Eilionoir Tunnicliff 89b4650491 More anti-piracy demo mode stuff pt. 2 2023-01-19 14:23:10 -05:00
Eilionoir Tunnicliff febb05be46 import LNC 2023-01-19 14:16:29 -05:00
Eilionoir Tunnicliff 356510463d More anti-piracy demo mode stuff 2023-01-19 14:15:57 -05:00
Duy Tran Khanh 652316e8f6 Various fixes and enhancements
- Change setNeedsUpdateOfPrefersPointerLocked logic to hopefully fix
issues with mouse not recognizing on iPhones
- Change reloadVersionList logic to load Installed version list
instantly at startup
- Enable game's CALayer opaque and drawsAsynchronously to improve
rendering performance
- Handle natives_directory variable for legacy modded versions
- Set LD_LIBRARY_PATH to silent Caciocavallo NPE error in locating
Android-only code
- Tapping Play when no version selected will now bring up the version
picker instead of doing nothing
2023-01-13 20:11:50 +07:00
Duy Tran Khanh d0279af8aa Internal changes
- First changes for tvOS (very WIP) this will be a challenge to use
remote storage as ATV doesn't allow persistent storage (at least
without jailbreak). Low priority for now.
- Change regLog, debugLog to NSLog, NSDebugLog
- Rewrite most of JavaLauncher.m to ObjC
- Update README.md
2022-12-17 21:25:23 +07:00
khanhduytran0 78b788262c Move LoginViewController to parts
- The account selector now has Add Account item
- Last selected account is kept
- Account token refreshment is done on startup and on select if need
- Moved JIT status to LauncherMenuViewController's toolbar
- Primary View Controller is now LauncherSplitViewController
- More unmentioned(?), see diff.
2022-12-04 11:41:54 +07:00
khanhduytran0 99c9e05f1c Add missing icons + tweaks
Fixes/changes
- Compile error in input_bridge_v3.m
- Removed calls to end editing of text fields in CustomControlsViewController.m
- Simplified FlatLAF patch error
2022-11-25 19:52:54 +07:00
Duy Tran Khanh 5eae6015d6 Rearranged UI layout
* Moved account selection to the secondary NavigationController
* Added logo to fill in the primary one
* Moved buttons to the sidebar:
- Custom controls
- Install jar
- Send logs
* Fixed object memory leakage in LauncherNavigationController
* Set fullscreen=false on startup, workaround < 1.13 resizing issue
* Reduced mouse_pointer size

TODOs:
* Add icons for new items, will prefer copying from the Android
version.
* Remove LoginViewController: integrate add account to the account
selector, move Techno text+check to sidebar, etc..
* Instead of separate Microsoft, Demo login; display demo warning
before MS login.
2022-11-21 22:03:59 +07:00
Duy Tran Khanh 1af09ca02d Tweak NSLocalizedString; Keep split display mode
Tweak NSLocalizedString to return English if not yet localized.
Keep Split display mode between rotations.
New debug option: skip JIT wait, for #423
2022-11-17 21:46:38 +07:00
Eilionoir Tunnicliff ab5bd8469e Changes
- Removed FAQ, About Launcher, and Update History buttons
- Moved *.png to Assets.xcassets
- Moved LPVC2 to LPVC
2022-11-10 00:03:37 -05:00
Duy Tran Khanh 8c0b8da9c3 Add menu icons; Error is now shown in fullscreen
JIT check: increase check timeout
2022-10-18 18:27:50 +07:00
Duy Tran Khanh c616cb152f Moved toolbar code, added WIP News tab 2022-09-25 11:13:59 +07:00
Duy Tran Khanh 022a8cae6f Remove v1 pref UI 2022-09-04 13:28:47 +07:00
khanhduytran0 f27808464b Allow control settings to be changed ingame 2022-09-04 09:47:46 +07:00
Duy Tran Khanh 9a5cee04c6 wip auto renderer 2022-08-18 08:09:46 +07:00
Duy Tran Khanh d8459effc0 WIP: New User interface
UISplitViewController is being used to create split menu.
Currently, autolayout is not yet done.
Added account switcher to the split view.

Fixes:
- auth_session parameter for legacy Minecraft versions
- Updating self.view background color is now automated by
UIColor.systemBackgroundColor
2022-07-22 08:02:40 +07:00