71 lines
2.7 KiB
Java
71 lines
2.7 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.SalmonModel;
|
|
import net.minecraft.client.model.geom.ModelLayers;
|
|
import net.minecraft.client.renderer.MultiBufferSource;
|
|
import net.minecraft.client.renderer.entity.EntityRendererProvider.Context;
|
|
import net.minecraft.client.renderer.entity.state.SalmonRenderState;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import net.minecraft.util.Mth;
|
|
import net.minecraft.world.entity.animal.Salmon;
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public class SalmonRenderer extends MobRenderer<Salmon, SalmonRenderState, SalmonModel> {
|
|
private static final ResourceLocation SALMON_LOCATION = ResourceLocation.withDefaultNamespace("textures/entity/fish/salmon.png");
|
|
private final SalmonModel smallSalmonModel;
|
|
private final SalmonModel mediumSalmonModel;
|
|
private final SalmonModel largeSalmonModel;
|
|
|
|
public SalmonRenderer(Context context) {
|
|
super(context, new SalmonModel(context.bakeLayer(ModelLayers.SALMON)), 0.4F);
|
|
this.smallSalmonModel = new SalmonModel(context.bakeLayer(ModelLayers.SALMON_SMALL));
|
|
this.mediumSalmonModel = new SalmonModel(context.bakeLayer(ModelLayers.SALMON));
|
|
this.largeSalmonModel = new SalmonModel(context.bakeLayer(ModelLayers.SALMON_LARGE));
|
|
}
|
|
|
|
public void extractRenderState(Salmon salmon, SalmonRenderState salmonRenderState, float f) {
|
|
super.extractRenderState(salmon, salmonRenderState, f);
|
|
salmonRenderState.variant = salmon.getVariant();
|
|
}
|
|
|
|
public ResourceLocation getTextureLocation(SalmonRenderState salmonRenderState) {
|
|
return SALMON_LOCATION;
|
|
}
|
|
|
|
public SalmonRenderState createRenderState() {
|
|
return new SalmonRenderState();
|
|
}
|
|
|
|
protected void setupRotations(SalmonRenderState salmonRenderState, PoseStack poseStack, float f, float g) {
|
|
super.setupRotations(salmonRenderState, poseStack, f, g);
|
|
float h = 1.0F;
|
|
float i = 1.0F;
|
|
if (!salmonRenderState.isInWater) {
|
|
h = 1.3F;
|
|
i = 1.7F;
|
|
}
|
|
|
|
float j = h * 4.3F * Mth.sin(i * 0.6F * salmonRenderState.ageInTicks);
|
|
poseStack.mulPose(Axis.YP.rotationDegrees(j));
|
|
if (!salmonRenderState.isInWater) {
|
|
poseStack.translate(0.2F, 0.1F, 0.0F);
|
|
poseStack.mulPose(Axis.ZP.rotationDegrees(90.0F));
|
|
}
|
|
}
|
|
|
|
public void render(SalmonRenderState salmonRenderState, PoseStack poseStack, MultiBufferSource multiBufferSource, int i) {
|
|
if (salmonRenderState.variant == Salmon.Variant.SMALL) {
|
|
this.model = this.smallSalmonModel;
|
|
} else if (salmonRenderState.variant == Salmon.Variant.LARGE) {
|
|
this.model = this.largeSalmonModel;
|
|
} else {
|
|
this.model = this.mediumSalmonModel;
|
|
}
|
|
|
|
super.render(salmonRenderState, poseStack, multiBufferSource, i);
|
|
}
|
|
}
|