From e7e592a3a59df977876d5e50a16ef04c8ed48a03 Mon Sep 17 00:00:00 2001 From: Fretux Date: Wed, 7 Jan 2026 13:06:11 +0100 Subject: [PATCH] Fix knocked swim animation for local player --- .../client/LocalKnockedPoseHandler.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/main/java/net/fretux/knockedback/client/LocalKnockedPoseHandler.java diff --git a/src/main/java/net/fretux/knockedback/client/LocalKnockedPoseHandler.java b/src/main/java/net/fretux/knockedback/client/LocalKnockedPoseHandler.java new file mode 100644 index 0000000..b6a1408 --- /dev/null +++ b/src/main/java/net/fretux/knockedback/client/LocalKnockedPoseHandler.java @@ -0,0 +1,35 @@ +package net.fretux.knockedback.client; + +import net.fretux.knockedback.KnockedBack; +import net.minecraft.client.Minecraft; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.player.Player; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(modid = KnockedBack.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE) +public class LocalKnockedPoseHandler { + @SubscribeEvent + public static void onClientTick(TickEvent.ClientTickEvent event) { + if (event.phase != TickEvent.Phase.END) { + return; + } + Player player = Minecraft.getInstance().player; + if (player == null) { + return; + } + if (ClientKnockedState.isKnocked()) { + if (player.getVehicle() != null) { + if (player.getForcedPose() == Pose.SWIMMING) { + player.setForcedPose(null); + } + } else if (player.getForcedPose() != Pose.SWIMMING) { + player.setForcedPose(Pose.SWIMMING); + } + } else if (player.getForcedPose() == Pose.SWIMMING) { + player.setForcedPose(null); + } + } +}