Posted July 26, 20214 yr I'm using Geckolib and I was strugglig while trying to make this work. My code: public class ExampleEntity extends CreatureEntity implements IAnimatable { private AnimationFactory factory = new AnimationFactory(this); public ExampleEntity(EntityType<? extends CreatureEntity> type, World worldIn) { super(type, worldIn); this.ignoreFrustumCheck = true; // TODO Auto-generated constructor stub } public static AttributeModifierMap.MutableAttribute setAttributes() { return CreatureEntity.func_233666_p_().createMutableAttribute(Attributes.MAX_HEALTH, 20.0f) .createMutableAttribute(Attributes.MOVEMENT_SPEED, 0.2f); } @Override protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new SwimGoal(this)); this.goalSelector.addGoal(1, new PanicGoal(this, 3.45d)); this.goalSelector.addGoal(2, new LookRandomlyGoal(this)); this.goalSelector.addGoal(3, new LookAtGoal(this, PlayerEntity.class, 8.0f)); this.goalSelector.addGoal(4, new WaterAvoidingRandomWalkingGoal(this, 0.2d, 1000f)); } @Override protected int getExperiencePoints(PlayerEntity player) { // TODO Auto-generated method stub return 10; } @Override protected SoundEvent getDeathSound() { // TODO Auto-generated method stub return SoundEvents.ENTITY_HOGLIN_DEATH; } public boolean isPanic() { return this.goalSelector.getRunningGoals().anyMatch(goal -> goal.getGoal().getClass() == PanicGoal.class); } private <E extends IAnimatable> PlayState predicate(AnimationEvent<E> event) { if(isPanic()) { event.getController().setAnimation(new AnimationBuilder().addAnimation("animation.example.panic", true)); return PlayState.CONTINUE; } if (this.prevPosX == this.getPosX() && this.prevPosY == this.getPosY() && this.prevPosZ == this.getPosZ()) { event.getController().setAnimation(new AnimationBuilder().addAnimation("animation.example.nod", true)); return PlayState.CONTINUE; } else { event.getController().setAnimation(new AnimationBuilder().addAnimation("animation.example.walk", true)); return PlayState.CONTINUE; } } @Override public void registerControllers(AnimationData data) { data.addAnimationController(new AnimationController(this, "controller", 0, this::predicate)); } @Override public AnimationFactory getFactory() { return this.factory; } }
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.