# Core ImGui JNI build OpenPrestige uses core ImGui with its Java OpenGL backend. This build keeps all core and internal JNI methods from imgui-java 1.92.7.1, and removes the native extension implementations for ImPlot, ImNodes, ImGuizmo, imgui-node-editor, text editor, file dialog, knobs, and memory editor. Demo windows are disabled. Core callbacks, font rendering, tables, docking, and draw lists remain available. The source revisions and generator dependencies are pinned in `../build_imgui_core.py`. The build consumes upstream generated Java without modifying it. A portability step replaces GNU variable-length arrays in the generated C++ with standard C++ vectors for MSVC. ## Windows x64 Set `JAVA_HOME` to JDK 21 and install Visual Studio C++ tools and CMake. From the repository root run ```powershell python scripts/build_imgui_core.py --output build/core-natives/windows-x86_64 --architecture x64 ``` The output contains `imgui-java64.dll` and the upstream licenses. Gradle picks up `build/core-natives`, embeds it under `prestige-natives`, and omits the corresponding upstream native. The Java extension wrappers are omitted from the shaded payload. Use a distinct `--build-dir` for each target. ARM64 cross builds use the toolchain files in `toolchains`, which require LLVM-MinGW on Windows targets and an aarch64 Linux cross compiler on Linux targets. The macOS toolchain produces a universal library. CI builds all five variants. ## Full release build on Windows `build-release.bat` calls `python scripts/build_release_imgui.py` before Gradle builds the JAR. The helper fetches the pinned sources and generator dependencies, installs CMake, Ninja and Zig when needed, and builds Windows and Linux x64/ARM64 plus both macOS slices. It combines the macOS slices into a universal library. Downloads are cached in `build/imgui-core-cache`, and compilation is incremental under `build/imgui-core-release`. The complete release still requires JDK 21, Rust, and the MSVC x64/ARM64 build tools used by the Rust Windows targets. Python's package installer needs network access on the first run. To diagnose one cross build, use `python scripts/build_release_imgui.py --platform windows-aarch64`. Running the helper without arguments builds the entire ImGui release set. ## JNI verification ```powershell java -Dimgui.library.path=build/core-natives/windows-x86_64 -cp build/imgui-core/deps/imgui-java-binding-1.92.7.1.jar scripts/imgui-core/SmokeTest.java src/main/resources/prestige_ui/fonts/DMSans-Regular.ttf ``` This initializes JNI, builds the real UI font atlas, and generates geometry from widgets and draw lists. A Minecraft smoke test should additionally exercise the ClickGUI and OpenGL backend.