diff --git a/src/main/java/com/tiedup/remake/rig/anim/types/ActionAnimation.java b/src/main/java/com/tiedup/remake/rig/anim/types/ActionAnimation.java index c66ace9..d81b02f 100644 --- a/src/main/java/com/tiedup/remake/rig/anim/types/ActionAnimation.java +++ b/src/main/java/com/tiedup/remake/rig/anim/types/ActionAnimation.java @@ -47,8 +47,15 @@ public class ActionAnimation extends MainFrameAnimation { } /** - * Stub — LinkAnimation.modifyPose appelle ça pour aligner la root joint - * en espace monde pendant la transition. No-op en TiedUp. + * Stub Phase 0 — LinkAnimation.modifyPose appelle ça pour zero-out X/Z de la + * Root joint en espace monde (empêche le sliding visuel pendant la transition + * vers une ActionAnimation sans keyframe "Coord"). Voir EF + * {@code yesman.epicfight.api.animation.types.ActionAnimation:209-222}. + * + *

Safe Phase 1 (idle/walk sont des StaticAnimation, pas ActionAnimation → + * jamais appelée). À re-implémenter Phase 2 dès qu'on introduit de vraies + * ActionAnimations bondage — sinon : sliding visible pendant transitionTime + * frames à chaque entrée dans l'action anim.

*/ public void correctRootJoint( com.tiedup.remake.rig.anim.types.LinkAnimation linkAnimation, @@ -57,6 +64,11 @@ public class ActionAnimation extends MainFrameAnimation { float time, float partialTicks ) { - // no-op + if (com.tiedup.remake.rig.TiedUpRigConstants.IS_DEV_ENV) { + com.tiedup.remake.rig.TiedUpRigConstants.LOGGER.warn( + "correctRootJoint no-op appelé (Phase 0 stub) — si ActionAnimation jouée, " + + "sliding visuel attendu. Voir docs/plans/rig/PHASE0_DEGRADATIONS.md D-07." + ); + } } } diff --git a/src/main/java/com/tiedup/remake/rig/patch/MobPatch.java b/src/main/java/com/tiedup/remake/rig/patch/MobPatch.java index 3e53a40..57610b9 100644 --- a/src/main/java/com/tiedup/remake/rig/patch/MobPatch.java +++ b/src/main/java/com/tiedup/remake/rig/patch/MobPatch.java @@ -6,6 +6,9 @@ package com.tiedup.remake.rig.patch; +import javax.annotation.Nullable; + +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; /** @@ -14,4 +17,17 @@ import net.minecraft.world.entity.Mob; * et stopper la navigation pendant une animation. Version complète Phase 2. */ public abstract class MobPatch extends LivingEntityPatch { + + /** + * Override conforme à EF {@code yesman.epicfight.world.capabilities.entitypatch.MobPatch:171-174}. + * Sans cet override, {@code MoveCoordFunctions.MOB_ATTACK_TARGET_LOOK} recevrait la sémantique + * de base {@link LivingEntityPatch#getTarget()} = {@code getLastHurtMob()} (dernier mob qui m'a + * frappé) au lieu de {@code Mob.getTarget()} (cible AI courante) → NPC ne tourne pas vers sa + * cible pendant une attack animation. + */ + @Override + @Nullable + public LivingEntity getTarget() { + return this.original != null ? this.original.getTarget() : null; + } }