minecraft-src/net/minecraft/client/renderer/entity/CatRenderer.java
2025-07-04 03:45:38 +03:00

55 lines
2.3 KiB
Java

package net.minecraft.client.renderer.entity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Axis;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.model.CatModel;
import net.minecraft.client.model.geom.ModelLayers;
import net.minecraft.client.renderer.entity.EntityRendererProvider.Context;
import net.minecraft.client.renderer.entity.layers.CatCollarLayer;
import net.minecraft.client.renderer.entity.state.CatRenderState;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.animal.Cat;
@Environment(EnvType.CLIENT)
public class CatRenderer extends AgeableMobRenderer<Cat, CatRenderState, CatModel> {
public CatRenderer(Context context) {
super(context, new CatModel(context.bakeLayer(ModelLayers.CAT)), new CatModel(context.bakeLayer(ModelLayers.CAT_BABY)), 0.4F);
this.addLayer(new CatCollarLayer(this, context.getModelSet()));
}
public ResourceLocation getTextureLocation(CatRenderState catRenderState) {
return catRenderState.texture;
}
public CatRenderState createRenderState() {
return new CatRenderState();
}
public void extractRenderState(Cat cat, CatRenderState catRenderState, float f) {
super.extractRenderState(cat, catRenderState, f);
catRenderState.texture = cat.getVariant().value().assetInfo().texturePath();
catRenderState.isCrouching = cat.isCrouching();
catRenderState.isSprinting = cat.isSprinting();
catRenderState.isSitting = cat.isInSittingPose();
catRenderState.lieDownAmount = cat.getLieDownAmount(f);
catRenderState.lieDownAmountTail = cat.getLieDownAmountTail(f);
catRenderState.relaxStateOneAmount = cat.getRelaxStateOneAmount(f);
catRenderState.isLyingOnTopOfSleepingPlayer = cat.isLyingOnTopOfSleepingPlayer();
catRenderState.collarColor = cat.isTame() ? cat.getCollarColor() : null;
}
protected void setupRotations(CatRenderState catRenderState, PoseStack poseStack, float f, float g) {
super.setupRotations(catRenderState, poseStack, f, g);
float h = catRenderState.lieDownAmount;
if (h > 0.0F) {
poseStack.translate(0.4F * h, 0.15F * h, 0.1F * h);
poseStack.mulPose(Axis.ZP.rotationDegrees(Mth.rotLerp(h, 0.0F, 90.0F)));
if (catRenderState.isLyingOnTopOfSleepingPlayer) {
poseStack.translate(0.15F * h, 0.0F, 0.0F);
}
}
}
}