Conversation
26.3 moved the client input layer from GLFW to SDL and renamed several client APIs, so this is more than a version bump. The NeoForge target is fully ported and verified via :neoforge:runClient (SDL window opens, mod initializes, no InvalidInjectionException, no crash). Input - Remove the GLFW backend (client/input/glfw/*, InputLibrary.GLF) — 26.3 no longer ships org.lwjgl.glfw. - Use com.mojang.blaze3d.platform.InputConstants for key/mouse constants. - MouseHandler.onMove mixin updated to the new 4-double signature. API renames - Window.toggleFullScreen()/isFullscreen() -> setFullscreen() + options.fullscreen(). - LivingEntity.drop(boolean) -> drop(ItemStack, boolean, Prediction.PREDICTED). - AbstractContainerScreen: getGuiLeft/getGuiTop/getXSize/getYSize/getSlotUnderMouse -> getLeftPos/getTopPos/getImageWidth/getImageHeight/getHoveredSlot. - JEI ingredient classes moved to mezz.jei.gui.overlay.ingredients.*. - neoforge.mods.toml: logoFile/logoBlur -> iconFile. Versions - java 25 -> 26, minecraft/neo_form 26.2 -> 26.3, neoforge 26.2.0.3-beta -> 26.3.0.3-beta, neoforge_version_range -> [26.3,), JEI 31.0.0.7 / 26.3. - moddev 2.0.141 -> 2.0.147, foojay-resolver 0.10.0 -> 1.0.0 (Java 26). Known limitations (follow-ups, see PR description) - REI support disabled: no 26.3 REI artifact yet (REI deps + PointHelperMixin removed). JEI still works. - Fabric target not ported (fabric versions still 26.2); only NeoForge updated and tested.
Companion to the NeoForge 26.3 port. FabricClientHelper drops the GLFW backend (26.3 removed org.lwjgl.glfw): key/mouse action constants are now plain ints (0=release, 1=press, 2=repeat) and KeyEvent.scancode() is gone, so pass 0. gradle.properties bumps fabric_version 0.152.2+26.2 -> 0.161.0+26.3, fabric_loader_version 0.19.3 -> 0.19.5, fabric_minecraft_version_range ~26.2- -> ~26.3-. The Fabric mixins and access-widener field accesses compiled unchanged (the 26.3 getter renames did not affect the widened fields). Verified with :fabric:jar (clean build).
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft — ported to Minecraft 26.3 (both loaders). NeoForge ✅ runs; Fabric⚠️ compiles but is
blocked by an upstream 26.3 toolchain crash. REI still pending.
Ports Controllable to Minecraft 26.3 for both NeoForge 26.3.0.3-beta and Fabric
0.161.0+26.3, following the existing per-version branch convention. Based on
multiloader/26.2.26.3 moved the client input layer from GLFW to SDL and renamed/removed several client APIs,
so this is more than a version bump.
Still needed before merge
:fabric:runClientis currently blocked by anupstream Fabric/Mixin 26.3 crash (see Test results below) — re-test once a working
Fabric 26.3 toolchain ships.
Changes
Input (GLFW → SDL / InputConstants)
client/input/glfw/*,InputLibrary.GLF) — 26.3 no longer shipsorg.lwjgl.glfw.com.mojang.blaze3d.platform.InputConstants.MouseHandler.onMovemixin updated to the new 4-double signature (the 26.3 load-time crash).FabricClientHelperdrops theGLFWbackend — key/mouse action constants are now plainints (
0=release,1=press,2=repeat) andKeyEvent.scancode()is gone, so it passes0.API renames
Window.toggleFullScreen()/isFullscreen()→setFullscreen(boolean)+options.fullscreen().LivingEntity.drop(boolean)→drop(ItemStack, boolean, Prediction.PREDICTED).AbstractContainerScreen:getGuiLeft/getGuiTop/getXSize/getYSize/getSlotUnderMouse→getLeftPos/getTopPos/getImageWidth/getImageHeight/getHoveredSlot.IngredientGrid/IngredientGridWithNavigation/IngredientListRenderer/IIngredientListOverlayContentsmoved tomezz.jei.gui.overlay.ingredients.*.neoforge.mods.toml:logoFile/logoBlur→iconFile.Versions
java_version25 → 26;minecraft_version/neo_form_version26.2 → 26.3.neoforge_version26.2.0.3-beta → 26.3.0.3-beta;neoforge_version_range→[26.3,).fabric_version0.152.2+26.2 → 0.161.0+26.3;fabric_loader_version0.19.3 → 0.19.5;fabric_minecraft_version_range~26.2-→~26.3-.31.0.0.7/26.3.moddev2.0.141 → 2.0.147,foojay-resolver-convention0.10.0 → 1.0.0.Fabric — no other code changes needed
screen.topPos,leftPos,imageWidth,imageHeight,hoveredSlot) are unchanged: the 26.3 getter renames did not affect the widenedfield names.
dependency,
PointHelperMixin, and its mixins.json entry were removed. JEI still works.To re-enable once 26.3 REI ships: uncomment the REI lines in
common/build.gradleandneoforge/build.gradle, restorePointHelperMixin.java+ its mixins.json entry, and bumprei_versionto the 26.3 build.InputLibrarynow only hasSDL2; any existing config withinputLibrary=GLFWmust be set toSDL2.Test results (26.3)
:neoforge:jarbuilds cleanly;:neoforge:runClientboots on26.3: SDL window created (LWJGL 3.4.3, OpenGL backend), the mod initializes —
Successfully updated 180 gamepad mappings— ResourceManager reloadsmod/controllable,sound engine starts, main menu reached, no crash / no
InvalidInjectionException.(In-game controller play also confirmed separately.)
:fabric:jarbuilds cleanly;:fabric:runClientcrashes at launch on 26.3 in Fabric API'sfabric-content-registries-v0(
@ModifyExpressionValueonLivingEntity.aiStep→ MixinClassInfo.findInterfaceNPE whilecomputing common supertypes). Reproduces on both
0.160.7+26.3and0.161.0+26.3, so it's anupstream Fabric/Mixin 26.3 toolchain issue, not a Controllable code defect (Controllable's
Fabric mixins don't touch
LivingEntityor use@ModifyExpressionValue).