Merge branch 'master' into fix-mob-kill-timer-reset-issue

This commit is contained in:
2026-01-07 11:14:08 +01:00
committed by GitHub
@@ -2,6 +2,7 @@ package net.fretux.knockedback.client;
import dev.kosmx.playerAnim.api.layered.IAnimation; import dev.kosmx.playerAnim.api.layered.IAnimation;
import dev.kosmx.playerAnim.api.layered.ModifierLayer; import dev.kosmx.playerAnim.api.layered.ModifierLayer;
import dev.kosmx.playerAnim.core.player.KeyframeAnimationPlayer;
import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationAccess; import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationAccess;
import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationRegistry; import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationRegistry;
import net.fretux.knockedback.KnockedBack; import net.fretux.knockedback.KnockedBack;
@@ -12,13 +13,15 @@ import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
@Mod.EventBusSubscriber(modid = KnockedBack.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE) @Mod.EventBusSubscriber(modid = KnockedBack.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE)
public class PlayerAnimationHandler { public class PlayerAnimationHandler {
private static final ResourceLocation GRIP_ANIMATION_ID = new ResourceLocation(KnockedBack.MOD_ID, "animation.model.gripping"); private static final ResourceLocation GRIP_ANIMATION_ID = new ResourceLocation(KnockedBack.MOD_ID, "animation.model.gripping");
private static final java.util.Map<UUID, ModifierLayer<IAnimation>> layers = new java.util.HashMap<>(); private static final Map<UUID, ModifierLayer<IAnimation>> layers = new HashMap<>();
private static final java.util.Map<UUID, Boolean> activeStates = new java.util.HashMap<>(); private static final Map<UUID, Boolean> activeStates = new HashMap<>();
@SubscribeEvent @SubscribeEvent
public static void onPlayerTick(TickEvent.PlayerTickEvent event) { public static void onPlayerTick(TickEvent.PlayerTickEvent event) {
@@ -29,15 +32,16 @@ public class PlayerAnimationHandler {
boolean wasGripping = activeStates.getOrDefault(playerId, false); boolean wasGripping = activeStates.getOrDefault(playerId, false);
if (shouldGrip == wasGripping) return; if (shouldGrip == wasGripping) return;
activeStates.put(playerId, shouldGrip); activeStates.put(playerId, shouldGrip);
ModifierLayer<IAnimation> layer = layers.get(playerId); ModifierLayer<IAnimation> layer = layers.computeIfAbsent(playerId, id -> {
if (layer == null) { ModifierLayer<IAnimation> newLayer = new ModifierLayer<>();
layer = new ModifierLayer<>(); PlayerAnimationAccess.getPlayerAnimLayer(player).addAnimLayer(newLayer);
layers.put(playerId, layer); return newLayer;
PlayerAnimationAccess.getPlayerAnimLayer(player).addAnimLayer(0, layer); });
}
if (shouldGrip) { if (shouldGrip) {
IAnimation animation = PlayerAnimationRegistry.getAnimation(GRIP_ANIMATION_ID); var animation = PlayerAnimationRegistry.getAnimation(GRIP_ANIMATION_ID);
layer.setAnimation(animation); if (animation != null) {
layer.setAnimation(new KeyframeAnimationPlayer(animation));
}
} else { } else {
layer.setAnimation(null); layer.setAnimation(null);
} }