From 6c608409e0ea67f4abe379f8894f2777e4cf3b81 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Sun, 15 Jun 2025 09:53:50 -0500 Subject: [PATCH] Added emote cancel (shift) --- .../saturnclient/saturnclient/auth/Auth.java | 12 +++++ .../saturnclient/event/KeyInputHandler.java | 6 ++- .../saturnclient/mixin/SaturnReload.java | 47 ++++++++++++------- 3 files changed, 48 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/saturnclient/saturnclient/auth/Auth.java b/src/main/java/org/saturnclient/saturnclient/auth/Auth.java index 29650e2..5a687dc 100644 --- a/src/main/java/org/saturnclient/saturnclient/auth/Auth.java +++ b/src/main/java/org/saturnclient/saturnclient/auth/Auth.java @@ -206,4 +206,16 @@ public class Auth { } } } + + public static void cancelEmote() { + String uuid = SaturnClient.client.player.getUuidAsString().replace("-", ""); + for (Map.Entry player : playerNames.entrySet()) { + if (players.containsKey(player.getValue()) && !player.getValue().equals(uuid)) { + SaturnClient.client.player.networkHandler + .sendChatCommand("msg " + player.getKey() + " " + + "$SATURN_CANCEL_EMOTE&@"+uuid+"&@ if you are seeing this as a player, please report this to https://github.com/saturnclientmc/saturnclient/issues"); + ; + } + } + } } diff --git a/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java b/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java index cb73afb..f2eafb5 100644 --- a/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java +++ b/src/main/java/org/saturnclient/saturnclient/event/KeyInputHandler.java @@ -6,6 +6,7 @@ import net.minecraft.client.option.KeyBinding; import net.minecraft.client.util.InputUtil; import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.saturnclient.auth.Auth; import org.saturnclient.ui2.screens.EmoteWheel; import org.saturnclient.ui2.screens.ShiftMenu; @@ -53,7 +54,10 @@ public class KeyInputHandler { if (SaturnClient.client.player != null && SaturnClient.client.player.isSneaking()) { AnimationStack animationStack = PlayerAnimationAccess.getPlayerAnimLayer(SaturnClient.client.player); - animationStack.removeLayer(1000); + if (animationStack.isActive() && animationStack.getPriority() == 1000) { + animationStack.removeLayer(1000); + Auth.cancelEmote(); + } } }); } diff --git a/src/main/java/org/saturnclient/saturnclient/mixin/SaturnReload.java b/src/main/java/org/saturnclient/saturnclient/mixin/SaturnReload.java index 48bb542..db2c3cb 100644 --- a/src/main/java/org/saturnclient/saturnclient/mixin/SaturnReload.java +++ b/src/main/java/org/saturnclient/saturnclient/mixin/SaturnReload.java @@ -24,24 +24,39 @@ public class SaturnReload { @Inject(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;Lnet/minecraft/client/gui/hud/MessageIndicator;)V", at = @At("HEAD"), cancellable = true) public void onAddMessage(Text message, @Nullable MessageSignatureData signatureData, @Nullable MessageIndicator indicator, CallbackInfo ci) { - String msg = message.toString(); - if (msg.contains("$SATURN_RELOAD")) { - for (Map.Entry player : Auth.playerNames.entrySet()) { - String name = player.getKey(); - if (msg.contains(name)) { - Auth.player(name, player.getValue()); + try { + String msg = message.toString(); + if (msg.contains("$SATURN_RELOAD")) { + for (Map.Entry player : Auth.playerNames.entrySet()) { + String name = player.getKey(); + if (msg.contains(name)) { + Auth.player(name, player.getValue()); + } + ci.cancel(); } - ci.cancel(); + } else if (msg.contains("$SATURN_EMOTE")) { + String[] args = msg.split("&@"); + for (AbstractClientPlayerEntity player : SaturnClient.client.world.getPlayers()) { + if (player.getUuidAsString().replace("-", "").equals(args[1])) { + AnimationStack animationStack = PlayerAnimationAccess.getPlayerAnimLayer(player); + animationStack.addAnimLayer(1000, PlayerAnimationRegistry.getAnimation(Identifier.of("saturnclient", args[2])).playAnimation()); + ci.cancel(); + break; + } + } + } else if (msg.contains("$SATURN_CANCEL_EMOTE")) { + String[] args = msg.split("&@"); + for (AbstractClientPlayerEntity player : SaturnClient.client.world.getPlayers()) { + if (player.getUuidAsString().replace("-", "").equals(args[1])) { + AnimationStack animationStack = PlayerAnimationAccess.getPlayerAnimLayer(player); + animationStack.removeLayer(1000); + ci.cancel(); + break; + } + } } - } else if (msg.contains("$SATURN_EMOTE")) { - String[] args = msg.split("&@"); - for (AbstractClientPlayerEntity player : SaturnClient.client.world.getPlayers()) { - if (player.getUuidAsString().replace("-", "").equals(args[1])) { - AnimationStack animationStack = PlayerAnimationAccess.getPlayerAnimLayer(player); - animationStack.addAnimLayer(1000, PlayerAnimationRegistry.getAnimation(Identifier.of("saturnclient", args[2])).playAnimation()); - } - } - ci.cancel(); + } catch (Exception e) { + e.printStackTrace(); } } }