Skip to content

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, and Sys.java integration 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-epsilon to the custom Prism Minecraft JSON configuration to enable automatic JDK 25 downloading. - @DioEgizio
    • Added: java-runtime-epsilon to prism launcher metadata
  • #251 Added discreteScrolling configuration option in Config.java and implemented scroll event handling logic in Mouse.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
    • Fixed: Crash with null class loader exclusions from certain mods
    • Closes #236, #239
  • #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 OcInputBuffer mixin 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.java to 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 LoadingProgressNotify mixin with ProgressBar redirect class and ForgePatchTransformer ASM 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.java to 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.java that handles mouse coordinate scaling for high-DPI framebuffers while keeping GLFW_COCOA_RETINA_FRAMEBUFFER enabled. - @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.txt and 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_FRAMEBUFFER flag in Display.java to 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, and Lwjgl3ifyEventLoop.java. - @eigenraven
    • Removed: gtnhlib Maven dependency
  • #228 Deleted Lwjgl3ifyLateMixins late mixin loader, updated Lwjgl3ifyCoremod and Mixins to use new IMixins/MixinsBuilder API, improved FastCraft version detection logic in TargetedMod. - @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
  • #245 Added note in README explaining that runClient17 is a no-op in the current codebase. - @wlhlm

Chores ​

  • #289 Included version number in the -api JAR artifact name in build.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)