minecraft-src/net/minecraft/client/renderer/entity/layers/RopesLayer.java
2025-09-18 12:27:44 +00:00

37 lines
1.8 KiB
Java

package net.minecraft.client.renderer.entity.layers;
import com.mojang.blaze3d.vertex.PoseStack;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.model.HappyGhastModel;
import net.minecraft.client.model.geom.EntityModelSet;
import net.minecraft.client.model.geom.ModelLayers;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.RenderLayerParent;
import net.minecraft.client.renderer.entity.state.HappyGhastRenderState;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.ItemTags;
@Environment(EnvType.CLIENT)
public class RopesLayer<M extends HappyGhastModel> extends RenderLayer<HappyGhastRenderState, M> {
private final RenderType ropes;
private final HappyGhastModel adultModel;
private final HappyGhastModel babyModel;
public RopesLayer(RenderLayerParent<HappyGhastRenderState, M> renderer, EntityModelSet entityModels, ResourceLocation texture) {
super(renderer);
this.ropes = RenderType.entityCutoutNoCull(texture);
this.adultModel = new HappyGhastModel(entityModels.bakeLayer(ModelLayers.HAPPY_GHAST_ROPES));
this.babyModel = new HappyGhastModel(entityModels.bakeLayer(ModelLayers.HAPPY_GHAST_BABY_ROPES));
}
public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, HappyGhastRenderState renderState, float yRot, float xRot) {
if (renderState.isLeashHolder && renderState.bodyItem.is(ItemTags.HARNESSES)) {
HappyGhastModel happyGhastModel = renderState.isBaby ? this.babyModel : this.adultModel;
happyGhastModel.setupAnim(renderState);
happyGhastModel.renderToBuffer(poseStack, bufferSource.getBuffer(this.ropes), packedLight, OverlayTexture.NO_OVERLAY);
}
}
}