- 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
- 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
* 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.
When Cr4shed crash handler is on, chaining to it will eventually crash
instead of returning so that JVM can continue perform dump. For now,
signal handlers are reset to default.
abort() is now caught and shown in the launcher.
Temporarily disabled safe area when windowed, until I can properly set
it up, in order to workaround buttons going out of bounds.
- It is now accessible for everyone (sandboxed, TrollStored, jailbroken)
- Enabled by default if Jetsam can't be controlled
- Default ratio: 25% (sandboxed), 40% (TrollStored or jailbroken)
Fixes:
- dlopen gets hooked no matter if installed in /Applications or container
- Jailbroken IPA installation always looked for /usr/lib/jvm instead of the internal one
- Metal returned 0 physical devices, caused all renderers to be broken
- Zink renderer tried to load VirGL stuff
What's new?
- Settings are now categorized
- Re-designed Game Directory manager
- Moved help detail to subtitles, toggleable
- Some settings are now made accessible ingame
- Added Auto Renderer
Removed settings:
- Restart before launching: not needed anymore, also it would break JIT/debugger.
The old IPA creation process: wrap every dylib files into framework;
this appears to be unnecessary, dylib files can be put outside without
breaking codesigning and validation (only tested with AltStore: it
scans and signs every Mach-O files).
Therefore, IPA builds now allow putting Java Runtimes to
`PojavLauncher.app/jvm`.
Makefile is yet tweaked to adapt this change, will be done later.
Other tweaks
- Disabled autocorrection for text fields in preferences
- The preferences now searches for installed JRE versions instead of
hardcoding them
- Bug fix: "accounts" folder was not created initially, leading to
"username.json does not exist" error
The root cause is that the JVM has taken away the main thread, caused the UIKit’s queue to stop. This env var exists in my dev environment but has never been added here.
Manually-specified Java version still applies to:
- Minecraft versions below 1.17 (default is Java 8)
- Minecraft version 1.17.x (allow choosing between Java 16 and 17)
Pretty much disables everything except for [Pre-Init] and [Init], as well as Renderer Init Success. Toggle debug logging off to see.
regLog(message) -> logs all the time
debugLog(message) -> logs only when debug logging is enabled
This is caused by a missing function in our class loader.
Error:
System class loader does not define the
appendToClassPathForInstrumentation method
Unable to add
/Applications/PojavLauncher.app/libs/arc_dns_injector.jar to system
class path - the system class loader does not define the
appendToClassPathForInstrumentation method or the method failed
FATAL ERROR in native method: processing of -javaagent failed,
appending to system class path failed
* fix that lol
* IPABuilder moment
* typo moment
* Hooking changes
Now hook only dladdr and realpath, JRE works now. However, need to obtain libffi.
* Sole more changes
Add RPATH to libraries
Hook dlopen since loading libawt_headless somehow point to Frameworks
directory.
* Update development.yml
* Update development.yml
Co-authored-by: Duy Tran Khanh <[email protected]>
Co-authored-by: Duy Tran Khanh <[email protected]>
- Input cursor movement seems too fast, attempt to reduce it by setting larger font size in the hidden text field.
- latestlog.txt doesn't log in 1.12+ since Log4j patch. Fixed by adding some config lines.
- Makefile: building is broken when run make from a path with space(s). Fixed by handling spaces with backslashes.
- text2speech is not overridden properly. Fixed by excluding it from download list and adding launcher.jar itself to the classpath.
- XML log output in < 1.12 since Log4j patch. Fixed by using our own configuration file.
Some more changes:
- Commented out a debug line in LWJGLX
- Fix a typo.
- JavaLauncher: use (ObjC)BOOL instead of (std)bool.
* Keyboard input: KeyboardInput.m
- Requires iOS 13.4. Used pressesBegan and pressesEnded.
- Not all keys are handled, these will be handled later.
* Mouse input
- Requires iOS 13.0 for hovering. Used UIHoverGestureRecognizer.
- Requires iOS 14.0 for L/R mouse buttons and scroll handling. Used GCMouse for now. We will use iOS 13.4(?)'s API later.
- Pointer lock is not yet handled.
These above apply to iPadOS aswell, not sure about tvOS. iPhone users need to disable "Perform Touch Gestures" in the AssistiveTouch Accessibility settings in order to get the pointer hovering to work.
* Cleanups
- Use asprintf instead of sprintf when possible
- CallbackBridge functions: removed unnecessary JNI fields.
- Condition cleanup (managing virtual mouse position).
This option allows the launcher to restart itself before launching the
game, therefore all changes are applied such as JVM Arguments and Java
version. The restart mechanism doesn't always work, so a toggle is
here for now.