Skip to content

Releases: zerozshare/OpenFriendMod

ForgeV1.0.4

15 May 19:12
bf60dfe

Choose a tag to compare

ForgeV1.0.4 Pre-release
Pre-release

OpenFriend Mod v1.0.4 — Fabric + Forge

Minecraft Java Edition Friends List, backported to MC 1.16.5 – 1.21.11.

Unofficial — not affiliated with Microsoft, Mojang, or the Xbox brand

OpenFriend is an independent, community-built project. Not developed, endorsed, or officially connected to Microsoft, Mojang, or the Xbox brand. Use on accounts you control.


Note: v1.0.3 was withdrawn

v1.0.3 shipped with a malformed openfriend.fabric.mixins.json (a stray tail accidentally introduced during a tooling pass). The result was an unrecoverable Fabric Loader crash at startup. v1.0.4 is the same release with the JSON repaired and the build re-run from clean sources. If you grabbed v1.0.3, replace it with the matching v1.0.4 jar.


What v1.0.4 is about

A UX polish + code-quality release. The user-visible changes are small but address day-to-day friction reported during v1.0.2 testing: the popup dimming the whole screen after a click no longer traps the user, friend-request errors no longer flood the screen with duplicate notifications, and the 403 error message now actually says what to check.

Forge support also grows from 1 jar (1.20.4 canary) to 2 jars (1.20.1, 1.20.4).


What changed

UX

  • Popup detail dismisses on ESC. Previously the toast detail overlay would stay painted on screen until you happened to click outside it, because ESC was being eaten by vanilla Minecraft's screen handling. Pressing Esc now closes the popup the same way clicking does.
  • Friend-request failure no longer doubles up. A duplicate notice.error(...) push between the quick-add field and the Add Friend tab callback was causing two stacked toasts on every 403. Now you get exactly one.
  • 403 message is short and actionable. The old message was three sentences explaining both Mojang opt-in and Xbox privacy. Shortened to "Xbox account privacy settings may need to be adjusted on the other side." Long-form text is no longer in the toast.
  • Long error messages don't overflow the inline tab anymore. If a message exceeds 60 chars (e.g. some Mojang error bodies), the inline tab shows "Request rejected — click the notification for details." and the full text lives in the clickable toast.

Forge expansion

  • Forge 1.20.1 added. Now ships alongside the existing 1.20.4 canary.
  • Mixin / event-bus duplication eliminated. v1.0.2 had subtle double-execution on Forge (two Friends buttons stacked at the same coordinates, two toast renderers active per frame). v1.0.3 splits the Mixin config so Fabric-only mixins (GuiMixin, TitleScreenMixin, etc.) no longer apply on Forge, and Forge uses its native event bus exclusively for those concerns. IntegratedServerMixin stays shared because Mojang's "Open to LAN" path is the same on both loaders.

Code-quality / open-source housekeeping

  • All ARGB color literals consolidated into UTheme. Previously 30+ hardcoded 0xFF… constants were scattered across 8 files (OpenFriendToastOverlay, SignInScreen, FriendsToast, MCScreenWrapper, UButton, UTabBar, OpenFriendIconButton, MCRenderer), with multiple distinct literals representing the same logical color. Now every color reference goes through UTheme.*, plus two helper methods UTheme.noticeBorder(Level) and UTheme.noticeTitle(Level) replace duplicated switch (level) blocks.
  • OpenFriendToastOverlay.drawBorderedBox(...) extracts the repeated 5-rect bordered-rectangle pattern into a single method, used by both the toast row and the detail panel renders.
  • Toast detail diagnostic logging — the first push() and first render() call each log once at INFO level (OpenFriendToastOverlay.push fired: … / OpenFriendToastOverlay.render first call: …). Useful when triaging "toasts not appearing on my setup" reports.

Downloads

Fabric (26 jars, MC 1.16.5 → 1.21.11)

Drop the matching jar into your mods/ folder.

MC range Java floor Fabric Loader floor
1.16.5 8 0.11.0
1.17 – 1.17.1 16 0.12.0
1.18 – 1.20.4 17 0.16.0
1.20.5 – 1.21.11 21 0.16.0

