Working emote streaming

This commit is contained in:
2026-02-23 09:34:38 +01:00
parent f0966c86f3
commit 2a425335f0
4 changed files with 28 additions and 30 deletions
+1 -1
View File
@@ -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"
}
@@ -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("");
});
}
});
}
}
@@ -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);
}
}
@@ -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))