Compatibility matrix
Updated 28 October 2026
Built from the capability registry the plugin itself reports (/draxgui status sums it up per client family). Each column is a shader-interface family; one representative client version per family was run (in brackets). Other versions in a family are expected to behave the same but were not run.
Legend: ✅ verified on a real client with the product build · 🧪 proven only in an early prototype · ⚠️ works with a documented limitation · ❔ implemented, not run on that family · ⏳ requested, not implemented · — not offered by design.
Server: Paper only (1.21.4-232, 1.21.8-60, 1.21.11-132, 26.1.2-74, 26.2-134, 26.3-209 tested) with PacketEvents 2.14.0. JDK 21 for 1.21.x, JDK 25 for 26.x. Clients: vanilla; Iris 1.8.8 + Sodium 0.6.13 on Fabric 0.19.5 for 1.21.4 (Complementary Reimagined r5.9, BSL v10.1.5, shaders off). Windows 11, 1280×720, GUI scale 2, loopback.
Java — Shader-Safe (HUD-layer overlay)
| Feature | 1.21.4-1.21.5 (ran 1.21.4) | 1.21.6-1.21.8 (ran 1.21.8) | 1.21.9-1.21.11 (ran 1.21.11) | 26.1 (ran 26.1.2) | 26.2 (ran 26.2) | 26.3 (ran 26.3) |
|---|---|---|---|---|---|---|
pointer |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
click |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
drag |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
wheel |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
keyboard |
🧪 proof only | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
hover_appearance |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
anchoring |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
smooth_clip |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
rotation |
🧪 proof only | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
animation_60fps |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
iris_active_shaders |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
tooltip |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
open_animation |
⚠️ limited | ⚠️ limited | ⚠️ limited | ⚠️ limited | ⚠️ limited | ❔ not run |
animated_images |
⚠️ limited | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
text_custom_font |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
player_head |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
qr_code |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
input_anvil |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
input_chat |
✅ verified | ⏳ not built | ⏳ not built | ⏳ not built | ⏳ not built | ⏳ not built |
hud_overlay |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
popup |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
move_scale |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
player_model |
⚠️ limited | ⚠️ limited | ⚠️ limited | ⚠️ limited | ⚠️ limited | ⚠️ limited |
shader_compile |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
Java — Standard (world-space panels)
| Feature | 1.21.4-1.21.5 (ran 1.21.4) | 1.21.6-1.21.8 (ran 1.21.8) | 1.21.9-1.21.11 (ran 1.21.11) | 26.1 (ran 26.1.2) | 26.2 (ran 26.2) | 26.3 (ran 26.3) |
|---|---|---|---|---|---|---|
pointer |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ✅ verified |
click |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ✅ verified |
hover_appearance |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ✅ verified |
move_scale |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
rotation |
🧪 proof only | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
keyboard |
✅ verified | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run |
tooltip |
— not offered | — not offered | — not offered | — not offered | — not offered | — not offered |
open_animation |
— not offered | — not offered | — not offered | — not offered | — not offered | — not offered |
iris_active_shaders |
⚠️ limited | ⚠️ limited | ⚠️ limited | ⚠️ limited | ⚠️ limited | ⚠️ limited |
animated_images |
❔ not run | ❔ not run | ❔ not run | ❔ not run | ❔ not run | ✅ verified |
player_model |
✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified | ✅ verified |
Bedrock (Geyser + Floodgate forms)
| Feature | State | Reason |
|---|---|---|
form_input |
✅ verified | Custom-form text field; value stored, over-long entries rejected with a banner (Bedrock 26.52 on Windows (mouse/keyboard) via Geyser 2.12.0 + Floodgate 2.2.5 on Paper 26.3) |
forms |
✅ verified | Plain native Simple/Custom forms (the fallback without the pack): clicks, pages, toggles, sliders, submit, refresh on value change (Bedrock 26.52 on Windows (mouse/keyboard) via Geyser 2.12.0 + Floodgate 2.2.5 on Paper 26.3) |
custom_screens |
✅ verified | Screens drawn as custom Bedrock screens from the build's .mcpack (JSON-UI layouts): the Java pictures and colours, positioned texts, tabs, scrolling lists, toggles, bars; sliders and inputs open a native editor; needs the .mcpack in Geyser, otherwise plain forms (Bedrock 26.52 on Windows (mouse/keyboard) via Geyser 2.12.0 + Floodgate 2.2.5 on Paper 26.3) |
mcpack_export |
✅ verified | Deterministic .mcpack loaded by Geyser and downloaded by the client; button pictures and custom screen layouts (Bedrock 26.52 on Windows (mouse/keyboard) via Geyser 2.12.0 + Floodgate 2.2.5 on Paper 26.3) |
hover_appearance |
✅ verified | Element hover and pressed looks on custom screens, drawn by the client (mouse; touch has no hover; plain forms use Bedrock's own highlight) (Bedrock 26.52 on Windows (mouse/keyboard) via Geyser 2.12.0 + Floodgate 2.2.5 on Paper 26.3) |
animated_images |
✅ verified | Animated pictures play as client-side flip books on custom screens at the asset's average frame rate (plain forms show frame 1) (Bedrock 26.52 on Windows (mouse/keyboard) via Geyser 2.12.0 + Floodgate 2.2.5 on Paper 26.3) |
every_x_seconds |
— not offered | Does not run for Bedrock players (requested behaviour; seen not running on a client) |
move_scale |
— not offered | Java only (requested behaviour; refused on a client) |
open_animation |
— not offered | Not played: every refresh reopens the form (requested behaviour; not played on a client) |
rotation |
⚠️ limited | Custom screens draw rotated pictures rotated (not checked on a client) and texts unrotated; plain forms draw everything unrotated (seen on a client) |
live_values |
⚠️ limited | A form is a snapshot: custom screens refresh after every choice, and on value changes with reopenOnValueChange (seen on a client) |
custom_font |
— not offered | Bedrock text always uses the Minecraft font (requested behaviour) |
hud_overlay |
✅ verified | HUDs and popups drawn by the build's .mcpack (HUD layouts): pictures, bars, changing texts through hidden boss bars, popup stacking; other plugins' titles kept; needs the .mcpack in Geyser, otherwise no HUDs (Bedrock 26.52 on Windows (mouse/keyboard) via Geyser 2.12.0 + Floodgate 2.2.5 on Paper 26.3) |
popup_animation |
— not offered | Popup enter/exit animations are not played on Bedrock (requested behaviour) |
Bedrock 26.52 on Windows (mouse and keyboard) was run through Geyser and Floodgate on Paper 26.3, with custom screens, HUDs and popups and with plain forms; mobile, touch and controller input were not tested (see Bedrock players).
Build reproducibility
Packs are byte-identical for identical inputs on one JDK. Projects with imported fonts are the exception across JDKs: their glyph atlases are drawn by the JDK font engine, so another JDK build can change those pack hashes (the text looks the same). Projects without imported fonts do not depend on the JDK font engine.