I'm having trouble registering my custom entity renderer. I'm getting an error of "The constructed object of type KoalaRenderer is incompatible with the descriptor's return type: EntityRenderer<T>".
Here's some of my code:
ClientEventBusSubscriber
@Mod.EventBusSubscriber(modid = Mod1.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT)
public class ClientEventBusSubscriber {
@SubscribeEvent
public static void onClientSetup(RegisterRenderers event) {
event.registerEntityRenderer(EntityTypeInit.KOALA, KoalaRenderer::new); //Error is here. I know I need an EntityRendererProvider but I don't know what to put here.
}
}
KoalaRenderer
public class KoalaRenderer extends MobRenderer<KoalaEntity, KoalaModel<KoalaEntity>>{
private static final ResourceLocation KOALA_LOCATION = new ResourceLocation("textures/entity/koala/koala.png");
public KoalaRenderer(EntityRendererProvider.Context context) {
super(context, new KoalaModel<>(context.bakeLayer(null)), 0.7f);
}
@Override
public ResourceLocation getTextureLocation(KoalaEntity p_114482_) {
return KOALA_LOCATION;
}
}
KoalaModel
public class KoalaModel<T extends KoalaEntity> extends QuadrupedModel<T> {
public static ModelLayerLocation KOALA_LAYER = new ModelLayerLocation(new ResourceLocation("minecraft:player"), "koala");
public KoalaModel(ModelPart mPart) {
super(mPart, false, 10.0F, 4.0F, 2.0F, 2.0F, 24);
}
@SubscribeEvent
public static void registerLayer(EntityRenderersEvent.RegisterLayerDefinitions event)
{
event.registerLayerDefinition(KOALA_LAYER, KoalaModel::createBodyLayer);
}
public static LayerDefinition createBodyLayer() {
MeshDefinition meshdefinition = new MeshDefinition();
PartDefinition partdefinition = meshdefinition.getRoot();
partdefinition.addOrReplaceChild("body", CubeListBuilder.create().texOffs(18, 4).addBox(-3.0F, -7.0F, -2.0F, 6.0F, 7.0F, 4.0F), PartPose.offsetAndRotation(0.0F, 24.0F, 0.0F, ((float)Math.PI / 2F), 0.0F, 0.0F));
return LayerDefinition.create(meshdefinition, 32, 32);
}
public ModelPart getHead() {
return this.head;
}
}