package net.minecraft.client.renderer.entity.layers; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.SlimeModel; 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.LivingEntityRenderer; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.world.entity.LivingEntity; @Environment(EnvType.CLIENT) public class SlimeOuterLayer extends RenderLayer> { private final EntityModel model; public SlimeOuterLayer(RenderLayerParent> renderer, EntityModelSet modelSet) { super(renderer); this.model = new SlimeModel<>(modelSet.bakeLayer(ModelLayers.SLIME_OUTER)); } public void render( PoseStack poseStack, MultiBufferSource buffer, int packedLight, T livingEntity, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch ) { Minecraft minecraft = Minecraft.getInstance(); boolean bl = minecraft.shouldEntityAppearGlowing(livingEntity) && livingEntity.isInvisible(); if (!livingEntity.isInvisible() || bl) { VertexConsumer vertexConsumer; if (bl) { vertexConsumer = buffer.getBuffer(RenderType.outline(this.getTextureLocation(livingEntity))); } else { vertexConsumer = buffer.getBuffer(RenderType.entityTranslucent(this.getTextureLocation(livingEntity))); } this.getParentModel().copyPropertiesTo(this.model); this.model.prepareMobModel(livingEntity, limbSwing, limbSwingAmount, partialTicks); this.model.setupAnim(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); this.model.renderToBuffer(poseStack, vertexConsumer, packedLight, LivingEntityRenderer.getOverlayCoords(livingEntity, 0.0F)); } } }