package net.minecraft.client.renderer.entity; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.DonkeyModel; import net.minecraft.client.model.EquineSaddleModel; import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; import net.minecraft.client.renderer.entity.layers.SimpleEquipmentLayer; import net.minecraft.client.renderer.entity.state.DonkeyRenderState; import net.minecraft.client.resources.model.EquipmentClientInfo; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.animal.horse.AbstractChestedHorse; @Environment(EnvType.CLIENT) public class DonkeyRenderer extends AbstractHorseRenderer { private final ResourceLocation texture; public DonkeyRenderer(Context context, DonkeyRenderer.Type type) { super(context, new DonkeyModel(context.bakeLayer(type.model)), new DonkeyModel(context.bakeLayer(type.babyModel))); this.texture = type.texture; this.addLayer( new SimpleEquipmentLayer<>( this, context.getEquipmentRenderer(), type.saddleLayer, donkeyRenderState -> donkeyRenderState.saddle, new EquineSaddleModel(context.bakeLayer(type.saddleModel)), new EquineSaddleModel(context.bakeLayer(type.babySaddleModel)) ) ); } public ResourceLocation getTextureLocation(DonkeyRenderState donkeyRenderState) { return this.texture; } public DonkeyRenderState createRenderState() { return new DonkeyRenderState(); } public void extractRenderState(T abstractChestedHorse, DonkeyRenderState donkeyRenderState, float f) { super.extractRenderState(abstractChestedHorse, donkeyRenderState, f); donkeyRenderState.hasChest = abstractChestedHorse.hasChest(); } @Environment(EnvType.CLIENT) public static enum Type { DONKEY( ResourceLocation.withDefaultNamespace("textures/entity/horse/donkey.png"), ModelLayers.DONKEY, ModelLayers.DONKEY_BABY, EquipmentClientInfo.LayerType.DONKEY_SADDLE, ModelLayers.DONKEY_SADDLE, ModelLayers.DONKEY_BABY_SADDLE ), MULE( ResourceLocation.withDefaultNamespace("textures/entity/horse/mule.png"), ModelLayers.MULE, ModelLayers.MULE_BABY, EquipmentClientInfo.LayerType.MULE_SADDLE, ModelLayers.MULE_SADDLE, ModelLayers.MULE_BABY_SADDLE ); final ResourceLocation texture; final ModelLayerLocation model; final ModelLayerLocation babyModel; final EquipmentClientInfo.LayerType saddleLayer; final ModelLayerLocation saddleModel; final ModelLayerLocation babySaddleModel; private Type( final ResourceLocation texture, final ModelLayerLocation model, final ModelLayerLocation babyModel, final EquipmentClientInfo.LayerType saddleLayer, final ModelLayerLocation saddleModel, final ModelLayerLocation babySaddleModel ) { this.texture = texture; this.model = model; this.babyModel = babyModel; this.saddleLayer = saddleLayer; this.saddleModel = saddleModel; this.babySaddleModel = babySaddleModel; } } }