No Fabric API dependency. Core binary (Windows / macOS / Linux × amd64 + arm64) bundled in each jar and auto-extracts on first launch.

Forge (2 jars: 1.20.1 / 1.20.4)

MC Forge minimum Java floor
1.20.1 47.0.0 17
1.20.4 49.0.0 17

Older Forge versions (1.17.1, 1.18.2, 1.19.2, 1.19.4) and newer (1.21.1) need per-version API work — planned for a later release.


Carried over from v1.0.2 (still in this build)

  • Presence updates state-change driven (10s min, 60s max heartbeat), driving idle 5-min sessions from ~25 POST down to ~5.
  • 429 cooldown auto-retry on the watch loop.
  • Friends-list cadence: push-based via signaling WebSocket, no polling.
  • Seamless launcher MSA session sign-in.
  • Account-switch detection invalidates Core cache.
  • WebRTC OFW0 warmup + ICE timeouts 3s / 8s / 1s.
  • OpenFriend launcher session probe log at startup.

Known limitations

  • Player skin heads on legacy MC (1.16.5 – 1.19.x). Friend list shows a hashed-color placeholder. Real-skin support planned for a later release.
  • Toast click-to-expand outside the OpenFriend overlay. On Forge, toasts in vanilla menu screens (Title / Pause / Multiplayer) can't be clicked to expand. Inside the OpenFriend overlay, clicking the toast opens the detail popup as expected.
  • Go build path embedded in Core binary (<dev-home>/go/...). Cosmetic — leaks only the developer's macOS username. -trimpath fix planned for a later release.
  • Windows Defender ASR (Attack Surface Reduction) may block the unsigned Core binary on managed devices. Workarounds in the issue tracker. Code signing (Certum / SignPath) is on the roadmap.

Test coverage disclaimer

Smoke-tested end-to-end on Fabric 1.16.5, 1.20.4, 1.20.6, 1.21.1, 1.21.4, 1.21.6; Forge 1.20.4.
The remaining jars compile + load cleanly and share the same overlay group as a tested representative, but are not individually verified.

Issue reports: https://github.com/zerozshare/OpenFriendMod/issues

Include MC version, full latest.log (lines containing OpenFriend / openfriend / core:), and what you tried. The OpenFriend launcher session probe: … line makes sign-in issues self-describing.


Related

License

MIT. See LICENSE. Third-party trademarks remain the property of their respective owners.

FabricV1.0.4

15 May 19:54
bf60dfe

Choose a tag to compare

FabricV1.0.4 Pre-release
Pre-release

OpenFriend Mod v1.0.4 — Fabric + Forge

Minecraft Java Edition Friends List, backported to MC 1.16.5 – 1.21.11.

Unofficial — not affiliated with Microsoft, Mojang, or the Xbox brand

OpenFriend is an independent, community-built project. Not developed, endorsed, or officially connected to Microsoft, Mojang, or the Xbox brand. Use on accounts you control.


Note: v1.0.3 was withdrawn

v1.0.3 shipped with a malformed openfriend.fabric.mixins.json (a stray tail accidentally introduced during a tooling pass). The result was an unrecoverable Fabric Loader crash at startup. v1.0.4 is the same release with the JSON repaired and the build re-run from clean sources. If you grabbed v1.0.3, replace it with the matching v1.0.4 jar.


What v1.0.4 is about

A UX polish + code-quality release. The user-visible changes are small but address day-to-day friction reported during v1.0.2 testing: the popup dimming the whole screen after a click no longer traps the user, friend-request errors no longer flood the screen with duplicate notifications, and the 403 error message now actually says what to check.

Forge support also grows from 1 jar (1.20.4 canary) to 2 jars (1.20.1, 1.20.4).


What changed

