Как смешать анимации в geckolib3?

Версия Minecraft
1.19.2
API
Forge
36
2
1
Hello world

Я хотел узнать как смешать анимации в geckolib3. Я делаю моргание через анимацию (не бейте меня я новичок гиголибе)

вот код:

Java:
    private <E extends IAnimatable> PlayState predicate(AnimationEvent<E> event) {
        if (this.isSleep()) {
            event.getController().setAnimation(new AnimationBuilder()
                    .addAnimation("expemole.npc.sleep")
                    .addAnimation("expemole.npc.yes"));
            return PlayState.CONTINUE;
        }

        event.getController().setAnimation(new AnimationBuilder().addAnimation("expemole.npc.iding"));
        return PlayState.CONTINUE;
    }
 
Что ты именно имеешь ввиду? Ты хочешь, чтобы, например, моб одновременно бежал и махал руками, и при этом это были разные анимации?
Если что, в geckoLib управление анимациями происходит с помощью контроллеров анимаций.
В твоем случае тебе нужно зарегистрировать несколько контроллеров - собственно, именно так ты можешь комбинировать анимации, чтобы они проигрывались одновременно. Это вроде будет корректно работать, если не затрагивать в этих двух анимациях одни и те же "кости" моба(то есть рука двигается только в одной анимации и не затрагивается во второй). Так, например, делают взмахи мечом при атаке и нечто подобное.

Java:
  @Override
    public void registerControllers(AnimationData data) {
        AnimationController controllerForRunning = new AnimationController(this, "YourMobAnimationControllerForRunning",
                0, this::predicate);
        data.addAnimationController(controllerForRunning );
AnimationController controllerForAttack = new AnimationController(this, "YourMobAnimationControllerForAttack",
                0, this::predicate);
        data.addAnimationController(controllerForAttack);
    }
Ну если что predicate это вот это:
Java:
  private <E extends IAnimatable> PlayState predicate(AnimationEvent<E> event) {
        //твое проигрывание анимаций в зависимости от чего угодно(например, в зависимости от контроллера эвента)
    }

Также geckolib за тебя может "дорисовать" переход между анимациями в пределах одного контроллера, если он вдруг слишком резкий - для этого в регистрации контроллера нужно вместо 0 подать число в тиках - это и будет время, отведенное на "дорисовку" перехода между анимациями.
 
Последнее редактирование:
Сверху