2023-10-28 18:33:26 +02:00
|
|
|
package net.anvilcraft.anvillib.cosmetics;
|
|
|
|
|
|
|
|
import software.bernie.geckolib3.core.IAnimatable;
|
|
|
|
import software.bernie.geckolib3.core.PlayState;
|
|
|
|
import software.bernie.geckolib3.core.builder.AnimationBuilder;
|
2023-10-29 13:34:50 +01:00
|
|
|
import software.bernie.geckolib3.core.builder.ILoopType.EDefaultLoopTypes;
|
2023-10-28 18:33:26 +02:00
|
|
|
import software.bernie.geckolib3.core.controller.AnimationController;
|
|
|
|
import software.bernie.geckolib3.core.event.predicate.AnimationEvent;
|
|
|
|
import software.bernie.geckolib3.core.manager.AnimationData;
|
|
|
|
import software.bernie.geckolib3.core.manager.AnimationFactory;
|
|
|
|
import software.bernie.geckolib3.util.GeckoLibUtil;
|
|
|
|
|
|
|
|
public class CosmeticItem implements IAnimatable {
|
|
|
|
private ICosmetic cosmetic = null;
|
|
|
|
private AnimationBuilder animationBuilder = new AnimationBuilder();
|
|
|
|
|
|
|
|
public CosmeticItem(ICosmetic cosmetic) {
|
|
|
|
this.cosmetic = cosmetic;
|
2023-10-29 13:34:50 +01:00
|
|
|
if (cosmetic.getIdleAnimationName() != null) {
|
|
|
|
this.animationBuilder.addAnimation(cosmetic.getIdleAnimationName(), EDefaultLoopTypes.LOOP);
|
|
|
|
}
|
2023-10-28 18:33:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
private <P extends IAnimatable> PlayState predicate(AnimationEvent<P> event) {
|
|
|
|
event.getController().transitionLengthTicks = 0;
|
|
|
|
event.getController().setAnimation(animationBuilder);
|
|
|
|
return PlayState.CONTINUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void registerControllers(AnimationData data) {
|
|
|
|
data.addAnimationController(
|
|
|
|
new AnimationController<>(this, "controller", 20, this::predicate)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
private final AnimationFactory factory = GeckoLibUtil.createFactory(this);
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public AnimationFactory getFactory() {
|
|
|
|
return this.factory;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ICosmetic getCosmetic() {
|
|
|
|
return this.cosmetic;
|
|
|
|
}
|
|
|
|
}
|