UX

  • Popup detail dismisses on ESC. Previously the toast detail overlay would stay painted on screen until you happened to click outside it, because ESC was being eaten by vanilla Minecraft's screen handling. Pressing Esc now closes the popup the same way clicking does.
  • Friend-request failure no longer doubles up. A duplicate notice.error(...) push between the quick-add field and the Add Friend tab callback was causing two stacked toasts on every 403. Now you get exactly one.
  • 403 message is short and actionable. The old message was three sentences explaining both Mojang opt-in and Xbox privacy. Shortened to "Xbox account privacy settings may need to be adjusted on the other side." Long-form text is no longer in the toast.
  • Long error messages don't overflow the inline tab anymore. If a message exceeds 60 chars (e.g. some Mojang error bodies), the inline tab shows "Request rejected — click the notification for details." and the full text lives in the clickable toast.

Forge expansion

  • Forge 1.20.1 added. Now ships alongside the existing 1.20.4 canary.
  • Mixin / event-bus duplication eliminated. v1.0.2 had subtle double-execution on Forge (two Friends buttons stacked at the same coordinates, two toast renderers active per frame). v1.0.3 splits the Mixin config so Fabric-only mixins (GuiMixin, TitleScreenMixin, etc.) no longer apply on Forge, and Forge uses its native event bus exclusively for those concerns. IntegratedServerMixin stays shared because Mojang's "Open to LAN" path is the same on both loaders.

Code-quality / open-source housekeeping

  • All ARGB color literals consolidated into UTheme. Previously 30+ hardcoded 0xFF… constants were scattered across 8 files (OpenFriendToastOverlay, SignInScreen, FriendsToast, MCScreenWrapper, UButton, UTabBar, OpenFriendIconButton, MCRenderer), with multiple distinct literals representing the same logical color. Now every color reference goes through UTheme.*, plus two helper methods UTheme.noticeBorder(Level) and UTheme.noticeTitle(Level) replace duplicated switch (level) blocks.
  • OpenFriendToastOverlay.drawBorderedBox(...) extracts the repeated 5-rect bordered-rectangle pattern into a single method, used by both the toast row and the detail panel renders.
  • Toast detail diagnostic logging — the first push() and first render() call each log once at INFO level (OpenFriendToastOverlay.push fired: … / OpenFriendToastOverlay.render first call: …). Useful when triaging "toasts not appearing on my setup" reports.

Downloads

Fabric (26 jars, MC 1.16.5 → 1.21.11)

Drop the matching jar into your mods/ folder.

MC range Java floor Fabric Loader floor
1.16.5 8 0.11.0
1.17 – 1.17.1 16 0.12.0
1.18 – 1.20.4 17 0.16.0
1.20.5 – 1.21.11 21 0.16.0

No Fabric API dependency. Core binary (Windows / macOS / Linux × amd64 + arm64) bundled in each jar and auto-extracts on first launch.

Forge (2 jars: 1.20.1 / 1.20.4)

MC Forge minimum Java floor
1.20.1 47.0.0 17
1.20.4 49.0.0 17

Older Forge versions (1.17.1, 1.18.2, 1.19.2, 1.19.4) and newer (1.21.1) need per-version API work — planned for a later release.


Carried over from v1.0.2 (still in this build)

  • Presence updates state-change driven (10s min, 60s max heartbeat), driving idle 5-min sessions from ~25 POST down to ~5.
  • 429 cooldown auto-retry on the watch loop.
  • Friends-list cadence: push-based via signaling WebSocket, no polling.
  • Seamless launcher MSA session sign-in.
  • Account-switch detection invalidates Core cache.
  • WebRTC OFW0 warmup + ICE timeouts 3s / 8s / 1s.
  • OpenFriend launcher session probe log at startup.

Known limitations

  • Player skin heads on legacy MC (1.16.5 – 1.19.x). Friend list shows a hashed-color placeholder. Real-skin support planned for a later release.
  • Toast click-to-expand outside the OpenFriend overlay. On Forge, toasts in vanilla menu screens (Title / Pause / Multiplayer) can't be clicked to expand. Inside the OpenFriend overlay, clicking the toast opens the detail popup as expected.
  • Go build path embedded in Core binary (<dev-home>/go/...). Cosmetic — leaks only the developer's macOS username. -trimpath fix planned for a later release.
  • Windows Defender ASR (Attack Surface Reduction) may block the unsigned Core binary on managed devices. Workarounds in the issue tracker. Code signing (Certum / SignPath) is on the roadmap.

