package net.minecraft.client.renderer.entity; import com.google.common.collect.Maps; import java.util.Map; import net.minecraft.client.model.animal.rabbit.AdultRabbitModel; import net.minecraft.client.model.animal.rabbit.BabyRabbitModel; import net.minecraft.client.model.animal.rabbit.RabbitModel; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.renderer.entity.state.RabbitRenderState; import net.minecraft.resources.Identifier; import net.minecraft.world.entity.animal.rabbit.Rabbit; import net.minecraft.world.entity.animal.rabbit.Rabbit.Variant; public class RabbitRenderer extends AgeableMobRenderer { private static final Identifier TOAST = Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_toast.png"); private static final Identifier TOAST_BABY = Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_toast_baby.png"); private static final Map RABBIT_LOCATIONS = Maps.newEnumMap( Map.of( Variant.BROWN, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_brown.png"), Variant.WHITE_SPLOTCHED, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_white_splotched.png"), Variant.EVIL, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_caerbannog.png"), Variant.WHITE, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_white.png"), Variant.GOLD, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_gold.png"), Variant.BLACK, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_black.png"), Variant.SALT, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_salt.png") ) ); private static final Map BABY_RABBIT_LOCATIONS = Maps.newEnumMap( Map.of( Variant.BROWN, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_brown_baby.png"), Variant.WHITE_SPLOTCHED, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_white_splotched_baby.png"), Variant.EVIL, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_caerbannog_baby.png"), Variant.WHITE, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_white_baby.png"), Variant.GOLD, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_gold_baby.png"), Variant.BLACK, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_black_baby.png"), Variant.SALT, Identifier.withDefaultNamespace("textures/entity/rabbit/rabbit_salt_baby.png") ) ); public RabbitRenderer(final EntityRendererProvider.Context context) { super(context, new AdultRabbitModel(context.bakeLayer(ModelLayers.RABBIT)), new BabyRabbitModel(context.bakeLayer(ModelLayers.RABBIT_BABY)), 0.3F); } public Identifier getTextureLocation(final RabbitRenderState state) { if (state.isToast) { return state.isBaby ? TOAST_BABY : TOAST; } else { Map locations = state.isBaby ? BABY_RABBIT_LOCATIONS : RABBIT_LOCATIONS; return (Identifier)locations.get(state.variant); } } public RabbitRenderState createRenderState() { return new RabbitRenderState(); } public void extractRenderState(final Rabbit entity, final RabbitRenderState state, final float partialTicks) { super.extractRenderState(entity, state, partialTicks); state.jumpCompletion = entity.getJumpCompletion(partialTicks); state.isToast = checkMagicName(entity, "Toast"); state.variant = entity.getVariant(); state.hopAnimationState.copyFrom(entity.hopAnimationState); state.idleHeadTiltAnimationState.copyFrom(entity.idleHeadTiltAnimationState); } }