summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/entities/renders/HeartRender.java
blob: b5419a4dae7fcaacb1b71fc1da8c46e6f9713d19 (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
68
69
70
71
72
73
74
75
76
77
78
79
80
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);
	}

	@Override
	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;
	}
}