Test coverage disclaimer

Smoke-tested end-to-end on Fabric 1.16.5, 1.20.4, 1.20.6, 1.21.1, 1.21.4, 1.21.6; Forge 1.20.4.
The remaining jars compile + load cleanly and share the same overlay group as a tested representative, but are not individually verified.

Issue reports: https://github.com/zerozshare/OpenFriendMod/issues

Include MC version, full latest.log (lines containing OpenFriend / openfriend / core:), and what you tried. The OpenFriend launcher session probe: … line makes sign-in issues self-describing.


Related

License

MIT. See LICENSE. Third-party trademarks remain the property of their respective owners.

FabricV1.0.2

15 May 15:10
8b64110

Choose a tag to compare

OpenFriend Mod v1.0.2 — Fabric

Minecraft Java Edition Friends List, backported to MC 1.16.5 – 1.21.11.

Unofficial — not affiliated with Microsoft, Mojang, or the Xbox brand

OpenFriend is an independent, community-built project. Not developed, endorsed, or officially connected to Microsoft, Mojang, or the Xbox brand. Use on accounts you control.


What v1.0.2 is about

This release aligns OpenFriend's Mojang API request pattern with how a well-behaved Friends-List client should behave. The biggest practical effect is a dramatic drop in 429 rate-limit issues during normal use.


What changed

Presence updates are now state-change driven

Previously, OpenFriend posted presence every 12 seconds unconditionally — about 5 posts per minute even when nothing was happening. This produced a request pattern noticeably noisier than necessary and was the main cause of 429 rate limited warnings during testing.

v1.0.2 replaces the fixed ticker with a state-driven loop:

  • Minimum interval between posts: 10 seconds (throttle)
  • Maximum interval without a post: 60 seconds (heartbeat)
  • Posts fire when: presence status / join-info / invite list actually changes, or the 60-second heartbeat is due

Approximate volume change for a 5-minute idle session: ~25 POST → ~5 POST. Active sessions (host start / stop, friend invites) still get an immediate update, just throttled to no more than one every 10 seconds.

429 cooldown auto-retry

When Mojang returns a 429 with a cooldown window, the watch loop now schedules a retry exactly when the cooldown expires (plus a 2-second margin) instead of waiting for the next regular tick.

Friends list cadence

OpenFriend continues to rely on the signaling WebSocket's push notifications (friend.added, friend.removed, friend.requestIncoming, etc.) for friends-list deltas — there is no periodic GET /friends polling, and none has been added. Push gives lower latency at zero rate-limit cost.

Cosmetic

  • The Mod's presence.watch IPC now sends intervalSeconds=60 for log-readability (the Core-side loop drives the actual cadence and ignores the value beyond a sanity floor).
  • Core + Mod bumped to v1.0.2; all 30 Fabric jars rebuilt.

Downloads

30 Fabric jars, MC 1.16.5 → 1.21.11. Drop the matching one into your mods/ folder.

MC range Java floor Fabric Loader floor
1.16.5 8 0.11.0
1.17 – 1.17.1 16 0.12.0
1.18 – 1.20.4 17 0.16.0
1.20.5 – 1.21.11 21 0.16.0

No Fabric API dependency. Core binary (Windows / macOS / Linux × amd64 + arm64) is bundled in each jar and auto-extracts on first launch.


