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 extends RenderLayer { private final RenderType ropes; private final HappyGhastModel adultModel; private final HappyGhastModel babyModel; public RopesLayer(RenderLayerParent 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); } } }