Caution
100% AI-GENERATED PROJECT
LavaFlow, including its source code and documentation, is 100% generated by AI under human direction. Treat the implementation as experimental: audit the code and test it on your own hardware before relying on it.
LavaFlow is an experimental Vulkan 1.1 graphics backend for Minecraft's Blaze3D API. It replaces the exercised Blaze3D rendering path with LavaFlow-owned LWJGL Vulkan implementations and never calls OpenGL.
| Component | Target |
|---|---|
| Minecraft | 26.2 |
| Mod loader | NeoForge 26.2.0.32-beta or newer 26.2 build |
| Minecraft runtime | Java 25 |
| Graphics API | Vulkan 1.1 |
| Desktop smoke renderer | Java 21 bytecode |
The backend includes compatibility paths for Vulkan 1.1 devices without dynamic rendering, synchronization2, push descriptors, multi-draw indirect, non-solid fill mode, or vertex attribute divisors. Both desktop and ARM64 Android devices are in scope. Actual driver behavior and performance vary by GPU.
- LavaFlow-owned Vulkan instance, presentation device, queues, and swapchain
- Blaze3D textures, buffers, samplers, pipelines, render passes, and command encoding
- Dynamic-rendering and legacy-render-pass paths
- Push-descriptor and descriptor-set paths
- Explicit resource lifetime and queue synchronization
- Vulkan-native texture transfers, blits, clears, and presentation
- Resize and swapchain recreation handling
- Final presentation blit with the target Y coordinate reversed
- Sodium 0.9.1 compatibility: Sodium's Vulkan terrain path runs on LavaFlow instead of falling back to OpenGL
LavaFlow uses clockwise front faces and does not enable shaderc's invert-Y option. These conventions are required to match Minecraft's official Vulkan backend behavior.
Minecraft Blaze3D API
|
LavaFlow NeoForge adapter
|
LavaFlow Vulkan backend
|
Vulkan 1.1
The Minecraft-facing adapter lives under dev.lavaflow.minecraft. The standalone Vulkan renderer under dev.lavaflow.vulkan contains no Minecraft classes, keeping Vulkan resource ownership and batching policy independent of Minecraft.
Prerequisites:
- JDK 25
- Vulkan 1.1 loader and driver
refs/Minecraft26.2Client.jar(the GitHub workflow downloads and verifies it automatically)- Gradle 9.1 or a compatible Gradle release
Build and test the project:
gradle --no-daemon clean test jarThe NeoForge mod is written to:
build/libs/lavaflow-0.1.0-SNAPSHOT.jar
GitHub Actions runs the same build for pushes, pull requests, and manual dispatches, then publishes the JAR as a workflow artifact.
Run the standalone Vulkan smoke renderer with:
gradle runFor a finite automated run:
gradle run --args='--frames=120'The window should clear continuously through Vulkan and report the selected GPU and frame count in its title. Closing it exercises orderly resource teardown.
- Copy
build/libs/lavaflow-0.1.0-SNAPSHOT.jarto the Minecraft 26.2 instance'smodsdirectory. - Open the instance's
config/fml.tomland set:
earlyWindowControl = false- Select Vulkan as the instance graphics backend.
- Start Minecraft with Java 25.
The NeoForge early loading window must remain disabled because it creates an OpenGL GLFW window before Blaze3D selects LavaFlow. LavaFlow itself never creates or uses an OpenGL context.
For FCL on Android, the typical mod path is:
/storage/emulated/0/FCL/.minecraft/versions/26.2-NeoForge/mods/
The exact instance directory can differ between launcher configurations.
LavaFlow is experimental software. Rendering correctness and performance have been tested on a limited set of desktop and ARM64 devices, but Vulkan driver differences can expose device-specific issues. Keep a known-good JAR when testing new builds.
LavaFlow is distributed under the MIT License. Copyright (c) 2026 BZLZHH.