Carried over from v1.0.1 (still in this build)

  • Seamless sign-in via launcher MSA session (no device-code prompt on every launch).
  • Account-switch detection: changing the launcher's MS account invalidates the Core cache automatically.
  • Friends-list cache persisted to disk between Core restarts.
  • MCScreenOpener.publishToFriends calls onServerPublished directly so "Stop hosting" switches without depending on a mixin.
  • WebRTC OFW0 warmup magic + ICE timeouts 3s / 8s / 1s.
  • 1.16.5 / 1.17.x: clearer Java floor + JsonParser compat + java.util.logging.
  • SignInScreen layout fix (panel 240 → 300 px, button row overlap resolved).
  • OpenFriend launcher session probe log line at startup for sign-in diagnostics.
  • Specific friend-request error messages (target hasn't opted into Friends List, Xbox privacy, etc.).

Known limitations

  • Player skin heads on legacy MC (1.16.5 – 1.19.x). Friend list shows a hashed-color placeholder, not the real head.
  • Toast click-to-expand on title / pause / multiplayer screens. Currently only works inside the OpenFriend overlay.
  • Go build path embedded in Core binary (<dev-home>/go/...). Cosmetic — leaks only the developer's macOS username. Cleanup with -trimpath planned for v1.1.

Test coverage disclaimer

Smoke-tested end-to-end on: 1.16.5, 1.20.4, 1.20.6, 1.21.1, 1.21.4, 1.21.6.
The remaining 24 jars compile and load cleanly and share the same overlay group as a tested representative, but are not individually verified.

Issue reports: https://github.com/zerozshare/OpenFriendMod/issues

Include MC version, full latest.log (lines containing OpenFriend / openfriend / core:), and what you tried. The OpenFriend launcher session probe: … line makes sign-in issues self-describing.


Related

License

MIT. See LICENSE. Third-party trademarks remain the property of their respective owners.

FabricV1.0.1

15 May 13:58
8b64110

Choose a tag to compare

OpenFriend Mod v1.0.1 — Fabric

Minecraft Java Edition Friends List, backported to MC 1.16.5 – 1.21.11.

Unofficial — not affiliated with Microsoft, Mojang, or the Xbox brand

OpenFriend is an independent, community-built project. Not developed, endorsed, or officially connected to Microsoft, Mojang, or the Xbox brand. Use on accounts you control.


Highlights

  • Seamless sign-in. No more device-code prompt on every launch. The mod hands the launcher's Microsoft session straight to the Core — first launch goes directly into the Friends overlay.
  • Mod ↔ Mod online-mode joins verified. When both sides run OpenFriend, joins work on online-mode servers natively. No Bypass plugin required for that flow.
  • WebRTC join reliability. First-attempt success rate improved by a 4-byte warmup handshake plus shorter ICE timeouts (3s / 8s / 1s). The "had to click Join twice" pattern is significantly reduced.
  • Rate-limit resilient. Friends-list cache is persisted to disk between Core restarts. Mojang's 429 is no longer triggered by simple game-restart cycles.
  • Account switching. Change your MS account in the launcher → OpenFriend follows automatically. No stale previous-account issue.

Downloads

30 Fabric jars, MC 1.16.5 → 1.21.11. Drop the matching one into your mods/ folder.

MC range Java floor Fabric Loader floor
1.16.5 8 0.11.0
1.17 – 1.17.1 16 0.12.0
1.18 – 1.20.4 17 0.16.0
1.20.5 – 1.21.11 21 0.16.0

No Fabric API dependency. The Core binary (Windows / macOS / Linux × amd64 + arm64) is bundled in each jar and auto-extracts to your platform's data directory on first launch.


Fixes since v1.0.0

Auth / sign-in

  • Auto-handoff via launcher session now works reliably. User.getProfileId() is invoked as a direct call instead of via reflection. Resolves the "no Minecraft session available, falling back to device-code" loop reported on 1.21.5 / 1.21.6 fresh installs.
  • Per-MC-version profileId path. Versions before 1.19.1 use user.getGameProfile().getId(); 1.19.1 onward uses user.getProfileId() directly. Compiles and runs on every supported MC version.
  • Account switching detected automatically. Core compares the launcher's profileId against the cached one — if they differ, auth.pem and friends-cache.json are invalidated and the new launcher account takes over. No more "stuck on previous account".
  • Device-code hint. When the launcher's session isn't usable and the fallback auth.signIn fires, Java now sends expectedProfileId to Core so a stale cached refresh-token isn't silently used to sign in as the wrong account.
  • Presence subscription on device-code path. Legacy MC versions (1.16.5 – 1.17.x) that always go through device-code now subscribe to presence.watch after sign-in. Friend Online / Offline status updates correctly.
  • 1.16.5 sign-in stability. Dropped slf4j dependency from common (1.16.5 doesn't ship slf4j on classpath — caused NoClassDefFoundError on first IPC notification). Switched to java.util.logging.
  • 1.16.5 IPC compat. JsonParser.parseString(...) (Gson 2.8.6+) replaced with new JsonParser().parse(...) — works on the older Gson shipped with MC 1.16.5.
  • Accurate Java floors per MC version in fabric.mod.json. 1.16.5 → java >=8, 1.17.x → java >=16, 1.18 – 1.20.4 → java >=17, 1.20.5+ → java >=21. Fixes "OpenJDK 8 too old" rejection when installing on a vanilla 1.16.5 launcher.
  • Minecraft version pinned per-jar. Each jar's fabric.mod.json declares its exact MC version — dropping the wrong jar into mods/ is rejected cleanly at load time instead of crashing later.

Hosting / Open to Friends

  • "Stop hosting" button switches correctly. MCScreenOpener.publishToFriends now invokes onServerPublished(port) directly after publishServer() succeeds, instead of relying on IntegratedServerMixin. A lastBridgedPort guard prevents duplicate host.start IPC calls when both paths fire.

Friends UI

  • Specific friend-request error messages. When Mojang's PUT /friends returns 403, the toast now shows why (target hasn't opted into Friends List, Xbox privacy block, blocked by either side) instead of a generic "Could not reach …". The Mod passes Core's error message body through to the UI instead of swallowing it.
  • SignInScreen layout fix. Panel widened 240 → 300 px; vertical spacing increased. The code box no longer overlaps the "2. Enter this code:" label, and the three footer buttons no longer overlap on smaller GUI scales.

Rate-limit / cache

  • Friends-list cache persisted to disk. Core saves friends-cache.json after each successful refresh and reloads on startup. Mojang's /friends rate limit (≈5 req/min) is no longer tripped by simple game-restart cycles during development / quick testing.
  • Cooldown + cached return. When in 429 cooldown and a cached response exists, Core returns the cache instead of bubbling up the rate-limit error. The Friends list stays populated instead of going blank.

WebRTC / Join reliability

  • DataChannel warmup magic. Both peers send a 4-byte OFW0 header immediately after the data channel opens; both peers strip the first 4 bytes from received data. Establishes SCTP + NAT mapping with discardable bytes before MC's handshake packets flow. Reduces the "first Join attempt fails, second works" pattern.
  • ICE candidate gathering timeouts dropped from 10s / 30s / 5s (gathering / disconnect / failed) to 3s / 8s / 1s. Bad paths fail in time for the Mod to react; good paths complete the join faster.

Mixins

  • ScreenMouseMixin removed from the universal set. Screen.mouseClicked is a default interface method on GuiEventListener — Mixin cannot @Inject into it because Screen itself doesn't declare it. The mixin was causing mod-load failures on 1.16.5. Toasts are still clickable inside the OpenFriend overlay (via MCScreenWrapper.mouseClicked); the global-screen click-to-expand will return in a future release with a MouseHandler.onPress retarget.

Logging

  • Added an OpenFriend launcher session probe log line at startup showing exactly what the mod sees from the launcher (userClass, name, tokenLen, profileId). Makes future sign-in bug reports diagnosable from the log alone.

Known limitations

  • Player skin heads on legacy MC (1.16.5 – 1.19.x). Friend list shows a hashed-color placeholder, not the real head. The Mojang sessionserver skin lookup isn't wired up for the PoseStack-era variants yet.
  • Toast click-to-expand on title / pause / multiplayer screens. Currently only works inside the OpenFriend overlay (see ScreenMouseMixin note above).

Test coverage disclaimer

Smoke-tested end-to-end (sign-in → friend add → online-mode Join works):

  • 1.16.5, 1.20.4, 1.20.6, 1.21.1, 1.21.4, 1.21.6

The other 24 jars compile and load cleanly, share the same overlay group as a tested representative, and are expected to work — but each one is not individually verified.

If something is broken on your MC version, please open a GitHub Issue: https://github.com/zerozshare/OpenFriendMod/issues

Include:

  • Your MC version
  • The full latest.log (especially lines containing OpenFriend, openfriend, or core:)
  • What you tried to do and what happened

The diagnostic log line OpenFriend launcher session probe: … (new in v1.0.1) makes sign-in issues self-describing.


Acknowledgements

Thanks to the user who filed the 1.21.5 / 1.21.6 fresh-install device-code-missing bug report — that single report identified the resolveProfileId reflection bug and directly shaped this release's seamless-sign-in fix.


Related

License

MIT. See LICENSE. Third-party trademarks remain the property of their respective owners.

Fabric Release v1.0.0

14 May 01:14
98d9942

Choose a tag to compare

OpenFriend — Fabric jars

Drop the matching jar into your mods/ folder. Requires the Fabric Loader.
No Fabric API dependency.

Supported versions (v1.0.0)

MC version jar overlay notes
1.21.10 OpenFriend-fabric-1.21.10.jar group-d3 new KeyEvent / CharacterEvent API
1.21.9 OpenFriend-fabric-1.21.9.jar group-d3 new KeyEvent / CharacterEvent API
1.21.8 OpenFriend-fabric-1.21.8.jar group-d2
1.21.7 OpenFriend-fabric-1.21.7.jar group-d2
1.21.6 OpenFriend-fabric-1.21.6.jar group-d2
1.21.5 OpenFriend-fabric-1.21.5.jar group-d
1.21.4 OpenFriend-fabric-1.21.4.jar group-c
1.21.3 OpenFriend-fabric-1.21.3.jar group-c
1.21.2 OpenFriend-fabric-1.21.2.jar group-c
1.21.1 OpenFriend-fabric-1.21.1.jar group-c2
1.21 OpenFriend-fabric-1.21.jar group-c2
1.20.6 OpenFriend-fabric-1.20.6.jar group-c1c
1.20.5 OpenFriend-fabric-1.20.5.jar group-c1c
1.20.4 OpenFriend-fabric-1.20.4.jar group-c1b primary tested target
1.20.3 OpenFriend-fabric-1.20.3.jar group-c1b
1.20.2 OpenFriend-fabric-1.20.2.jar group-c1b
1.20.1 OpenFriend-fabric-1.20.1.jar group-c1
1.20 OpenFriend-fabric-1.20.jar group-c1
1.19.4 OpenFriend-fabric-1.19.4.jar group-b PoseStack era
1.19.3 OpenFriend-fabric-1.19.3.jar group-b3 PoseStack era
1.19.2 OpenFriend-fabric-1.19.2.jar group-b0 PoseStack era
1.19.1 OpenFriend-fabric-1.19.1.jar group-b0 PoseStack era
1.19 OpenFriend-fabric-1.19.jar group-b0 PoseStack era
1.18.2 OpenFriend-fabric-1.18.2.jar group-b1 PoseStack + TextComponent
1.18.1 OpenFriend-fabric-1.18.1.jar group-b1 PoseStack + TextComponent
1.18 OpenFriend-fabric-1.18.jar group-b1 PoseStack + TextComponent
1.17.1 OpenFriend-fabric-1.17.1.jar group-a2 legacy PoseStack
1.17 OpenFriend-fabric-1.17.jar group-a2 legacy PoseStack
1.16.5 OpenFriend-fabric-1.16.5.jar group-a log4j logger, ConnectScreen 3-arg, TextureManager.bind

Total: 29 Fabric builds, MC 1.16.5 → 1.21.10.

What does it ship

  • The full OpenFriend Java mod (UI, IPC client, MC binding)
  • The bundled Core binary for the current platform (Windows / macOS / Linux,
    amd64 + arm64) — auto-extracted on first launch to
    ~/Library/Application Support/openfriend/bin/ (macOS),
    %APPDATA%/openfriend/bin/ (Windows),
    or ~/.local/share/openfriend/bin/ (Linux)