Passed
Push — main ( 998a70...3dfaee )
by Etienne
01:28
created

render(LasertagWeaponItem,MatrixStack,VertexConsumerProvider,int,ItemStack)   A

Complexity

Conditions 3

Size

Total Lines 40
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 24
c 1
b 0
f 0
dl 0
loc 40
rs 9.304
1
package de.kleiner3.lasertag.item.render;
2
3
import com.mojang.blaze3d.systems.RenderSystem;
4
import de.kleiner3.lasertag.item.LasertagWeaponItem;
5
import de.kleiner3.lasertag.item.model.LasertagWeaponLightsModel;
6
import de.kleiner3.lasertag.item.model.LasertagWeaponModel;
7
import de.kleiner3.lasertag.lasertaggame.management.LasertagGameManager;
8
import net.minecraft.client.render.OverlayTexture;
9
import net.minecraft.client.render.RenderLayer;
10
import net.minecraft.client.render.VertexConsumerProvider;
11
import net.minecraft.client.util.math.MatrixStack;
12
import net.minecraft.entity.player.PlayerEntity;
13
import net.minecraft.item.ItemStack;
14
import software.bernie.geckolib3.renderers.geo.GeoItemRenderer;
15
16
import java.util.concurrent.atomic.AtomicReference;
17
18
/**
19
 * Renderer for the lasertarget
20
 *
21
 * @author Étienne Muser
22
 */
23
public class LasertagWeaponRenderer extends GeoItemRenderer<LasertagWeaponItem> {
24
    private static final LasertagWeaponModel MODEL = new LasertagWeaponModel();
25
26
    private static final LasertagWeaponLightsModel  LIGHTS_MODEL = new LasertagWeaponLightsModel();
27
28
    public LasertagWeaponRenderer() {
29
        super(MODEL);
30
    }
31
32
    @Override
33
    public void render(LasertagWeaponItem animatable, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int packedLight, ItemStack stack) {
34
        this.modelProvider = MODEL;
35
        super.render(animatable, matrices, vertexConsumers, packedLight, stack);
36
37
        this.modelProvider = LIGHTS_MODEL;
38
39
        RenderLayer cameo = RenderLayer.getEyes(LIGHTS_MODEL.getTextureResource(null));
40
        matrices.push();
41
42
        matrices.translate(0.5F, 0.51F, 0.5F);
43
44
        var lightsModel = LIGHTS_MODEL.getModel(LIGHTS_MODEL.getModelResource(null));
45
46
        // Default color is black
47
        AtomicReference<Float> r = new AtomicReference<>((float) 0);
48
        AtomicReference<Float> g = new AtomicReference<>((float) 0);
49
        AtomicReference<Float> b = new AtomicReference<>((float) 0);
50
51
        var entity = stack.getHolder();
52
53
        // If player is activated
54
        if (entity instanceof PlayerEntity) {
55
            boolean isDeactivated = LasertagGameManager.getInstance().getDeactivatedManager().isDeactivated(entity.getUuid());
56
57
            if (!isDeactivated) {
58
                LasertagGameManager.getInstance().getTeamManager().getTeamOfPlayer(entity.getUuid()).ifPresent(team -> {
59
                    var color = team.color();
60
61
                    r.set(color.r() / 255.0F);
62
                    g.set(color.g() / 255.0F);
63
                    b.set(color.b() / 255.0F);
64
                });
65
            }
66
        }
67
68
        RenderSystem.setShaderTexture(0, LIGHTS_MODEL.getTextureResource(null));
69
70
        this.render(lightsModel, animatable, 1.0F, cameo, matrices, vertexConsumers, vertexConsumers.getBuffer(cameo), 255, OverlayTexture.DEFAULT_UV, r.get(), g.get(), b.get(), 1.0F);
71
        matrices.pop();
72
    }
73
}
74