peerless-fabric-1.20.1-0.8.0-beta.14-all.jar
Curse Maven Snippet
What's new
- Fixed Discord Rich Presence never displaying: Discord now answers every frame and asset keys are validated. The previous build sent a URL as
assets.large_image(Discord only accepts asset keys uploaded in the Developer Portal) and silently skipped all IPC answers, so rejected SET_ACTIVITY frames were invisible. - Fixed elapsed-time timer:
timestamps.startis now epoch milliseconds (was seconds). - Discord Rich Presence now shows a party size while hosting (e.g. 2/8).
- Rich Presence art degrades gracefully: on asset rejection the mod logs the exact Discord error, switches to text-only presence and keeps working; art keys are configurable (
p2pfriends.discord.largeImageKey/smallImageKey), RPC can be disabled with-Dp2pfriends.discord.enabled=false, application id overridable with-Dp2pfriends.discord.clientId. - Added one-time diagnostics for Discord RPC (no desktop app, refused handshake with close code, rejected presence) instead of silent failure.
- Set the live Discord application id
1543003304223711272as the built-in default (the previously baked-in id was rejected by Discord with close code 4000 "Invalid Client ID"); still overridable via-Dp2pfriends.discord.clientId. - Hardened signaling resilience after a field report of a failed room creation despite the same actions working for another player in the same city (log showed simultaneous UDP timeouts and an HTTPS connect timeout to Wasmer):
createandfindnow retry the whole UDP→HTTP chain once after a 1.5s pause with the transport order swapped, so a brief route flake no longer fails the first click; background actions (poll/signal) keep a single fast pass. - Wired up the previously dead 30s UDP failure cooldown: after a UDP transport failure (including DNS failure) all signaling requests skip UDP straight to HTTPS for 30s instead of burning 3×2.5s of UDP timeouts every request; the cooldown resets as soon as the server answers over UDP (success or authoritative error).
- Signaling server errors are no longer swallowed: when UDP dies on the network but HTTPS reaches the server and receives an authoritative answer, that answer becomes the primary error instead of a suppressed exception behind "Signaling server did not respond".
- Live-verified against the production signaling server: UDP create/close (266ms), authoritative
room_not_foundwithout retries (0.9s), dead-UDP→HTTPS fallback create (8.4s), DNS-dead UDP→HTTPS create (1.2s), clean failure with a dead custom HTTP URL. Source-only change across all 5 loaders; jars not rebuilt. - Removed the failed legacy Forge 1.12.2 loader entirely (32 tracked files, 58.9 MB on disk with build outputs). It was already absent from the build matrix, release flow and README — the directory was dead weight. Supported loaders remain NeoForge/Fabric 1.21.1 and Forge/NeoForge/Fabric 1.20.1.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

