File size: 2,367 Bytes
d46f4a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package net.minecraft.client.renderer.entity;

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Axis;
import net.minecraft.client.model.EvokerFangsModel;
import net.minecraft.client.model.geom.ModelLayers;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.state.EvokerFangsRenderState;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.projectile.EvokerFangs;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

@OnlyIn(Dist.CLIENT)
public class EvokerFangsRenderer extends EntityRenderer<EvokerFangs, EvokerFangsRenderState> {
    private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.withDefaultNamespace("textures/entity/illager/evoker_fangs.png");
    private final EvokerFangsModel model;

    public EvokerFangsRenderer(EntityRendererProvider.Context p_174100_) {
        super(p_174100_);
        this.model = new EvokerFangsModel(p_174100_.bakeLayer(ModelLayers.EVOKER_FANGS));
    }

    public void render(EvokerFangsRenderState p_368442_, PoseStack p_114522_, MultiBufferSource p_114523_, int p_114524_) {
        float f = p_368442_.biteProgress;
        if (f != 0.0F) {
            p_114522_.pushPose();
            p_114522_.mulPose(Axis.YP.rotationDegrees(90.0F - p_368442_.yRot));
            p_114522_.scale(-1.0F, -1.0F, 1.0F);
            p_114522_.translate(0.0F, -1.501F, 0.0F);
            this.model.setupAnim(p_368442_);
            VertexConsumer vertexconsumer = p_114523_.getBuffer(this.model.renderType(TEXTURE_LOCATION));
            this.model.renderToBuffer(p_114522_, vertexconsumer, p_114524_, OverlayTexture.NO_OVERLAY);
            p_114522_.popPose();
            super.render(p_368442_, p_114522_, p_114523_, p_114524_);
        }
    }

    public EvokerFangsRenderState createRenderState() {
        return new EvokerFangsRenderState();
    }

    public void extractRenderState(EvokerFangs p_369816_, EvokerFangsRenderState p_364298_, float p_361549_) {
        super.extractRenderState(p_369816_, p_364298_, p_361549_);
        p_364298_.yRot = p_369816_.getYRot();
        p_364298_.biteProgress = p_369816_.getAnimationProgress(p_361549_);
    }
}