From 10e6137e5d2ef877ff38c466759ffd5edf9642ba Mon Sep 17 00:00:00 2001 From: Fretux Date: Wed, 7 Jan 2026 17:49:19 +0100 Subject: [PATCH] Play execution animation for executors --- .../client/PlayerAnimationHandler.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/fretux/knockedback/client/PlayerAnimationHandler.java b/src/main/java/net/fretux/knockedback/client/PlayerAnimationHandler.java index d7942ac..fc7c1f5 100644 --- a/src/main/java/net/fretux/knockedback/client/PlayerAnimationHandler.java +++ b/src/main/java/net/fretux/knockedback/client/PlayerAnimationHandler.java @@ -6,6 +6,7 @@ import dev.kosmx.playerAnim.api.layered.ModifierLayer; import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationAccess; import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationRegistry; import net.fretux.knockedback.KnockedBack; +import net.minecraft.client.Minecraft; import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; @@ -19,8 +20,8 @@ import java.util.UUID; @Mod.EventBusSubscriber(modid = KnockedBack.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE) public class PlayerAnimationHandler { - private static final ResourceLocation GRIP_ANIMATION_ID = - ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "animation.model.gripping"); + private static final ResourceLocation EXECUTION_ANIMATION_ID = + ResourceLocation.fromNamespaceAndPath(KnockedBack.MOD_ID, "animation.model.execution"); private static final Map> layers = new HashMap<>(); private static final Map activeStates = new HashMap<>(); @@ -28,18 +29,19 @@ public class PlayerAnimationHandler { public static void onPlayerTick(TickEvent.PlayerTickEvent event) { if (event.phase != TickEvent.Phase.END) return; if (!(event.player instanceof AbstractClientPlayer player)) return; + if (Minecraft.getInstance().player != player) return; UUID playerId = player.getUUID(); - boolean shouldGrip = ClientGrippedState.isGripped(playerId); - boolean wasGripping = activeStates.getOrDefault(playerId, false); - if (shouldGrip == wasGripping) return; - activeStates.put(playerId, shouldGrip); + boolean shouldPlayExecution = ClientExecutionState.isExecuting(); + boolean wasPlaying = activeStates.getOrDefault(playerId, false); + if (shouldPlayExecution == wasPlaying) return; + activeStates.put(playerId, shouldPlayExecution); ModifierLayer layer = layers.computeIfAbsent(playerId, id -> { ModifierLayer newLayer = new ModifierLayer<>(); PlayerAnimationAccess.getPlayerAnimLayer(player).addAnimLayer(0, newLayer); return newLayer; }); - if (shouldGrip) { - var animation = PlayerAnimationRegistry.getAnimation(GRIP_ANIMATION_ID); + if (shouldPlayExecution) { + var animation = PlayerAnimationRegistry.getAnimation(EXECUTION_ANIMATION_ID); if (animation != null) { layer.setAnimation(new KeyframeAnimationPlayer(animation)); } @@ -47,4 +49,4 @@ public class PlayerAnimationHandler { layer.setAnimation(null); } } -} \ No newline at end of file +}