lwjgl3ify
36 merged pull requests.
New Features
- #349 Added implementation stubs for GLSync methods in generated files ARBSync.java and GL32.java, providing proper method signatures for fence synchronization operations. - @RecursivePineapple
- Added: ARBSync fence sync shim implementations, GL32 fence sync shim implementations
- Fixed: NoSuchMethodException when calling GLSync fence methods
- #324 Introduced new API classes (DisplayEvents.java, DisplayWindowContext.java, GLCapabilitiesOverride.java, SwapchainInvalidatingChange.java) and enhanced Display.java and ContextCapabilities.java to support GPU-managed rendering contexts and pre/post window creation callbacks. - @mitchej123
- Added: DisplayEvents API for window lifecycle callbacks, DisplayWindowContext API for custom rendering contexts, GLCapabilitiesOverride API for custom GL capabilities, SwapchainInvalidatingChange notification API, SDL-GPU and ES shader compilation support (shaderc, sprvutils)
- #281 Added taskbar progress notifications via SDL3 in
LoadingProgressNotify, new configuration option, andSys.javaintegration for progress updates. - @eigenraven- Added: taskbar progress display configuration option, LoadingProgressNotify mixin for progress tracking, SDL3 taskbar progress API in Sys.java
- #279 Added
java-runtime-epsilonto the custom Prism Minecraft JSON configuration to enable automatic JDK 25 downloading. - @DioEgizio- Added: java-runtime-epsilon to prism launcher metadata
- #251 Added
discreteScrollingconfiguration option inConfig.javaand implemented scroll event handling logic inMouse.java. - @nullTheCoder- Added: discrete scrolling configuration option
- Fixed: inconsistent scrolling behavior
Changes
- #356 Updated RFB library version in gradle/libs.versions.toml to include thread safety fixes. - @mitchej123
- #333 Added checksum verification logic to build.gradle.kts and updated launcher-metadata/version.json and prism-libraries patches to include SHA1 hashes for libraries including forgePatches. - @FalsePattern
- Added: SHA1 checksum validation for library downloads
- Fixed: Launch failures caused by corrupted library jars
- #314 Updated multiple transformer classes (ExtensibleEnumTransformer, ForgePatchTransformer, LwjglRedirectTransformer, UnfinalizeObjectHoldersTransformer) to match the new RFB transform signature. - @danyadev
- #306 Updated version.json launcher metadata to specify Java 25 as the supported Java version. - @glowredman
- #303 Updated LWJGL version references across build.gradle.kts, gradle.properties, gradle/libs.versions.toml, and other build configuration files. - @eigenraven
- #202 Updated to LWJGL 3.4.0 and migrated platform abstraction layer from GLFW to SDL3. Includes new build infrastructure, helper gradle tasks, and updated JVM arguments. - @eigenraven
- Added: SDL3 integration for platform abstraction, new build helper gradle plugin (lwjgl3ify-helper), gradle-daemon-jvm.properties, java9args.txt
- Fixed: keyboard handling issues, Wayland platform support
Bug Fixes
- #354 Modified Downloader.java to not suppress exceptions from download failures, and added missing checksum/size metadata for lzma-0.0.1.jar in launcher metadata. - @FalsePattern
- Fixed: Launcher crash during library download with checksum failure
- Closes #338
- #352 Centralized window and framebuffer size tracking in Display.java, ignoring non-positive sizes to prevent context creation with invalid dimensions. - @Algent
- Fixed: Black screen hang on startup from zero-sized framebuffer
- #346 Modified Lwjgl3ifyEventLoop.java to use scan codes for Ctrl+key combinations (matching vanilla behavior), ensuring keyboard layout independence for control key shortcuts. - @slprime
- Fixed: Ctrl+key shortcuts with non-Latin keyboard layouts
- Closes GTNH#23315
- #344 Added buffer clearing logic in TextFieldHandler.java to prevent buffered text from persisting when input focus changes between screens. - @Algent
- Fixed: Buffered text bleeding between GUIs, JourneyMap button appearing in chat after closing, Waypoint textbox filling with stray input
- Closes GTNH#23831, #342, GTNH#25195
- #339 Added MixinGuiScreenBook.java to suppress duplicate keyboard input events in the book GUI, mirroring the fix previously applied to other text input screens. - @tiffit
- Added: Mixin hook for Book and Quill GUI text input suppression
- Fixed: Double character input in Book and Quill GUI
- Closes #326, GTNH#24910
- #336 Added null filtering in Lwjgl3ify.java before sorting class loader and transformer exclusions, preventing NullPointerException in Comparator.naturalOrder(). - @Kai-Z-JP
- #334 Modified OcInputBuffer.java mixin annotation to use string reference instead of direct class annotation target, preventing IDE plugin introspection failures. - @ah-OOG-ah
- Fixed: IDE plugin crashes during class file analysis
- #330 Modified Lwjgl3ifyEventLoop.java to validate SDL event timestamps, filtering out invalid scroll events that result from X11/SDL timing mismatches. - @Redderpears
- Fixed: Double scroll wheel inputs on Linux systems
- Closes #328
- #321 Added Mixin hooks in MixinGuiTextInput.java and XaerosMinimapScrolling.java to call SDL_StartTextInput when specific GUI screens are opened, enabling proper IME event handling. - @qiuxtao
- Added: Mixin hooks for GuiTextField and Xaeros GUI text input, SDL_StartTextInput support for non-standard screens
- Fixed: Chinese IME not working in sign editing, books, and Xaero's Minimap
- #301 Added client-side check in Lwjgl3ifyCoremod.java to prevent printing the STB stitcher mixin warning when running a server. - @mist475
- Fixed: Spurious warning messages on server startup
- #292 Modified Keyboard.java to distinguish between gameplay-critical keys (which use scan codes for consistency) and other keys (which now use key codes to respect layout remappings). - @sbancuz
- Fixed: Keybind modifications not being respected with non-standard keyboard layouts
- Closes #285
- #290 Added
OcInputBuffermixin targeting OpenComputers to intercept keyboard input events and register it as a targeted mod in the mixin system. - @eigenraven- Added: OcInputBuffer mixin for OpenComputers, OC as targeted mod for keyboard input handling
- Fixed: keyboard input not working in OpenComputers monitors
- #287 Updated
Keyboard.javato convert scancodes to keycodes before retrieving display names, ensuring correct key labels for international keyboards. - @eigenraven- Fixed: incorrect key display names on non-QWERTY keyboards
- #283 Replaced
LoadingProgressNotifymixin withProgressBarredirect class andForgePatchTransformerASM transformer to load before FML's own progress bar initialization. - @eigenraven- Added: ProgressBar redirect class, ForgePatchTransformer for ASM-based patching
- Removed: LoadingProgressNotify mixin, early FML mixin JSON configuration
- Fixed: startup crash in 3.0.1
- Closes #282
- #257 Updated
KeyCodes.javato properly map SDL3 keycodes for left Alt, right Alt, and right Super/Meta keys. - @DialecticalMaterialist- Fixed: SDL3 Alt and Super key handling regression
- #244 Reverted the simple fix from PR #231 and implemented a proper solution in
Mouse.javathat handles mouse coordinate scaling for high-DPI framebuffers while keepingGLFW_COCOA_RETINA_FRAMEBUFFERenabled. - @danyadev- Removed: Display.java GLFW retina framebuffer disabling
- Fixed: mouse position shift on retina displays, rendering quality degradation on high-DPI systems
- Closes #215
- #240 Corrected typo in
java9args.txtand build configuration affecting Java argument passing to the game. - @bluegreensea- Fixed: Java arguments typo breaking MultiMC installations
- Closes #165
- #231 Re-enabled
GLFW_COCOA_RETINA_FRAMEBUFFERflag inDisplay.javato resolve mouse shift issue #215. - @tilocih203- Fixed: mouse snapping on macOS retina displays
- Closes #215
Performance
- #331 Refactored shouldTransformClass logic in LwjglRedirectTransformer and UnfinalizeObjectHoldersTransformer to use more efficient filtering patterns. - @danyadev
Internal / Refactor
- #288 Removed gtnhlib dependency and integrated logger/utility code inline in
Display.java,Keyboard.java,Cursor.java, andLwjgl3ifyEventLoop.java. - @eigenraven- Removed: gtnhlib Maven dependency
- #228 Deleted
Lwjgl3ifyLateMixinslate mixin loader, updatedLwjgl3ifyCoremodandMixinsto use new IMixins/MixinsBuilder API, improved FastCraft version detection logic inTargetedMod. - @Alexdoru- Removed: Lwjgl3ifyLateMixins late mixin loader, late mixin JSON configuration
Documentation
- #267 Added installation instructions for LiteloaderLoader as a workaround for LiteLoader compatibility issues. - @PLASMAchicken
- Closes GTNH#22750
- #245 Added note in README explaining that
runClient17is a no-op in the current codebase. - @wlhlm
Chores
- #289 Included version number in the
-apiJAR artifact name inbuild.gradle.kts. - @eigenraven - #249 Updated dependencies and gradle properties to newer versions. - @RecursivePineapple
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@eigenraven (27), @mitchej123 (5), @Dream-Master (4), @Algent (3), @danyadev (3), @RecursivePineapple (3), @FalsePattern (2), @wlhlm (2), @ah-OOG-ah (1), @Alexdoru (1), @bluegreensea (1), @Caedis (1), @DialecticalMaterialist (1), @DioEgizio (1), @ghostflyby (1), @glowredman (1), @guid118 (1), @Guvante (1), @Kai-Z-JP (1), @MalTeeez (1), @mist475 (1), @nullTheCoder (1), @PLASMAchicken (1), @qiuxtao (1), @Redderpears (1), @sbancuz (1), @slprime (1), @tiffit (1), @tilocih203 (1)