Commit Graph
101 Commits
Author SHA1 Message Date
selimaj-devandclaude 2de394ebbf Authenticate through Mojang's session server; check client version
Stop sending the Minecraft access token to the Saturn server. The
connect loop now:

1. fetches GET /versions and compares this client's mod version:
   supported -> connect; deprecated -> warn, connect; neither -> warn,
   don't connect (warnings are shown once per status change)
2. requests auth_challenge with the username to get a server id
3. calls Mojang's session `join` with the access token and server id
   (the token only goes to Mojang); a refused token gives up
4. requests auth_verify, which the server confirms with `hasJoined`

Add SaturnProvider.getModVersion() and showWarning() for the version
check and its toast.

Refs saturnclientmc/saturnclient#7

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-25 15:22:37 +02:00
selimaj-devandclaude 3b4e1ab4cb Reconnect to the Saturn server and time out requests
Move to session-java 0.2.0 (Gitea package registry) and rework
ServiceClient around a single connect loop:

- Reconnect with exponential backoff (1 s -> 60 s) when the connection
  drops, e.g. on every server redeploy; give up only when retrying cannot
  help (no Minecraft session, or the server rejects the token)
- Publish the session only after authentication succeeds, and replace
  (rather than append to) owned cosmetics and clear cached players on
  reconnect
- Time out every request after 10 s and connecting after 10 s, so a lost
  response can no longer hang the player-lookup worker forever
- Register onClientStopping once, and keep a local session reference in
  request callbacks
- Allow -Dsaturn.serverUri to point the client at a local server

Refs saturnclientmc/saturnclient#4, saturnclientmc/saturnclient#5

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-25 14:46:30 +02:00
selimaj-devandclaude 9e3bf14ffa Stop per-frame player lookups and make shared state thread-safe
SaturnPlayer stored non-Saturn players as null, which looked the same as
"not fetched yet", so every render re-queued them and flooded the server
with get_player requests. Remember negative lookups and re-check them
after 60 s, retry failed lookups after 5 s, queue each player at most
once, skip lookups while disconnected, and replace the hand-rolled worker
thread with a single-thread executor.

getPlayer now returns null only when the server says the player isn't on
Saturn and throws on failure, so failures are retried instead of cached.

Make state shared between network callbacks and the render thread safe:
ConcurrentHashMap for players, CopyOnWriteArrayList for owned cosmetics,
volatile session/uuid and cosmetic fields, and run emote notifications
on the client thread.

Refs saturnclientmc/saturnclient#2, saturnclientmc/saturnclient#6

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-25 14:00:29 +02:00
Kr4ight 2cfd93c197 Fix inputs 2026-04-09 01:27:52 +02:00
selimaj-dev 1ddfd9d024 Improved auth 2026-04-08 10:41:24 +02:00
selimaj-dev 5e44a71054 Added implementation for identifier as effect icon 2026-04-08 08:27:13 +02:00
Kr4ight 3379acef80 Hopefully fixed auth timeout 2026-04-07 20:14:56 +02:00
selimaj-dev f07750cdcb Fixed large logs when session is offline saturnclientmc/saturclient#66 2026-03-30 13:51:35 +02:00
selimaj-dev d73895ac7c Working freelook 2026-03-26 17:59:29 +01:00
selimaj-dev 7eb8b6a120 Freelook zoom 2026-03-26 16:26:49 +01:00
selimaj-dev 3e4985c6bc Zoom curve 2026-03-26 16:02:29 +01:00
selimaj-dev 53dfa37b64 Improved rounded rectangles 2026-03-25 23:26:19 +01:00
selimaj-dev b81a4dda98 Improved rounded rectangles #59 2026-03-25 22:18:16 +01:00
selimaj-dev fc1500abbd Improved MatrixStackRef #59 2026-03-25 18:43:35 +01:00
selimaj-dev c72af1300a Improved RenderScope #59 2026-03-25 18:23:14 +01:00
selimaj-dev 3d315fa2cc Refactor MatrixStack and RenderScope #59 2026-03-25 17:58:08 +01:00
selimaj-dev 6873f76c43 Light refactors 2026-03-24 13:09:20 +01:00
selimaj-dev dceff0e675 Added requires on features 2026-03-24 12:55:03 +01:00
selimaj-dev 3d0b95b566 Refactored spec and management 2026-03-24 12:44:29 +01:00
selimaj-dev bdab6586d4 Refactored all the common/module to feature 2026-03-24 11:52:43 +01:00
selimaj-dev 8471894248 Refactored Feature to Mod (renamed) 2026-03-24 11:50:21 +01:00
selimaj-dev 3138f7ec62 Refactored Feature to Mod 2026-03-24 11:48:04 +01:00
selimaj-dev 174c95240c Mod Preview 2026-03-24 01:38:43 +01:00
selimaj-dev 2b6194223a Sanitized cloaks and hats 2026-03-23 20:51:00 +01:00
selimaj-dev eb40ece9f6 Gif loading 2026-03-23 20:41:54 +01:00
selimaj-dev 8398c8ce7a Gif loading 2026-03-23 20:33:07 +01:00
selimaj-dev 34eb217747 Gif loading 2026-03-23 20:20:04 +01:00
RudideC 8f09c4cf71 spain flag 2026-03-21 23:17:46 +01:00
RudideC 4cbc574048 best cloak ever 2026-03-21 21:44:58 +01:00
selimaj-dev f1913de95c Fixed saturn player tracking 2026-03-21 20:40:20 +01:00
selimaj-dev 9064238c3a Bucket preview and end texture 2026-03-21 14:36:59 +01:00
selimaj-dev ddc48eaf34 Cloak previews 2026-03-21 14:00:51 +01:00
selimaj-dev 1a1f4f07a3 bucket hat 2026-03-21 13:12:18 +01:00
selimaj-dev ff516e3feb End materials and cloaks 2026-03-21 10:57:00 +01:00
selimaj-dev 9c2d5051c5 Albania mark 2026-03-21 01:54:17 +01:00
selimaj-dev 9f2406abdb Cloak loading 2026-03-20 23:06:01 +01:00
selimaj-dev 2969a8340a Removed liquids from nofog 2026-03-20 21:55:29 +01:00
selimaj-dev 4054a8bec6 Refactored effect 2026-03-20 21:36:09 +01:00
selimaj-dev 44c5a1783f Refactored effect 2026-03-20 21:36:04 +01:00
selimaj-dev edb37d0307 Fixed isFull 2026-03-20 21:06:53 +01:00
selimaj-dev 5532a7cb4f Fixed features 2026-03-20 21:03:53 +01:00
selimaj-dev c185cea305 Fixed FeatureLayout 2026-03-20 20:56:37 +01:00
selimaj-dev 44d590d6ed Fixed ConfigEditor 2026-03-20 20:54:09 +01:00
selimaj-dev 56b930c437 Fixed Ui components 2026-03-20 20:50:43 +01:00
selimaj-dev 3a98c90620 Fixed config 2026-03-20 20:45:58 +01:00
selimaj-dev a5885e1828 Json serialization improved 2026-03-20 20:39:29 +01:00
selimaj-dev 61accce977 Re structured property 2026-03-20 20:28:24 +01:00
selimaj-dev 1a79309d04 Re structuring property 2026-03-20 20:14:24 +01:00
selimaj-dev 00d8ca5f50 Re structuring property 2026-03-20 19:51:04 +01:00
selimaj-dev e78a6ced1f Fix 2026-03-09 01:33:43 +01:00