Minecraft 26.1 · 26.2 · 26.3 Code Parity & Core Breaking Changes
Analysis Reference: PML-ANALYSIS-2026-10-27
Target Versions: Minecraft 26.1, 26.1.1, 26.1.2, 26.2, 26.3 (Java 25)
Measurement Source: Poly Mod Loader Bytecode Engine & minecraftVersionDiff Quantitative Reports
1. Overview & Statistical Background
In the modding community, it is often stated that "Minecraft 26.1, 26.2, and 26.3 share roughly 98% identical code."
While this observation is statistically true from a macro perspective (class counts, general tick loops, JOML math, and high-level block/item definitions), it creates a critical technical illusion for mod loaders and bytecode engines (Poly Mod Loader, Fabric, Forge, NeoForge).
This document analyzes what is preserved in that 98% and why the remaining 2% represents a complete architectural overhaul of core game infrastructure.
2. Quantitative Metrics: What Changed?
+-----------------------------------------------------------------------------------+
| Minecraft 26.3 Client JAR (11,383 Classes) |
+----------------------------------------------------+------------------------------+
| Preserved Core Logic (~95–98%) | Critical 2% Breaking Core |
| - World tick loop & chunk loading logic | - Rendering engine replaced |
| - Block/Item state machines | - GLFW removed, SDL added |
| - Entity AI goals & navigation paths | - Java 25 runtime arguments |
| - Basic JOML math & network packet protocol | - 3,188 classes bytecode diff|
+----------------------------------------------------+------------------------------+
| Metric | Minecraft 26.2 | Minecraft 26.3 | Delta / Impact |
|---|---|---|---|
| Java Runtime | Java 25 | Java 25 | Unchanged (java-runtime-epsilon) |
| Total Classes | 10,952 | 11,383 | +980 added, -549 removed |
| Bytecode-altered Classes | — | 3,188 | ~28% of all classes modified |
| Asset Index | 32 | 34 | Format update |
| Window & Input Backend | lwjgl-glfw | lwjgl-sdl | GLFW deleted, SDL introduced |
3. The Critical "2% Difference": 5 Breaking Overhauls
① Complete Removal of the Blaze3D Rendering Pipeline
- What Happened: The long-standing
com.mojang.blaze3dpackage was completely deleted in Minecraft 26.3. - Deleted Core Classes (24 classes):
com.mojang.blaze3d.pipeline.RenderPipelinecom.mojang.blaze3d.systems.GpuDevicecom.mojang.blaze3d.buffers.GpuBuffercom.mojang.blaze3d.systems.RenderPasscom.mojang.blaze3d.vertex.VertexFormat
- New Replacement: Replaced entirely by
com.mojang.renderpearl(api/pipeline,api/device,backend/opengl,backend/vulkan). - Impact: Custom GUI screens, shaders, and rendering optimization mods (Sodium, Iris) cannot function without adaptation.
② Window & Input Subsystem Migration (GLFW → SDL)
- What Happened:
lwjgl-glfwandlwjgl-tinyfdwere removed;lwjgl-sdlwas introduced. - Impact: Key constants switched from GLFW integers to SDL scancodes. Unadapted mods receive wrong keys or fail to process input.
- Poly's Solution: [ADR-0029] fixed Poly Native key codes to GLFW values and implemented a 119-entry GLFW ↔ SDL scancode bidirectional adapter table.
③ Extreme Fragility of Mixin Injection Targets
- What Happened: 3,188 classes had their bytecode altered.
- Impact: Mixin 0.8.7 targets exact bytecode instructions, opcodes, and Local Variable Tables (LVT). A single line shift or variable reordering causes
InjectionPointresolution failure, crashing the JVM before the title screen.
④ Java 25 Runtime Constraints
- Removed flag:
--sun-misc-unsafe-memory-access=allow - Added flags:
-XX:StackShadowPages=32,--add-exports java.base/jdk.internal.misc=ALL-UNNAMED - Impact: Stricter memory encapsulation blocks legacy reflection and raw memory hacks.
⑤ Entity Velocity & Natural Spawn Overhaul
- Velocity sync method changed from
hurtMarkedtosyncVelocity. - Biome spawning migrated to
EnvironmentAttributes.NATURAL_MOB_SPAWNSoverlays.
4. Impact on Poly Mod Loader
Checking Poly's 26.2 modules against 26.3 client bytecode:
- Directly used vanilla classes: 469 classes
- Completely missing in 26.3: 24 classes
- Modified bytecode / signatures: 206 classes
- Directly called members: 1,007 fields & methods
- Missing or signature changed: 64 members
Verdict
A simple hotfix or conditional branching in the 26.2 adapter is architecturally impossible. Poly addresses this by maintaining dedicated version modules: poly-version-adapter-v26_3 and poly-game-v26_3.