summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/entities/renders/HeartRender.java
blob: 4e181c1e721d38bc1c26304f41f030f3e422504c (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
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;
	}
}