summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/entities/renders/HeartRender.java
blob: d25ecbeae525a3bcc3dee11a34cda0a8d502b0fa (plain)
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package darkknight.jewelrycraft.entities.renders;

import java.util.Random;
import org.lwjgl.opengl.GL11;
import darkknight.jewelrycraft.entities.EntityHeart;
import darkknight.jewelrycraft.util.Variables;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.ResourceLocation;

/**
 * @author Sorin
 */
public class HeartRender extends RenderLiving
{
    protected ResourceLocation texture;
    Random rnd = new Random();
    
    public HeartRender(ModelBase modelBase, float shadowSize)
    {
        super(modelBase, shadowSize);
    }
    
    protected void renderModel(EntityLivingBase entity, float x, float y, float z, float rot1, float rot2, float rot3)
    {
        super.renderModel(entity, x, y, z, rot1, rot2, rot3);
        rnd.setSeed(1542372345);
        if (((EntityHeart)entity).getQuantity() > 2f){
            for(int i = 0; i < ((EntityHeart)entity).getQuantity() / 10f; i++){
                float posX = rnd.nextFloat() * 0.2f * (rnd.nextBoolean()?1:-1);
                float posY = rnd.nextFloat() * 0.2f * (rnd.nextBoolean()?1:-1);
                float rotY = rnd.nextFloat() * 35f * (rnd.nextBoolean()?1:-1);
                float rotZ = rnd.nextFloat() * 35f * (rnd.nextBoolean()?1:-1);
                GL11.glTranslatef(-0.15F, 0.0F, 0.0F);
                GL11.glTranslatef(posX, posY, 0F);
                GL11.glRotatef(rotY, 0F, 1F, 0F);
                GL11.glRotatef(rotZ, 0F, 0F, 1F);
                GL11.glPushMatrix();
                this.mainModel.render(entity, x, y, z, rot1, rot2, rot3);
                GL11.glPopMatrix();
            }
        }
    }
    
    @Override
    protected void preRenderCallback(EntityLivingBase entity, float f)
    {
        preRenderCallbackHeart((EntityHeart)entity, f);
    }
    
    protected void preRenderCallbackHeart(EntityHeart entity, float f)
    {
        GL11.glScalef(0.4F, 0.4F, 0.4F);
        GL11.glRotatef(55F, 1F, 0F, 0F);
        String type = entity.getType();
        if (type == "" || type == null) type = "Red";
        texture = new ResourceLocation(Variables.MODID, "textures/entities/" + type + "Heart.png");
    }
    
    @Override
    protected ResourceLocation getEntityTexture(Entity par1Entity)
    {
        return texture;
    }
}