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.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.client.renderer.entity.SlimeRenderer; import net.minecraft.client.renderer.entity.state.SlimeRenderState; @Environment(EnvType.CLIENT) public class SlimeOuterLayer extends RenderLayer { private final SlimeModel model; public SlimeOuterLayer(RenderLayerParent renderer, EntityModelSet modelSet) { super(renderer); this.model = new SlimeModel(modelSet.bakeLayer(ModelLayers.SLIME_OUTER)); } public void render(PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, SlimeRenderState renderState, float yRot, float xRot) { boolean bl = renderState.appearsGlowing && renderState.isInvisible; if (!renderState.isInvisible || bl) { VertexConsumer vertexConsumer; if (bl) { vertexConsumer = bufferSource.getBuffer(RenderType.outline(SlimeRenderer.SLIME_LOCATION)); } else { vertexConsumer = bufferSource.getBuffer(RenderType.entityTranslucent(SlimeRenderer.SLIME_LOCATION)); } this.model.setupAnim(renderState); this.model.renderToBuffer(poseStack, vertexConsumer, packedLight, LivingEntityRenderer.getOverlayCoords(renderState, 0.0F)); } } }