Rename the injector and package it with an embedded payload for Windows, Linux, and macOS x64/ARM64. Add a core-only ImGui native build, multi-platform CI and release packaging, and shared per-user storage with legacy config migration.
2.7 KiB
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
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
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.