Geckolib-forge-1.19-3.1.40.jar Apr 2026

@Override public ResourceLocation getAnimationFileLocation(MyMobEntity object) return new ResourceLocation("yourmodid", "animations/mymob.animation.json");

@Override public AnimationFactory getFactory() return factory;

@Override public void registerControllers(AnimationData data) data.addAnimationController(new AnimationController<>(this, "use", 0, event -> PlayState.CONTINUE));

// In your main mod class public static final EntityType<MyMobEntity> MY_MOB = Registry.register( Registry.ENTITY_TYPE, new ResourceLocation("yourmodid", "my_mob"), EntityType.Builder.of(MyMobEntity::new, MobCategory.CREATURE) .sized(0.9f, 1.3f) .build("my_mob") ); // Client setup @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public class ClientEvents @SubscribeEvent public static void registerRenderers(EntityRenderersEvent.RegisterRenderers event) event.registerEntityRenderer(MY_MOB, MyMobRenderer::new); geckolib-forge-1.19-3.1.40.jar

Extend GeoItemRenderer and register it using ItemRendererGeckoLib . 3. Animation Triggers Play an animation once on attack @Override public boolean hurt(DamageSource source, float amount) if (!level.isClientSide) AnimationController<?> controller = this.getAnimationData().getAnimationControllers().get("controller"); controller.markAnimationDone(); // reset controller.setAnimation(new AnimationBuilder().addAnimation("animation.mymob.attack", false)); return super.hurt(source, amount);

public MyMobEntity(EntityType<? extends PathfinderMob> type, Level world) super(type, world);

import software.bernie.geckolib3.model.AnimatedGeoModel; public class MyMobModel extends AnimatedGeoModel<MyMobEntity> @Override public ResourceLocation getModelLocation(MyMobEntity object) return new ResourceLocation("yourmodid", "geo/mymob.geo.json"); Level world) super(type

dependencies implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.19:3.1.40')

@Override public AnimationFactory getFactory() return this.factory;

@Override public ResourceLocation getTextureLocation(MyMobEntity object) return new ResourceLocation("yourmodid", "textures/entity/mymob.png"); public class MyMobModel extends AnimatedGeoModel&lt

private <E extends IAnimatable> PlayState predicate(AnimationEvent<E> event) if (event.isMoving()) event.getController().setAnimation(new AnimationBuilder().addAnimation("animation.mymob.walk", true)); else event.getController().setAnimation(new AnimationBuilder().addAnimation("animation.mymob.idle", true)); return PlayState.CONTINUE;

Item Class public class MagicStaffItem extends Item implements IAnimatable private AnimationFactory factory = new AnimationFactory(this); public MagicStaffItem(Properties properties) super(properties);

@Override public void registerControllers(AnimationData data) data.addAnimationController(new AnimationController<>(this, "controller", 0, this::predicate));

import software.bernie.geckolib3.renderers.geo.GeoEntityRenderer; public class MyMobRenderer extends GeoEntityRenderer<MyMobEntity> public MyMobRenderer(EntityRendererProvider.Context renderManager) super(renderManager, new MyMobModel()); this.shadowRadius = 0.5f;

Dieser Inhalt ist nur mit Cookies verfügbar.

Wir benötigen Ihre Einwilligung zur Verwendung einer oder mehrerer Cookie-Kategorien, um diesen Inhalt aktivieren zu können. Bitte beachten Sie, dass Sie mit der Zustimmung zum Setzen von Cookies für diesen Inhalt automatisch allen Cookies auf der gesamten Website zustimmen. Wenn Sie mehr Informationen hierzu erhalten möchten, besuchen Sie bitte die Seite zu unseren Cookie Richtlinien.

Allen zustimmen