Jump to content

Attack and Idle animations not playing


BigVanKael

Recommended Posts

Recently started to attempt 1.20.1 modding, in registering idle, walk and attack animations in the mob entity class i've run into two issues:

 

a) idle and walk animations seem to play simultaneously  + the mob itself does not seem to walk

	private static final
	EntityDataAccessor<Boolean> ATTACKING = SynchedEntityData.defineId(MugaEntity.class, EntityDataSerializers.BOOLEAN);
	public MugaEntity(EntityType<? extends Monster > pEntityType, Level pLevel) { super(pEntityType, pLevel); }
	public final AnimationState idleAnimationState = new AnimationState(); private int idleAnimationTimeout = 1; 
    public final AnimationState attackAnimationState = new AnimationState();
	public int attackAnimationTimeout = 0;
    @Override public void tick() 
    { super.tick(); if(this.level().isClientSide()) { setupAnimationStates(); 
    } 
    } private void setupAnimationStates () { if(this.idleAnimationTimeout <= 0) { 
    this.idleAnimationTimeout = this.random.nextInt(30) + 60; 
    this.idleAnimationState.start(this.tickCount); 
    } else { 
    --this.idleAnimationTimeout; 
    } 
    if (this.isAttacking() && attackAnimationTimeout <= 0 ) 
    { attackAnimationTimeout = 20; 
    attackAnimationState.start(this.tickCount); 
    } else { 
    --this.attackAnimationTimeout; 
    } 
    if(this.isAttacking()) { 
    attackAnimationState.stop(); 
    } 
    } 
    @Override protected void updateWalkAnimation(float pPartialTick) { 
    float f; 
    if(this.getPose() == Pose.STANDING) { 
    f=Math.min(pPartialTick * 3.0F, 1.0F); 
    } else { 
    f= 0.0F; 
    } 
    this.walkAnimation.update(f, 0.2F);
    } 
    @Override protected void defineSynchedData() { 
    super.defineSynchedData(); 
    this.entityData.define(ATTACKING, false); 
    } 
    public void setAttacking(boolean attacking) { 
    this.entityData.set(ATTACKING, attacking); 
    } 
    public boolean isAttacking() { 
    return this.entityData.get(ATTACKING); 
    }
	

b) the attack animation is never played on attack, despite being registered 

	@Override
	public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
    this.root().getAllParts().forEach(ModelPart::resetPose); 
    this.animateWalk(ModAnimationDefinitions.MUGA_WALKING, limbSwing, limbSwingAmount, 1f, 1f );
	this.animate(((MugaEntity)entity).idleAnimationState, ModAnimationDefinitions.MUGA_IDLE, ageInTicks, 1f); 
    this.animate(((MugaEntity)entity).attackAnimationState, ModAnimationDefinitions.MUGA_ATTACK, ageInTicks, 1f); }
	
Edited by BigVanKael
small corrections to code
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.