package net.minecraft.client.renderer.entity; 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.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; import net.minecraft.client.renderer.entity.state.EntityRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.projectile.DragonFireball; @Environment(EnvType.CLIENT) public class DragonFireballRenderer extends EntityRenderer { private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.withDefaultNamespace("textures/entity/enderdragon/dragon_fireball.png"); private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION); public DragonFireballRenderer(Context context) { super(context); } protected int getBlockLightLevel(DragonFireball entity, BlockPos pos) { return 15; } @Override public void render(EntityRenderState renderState, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { poseStack.pushPose(); poseStack.scale(2.0F, 2.0F, 2.0F); poseStack.mulPose(this.entityRenderDispatcher.cameraOrientation()); PoseStack.Pose pose = poseStack.last(); VertexConsumer vertexConsumer = bufferSource.getBuffer(RENDER_TYPE); vertex(vertexConsumer, pose, packedLight, 0.0F, 0, 0, 1); vertex(vertexConsumer, pose, packedLight, 1.0F, 0, 1, 1); vertex(vertexConsumer, pose, packedLight, 1.0F, 1, 1, 0); vertex(vertexConsumer, pose, packedLight, 0.0F, 1, 0, 0); poseStack.popPose(); super.render(renderState, poseStack, bufferSource, packedLight); } private static void vertex(VertexConsumer consumer, PoseStack.Pose pose, int packedLight, float x, int y, int u, int v) { consumer.addVertex(pose, x - 0.5F, y - 0.25F, 0.0F) .setColor(-1) .setUv(u, v) .setOverlay(OverlayTexture.NO_OVERLAY) .setLight(packedLight) .setNormal(pose, 0.0F, 1.0F, 0.0F); } @Override public EntityRenderState createRenderState() { return new EntityRenderState(); } }