promotional bannermobile promotional banner

Peerless

Invite friends to your singleplayer world in seconds with a room code. Fast direct P2P connections with zero server configuration.
Back to Files

peerless-fabric-1.21.1-0.8.0-beta.14-all.jar

File namepeerless-fabric-1.21.1-0.8.0-beta.14-all.jar
Uploader
darkerrqqdarkerrqq
Uploaded
Aug 28, 2026
Downloads
5
Size
43.8 MB
Mod Loaders
Fabric
File ID
8757109
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

Fabric

modImplementation "curse.maven:peerless-1628812:8757109"

Learn more about Curse Maven

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.start is 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 1543003304223711272 as 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): create and find now 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_found without 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.

This mod has no additional files