From 2a425335f06a1bea139349915909b0190c7bd4b4 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Mon, 23 Feb 2026 09:34:38 +0100 Subject: [PATCH] Working emote streaming --- build.gradle | 2 +- .../saturnclient/client/ServiceClient.java | 36 ++++++++----------- .../client/player/SaturnPlayer.java | 6 ++++ .../saturnclient/ui2/screens/EmoteWheel.java | 14 ++++---- 4 files changed, 28 insertions(+), 30 deletions(-) diff --git a/build.gradle b/build.gradle index 8d5fc02..0d0efed 100644 --- a/build.gradle +++ b/build.gradle @@ -111,7 +111,7 @@ dependencies { // ───────────────────────────────────────────── // Session Java (auth/session handling) - implementation "com.github.selimaj-dev:session-java:0.1.5" + implementation "com.github.selimaj-dev:session-java:0.1.6" } diff --git a/src/main/java/org/saturnclient/saturnclient/client/ServiceClient.java b/src/main/java/org/saturnclient/saturnclient/client/ServiceClient.java index ea19364..615b3b2 100644 --- a/src/main/java/org/saturnclient/saturnclient/client/ServiceClient.java +++ b/src/main/java/org/saturnclient/saturnclient/client/ServiceClient.java @@ -1,7 +1,6 @@ package org.saturnclient.saturnclient.client; import java.util.UUID; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import org.saturnclient.saturnclient.SaturnClient; @@ -13,7 +12,6 @@ import dev.kosmx.playerAnim.api.layered.AnimationStack; import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationAccess; import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationRegistry; import dev.selimaj.session.Session; -import dev.selimaj.session.types.SessionResult; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.util.Identifier; @@ -138,10 +136,8 @@ public class ServiceClient { public static void emote(String emote) { try { - String[] targets = { uuid.toString().replaceAll("-", "") }; - session.request(ServiceMethods.Emote, - new ServiceMethods.Types.EmoteRequest(emote, targets)) + new ServiceMethods.Types.EmoteRequest(emote, SaturnPlayer.getExternalUUIDAsString())) .whenComplete((msg, throwable) -> { if (throwable != null) { throwable.printStackTrace(); @@ -153,27 +149,23 @@ public class ServiceClient { } public static void eventHandlers() { - session.onNotification(ServiceMethods.EmoteEvent, (l, data) -> { - return CompletableFuture.supplyAsync(() -> { - for (AbstractClientPlayerEntity player : SaturnClient.client.world.getPlayers()) { - if (player.getUuidAsString().replace("-", "").equals(data.from())) { - AnimationStack animationStack = PlayerAnimationAccess.getPlayerAnimLayer(player); - if (data.emote() != null && !data.emote().isEmpty()) { - if (animationStack.isActive() && animationStack.getPriority() == 1000) { - animationStack.removeLayer(1000); - } - animationStack.addAnimLayer(1000, - PlayerAnimationRegistry - .getAnimation(Identifier.of("saturnclient", data.emote())) - .playAnimation()); - } else { + session.onNotification(ServiceMethods.EmoteEvent, (data) -> { + for (AbstractClientPlayerEntity player : SaturnClient.client.world.getPlayers()) { + if (player.getUuidAsString().replace("-", "").equals(data.from())) { + AnimationStack animationStack = PlayerAnimationAccess.getPlayerAnimLayer(player); + if (data.emote() != null && !data.emote().isEmpty()) { + if (animationStack.isActive() && animationStack.getPriority() == 1000) { animationStack.removeLayer(1000); } + animationStack.addAnimLayer(1000, + PlayerAnimationRegistry + .getAnimation(Identifier.of("saturnclient", data.emote())) + .playAnimation()); + } else { + animationStack.removeLayer(1000); } } - - return SessionResult.ok(""); - }); + } }); } } diff --git a/src/main/java/org/saturnclient/saturnclient/client/player/SaturnPlayer.java b/src/main/java/org/saturnclient/saturnclient/client/player/SaturnPlayer.java index a6caf95..edcd633 100644 --- a/src/main/java/org/saturnclient/saturnclient/client/player/SaturnPlayer.java +++ b/src/main/java/org/saturnclient/saturnclient/client/player/SaturnPlayer.java @@ -55,4 +55,10 @@ public class SaturnPlayer { PLAYERS.put(uuid, null); } + + public static String[] getExternalUUIDAsString() { + return PLAYERS.keySet().stream().filter(id -> !id.equals(ServiceClient.uuid)).map(UUID::toString) + .toArray(String[]::new); + } + } diff --git a/src/main/java/org/saturnclient/ui2/screens/EmoteWheel.java b/src/main/java/org/saturnclient/ui2/screens/EmoteWheel.java index ab726ea..55d6fe1 100644 --- a/src/main/java/org/saturnclient/ui2/screens/EmoteWheel.java +++ b/src/main/java/org/saturnclient/ui2/screens/EmoteWheel.java @@ -63,13 +63,13 @@ public class EmoteWheel extends SaturnScreen { if (emote == null) { return; } - // AnimationStack animationStack = PlayerAnimationAccess.getPlayerAnimLayer(SaturnClient.client.player); - // if (animationStack.isActive() && animationStack.getPriority() == 1000) { - // animationStack.removeLayer(1000); - // } - // animationStack.addAnimLayer(1000, - // PlayerAnimationRegistry.getAnimation(Identifier.of("saturnclient", - // emote)).playAnimation()); + AnimationStack animationStack = PlayerAnimationAccess.getPlayerAnimLayer(SaturnClient.client.player); + if (animationStack.isActive() && animationStack.getPriority() == 1000) { + animationStack.removeLayer(1000); + } + animationStack.addAnimLayer(1000, + PlayerAnimationRegistry.getAnimation(Identifier.of("saturnclient", + emote)).playAnimation()); ServiceClient.emote(emote); close(); }).dimensions(70, 70).centerOffset(width, height, -80 + (col * 80), -35 + (row * 80))