Merge branch 'master' into fix-mob-kill-timer-reset-issue
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user