Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.minecraft.src;
- import org.lwjgl.opengl.GL11;
- import net.minecraft.client.Minecraft;
- public class GenuineNpcRender extends RenderBiped {
- public GenuineNpcRender() {
- super(new ModelBiped(), 1.0F);
- }
- @Override
- public void passSpecialRender(EntityLiving entityliving, double d, double d1, double d2)
- {
- renderNpcLabel((GenuineNpcEntity)entityliving, d, d1, d2, 32);
- }
- public void renderNpcLabel(GenuineNpcEntity entitynpc, double d, double d1,
- double d2, int i) {
- String entitylevel = null;
- if (entitynpc.npcLevel <= 9)
- entitylevel = (new StringBuilder()).append("Lvl \2477")
- .append(Integer.toString(entitynpc.npcLevel)).toString();
- if (entitynpc.npcLevel >= 10 && entitynpc.npcLevel <= 19)
- entitylevel = (new StringBuilder()).append("Lvl \247f")
- .append(Integer.toString(entitynpc.npcLevel)).toString();
- if (entitynpc.npcLevel >= 20 && entitynpc.npcLevel <= 29)
- entitylevel = (new StringBuilder()).append("Lvl \247a")
- .append(Integer.toString(entitynpc.npcLevel)).toString();
- if (entitynpc.npcLevel >= 30 && entitynpc.npcLevel <= 39)
- entitylevel = (new StringBuilder()).append("Lvl \247b")
- .append(Integer.toString(entitynpc.npcLevel)).toString();
- if (entitynpc.npcLevel >= 40 && entitynpc.npcLevel <= 49)
- entitylevel = (new StringBuilder()).append("Lvl \247d")
- .append(Integer.toString(entitynpc.npcLevel)).toString();
- if (entitynpc.npcLevel >= 50)
- entitylevel = (new StringBuilder()).append("Lvl \247e")
- .append(Integer.toString(entitynpc.npcLevel)).toString();
- if (!Minecraft.isDebugInfoEnabled()) {
- if (entitynpc.npcTitle != null)
- renderName(entitynpc, entitynpc.npcName.trim() + " " + entitynpc.npcTitle.trim(), d, d1 + 0.13, d2, i);
- else
- renderName(entitynpc, entitynpc.npcName, d, d1 + 0.13D, d2, i);
- renderName(entitynpc, entitylevel, d, d1 + 0.4D, d2, i);
- renderHealthBars(entitynpc, d, d1, d2, 32);
- } else {
- renderLivingLabel(
- entitynpc,
- new StringBuilder().append("Npc Strength: ").append(entitynpc.npcMaxStrength)
- .append(", Npc Level: ").append(entitynpc.npcLevel).toString(),
- d, d1 + 0.13, d2, i);
- renderLivingLabel(
- entitynpc,
- new StringBuilder().append("Npc Health: ").append(entitynpc.npcMaxHealth)
- .append(", Npc Owner: ").append(entitynpc.npcOwner).toString(),
- d, d1 + 0.4, d2, i);
- }
- }
- public void renderName(GenuineNpcEntity entitynpc, String s, double d, double d1, double d2, int i)
- {
- float f = entitynpc.getDistanceToEntity(renderManager.livingPlayer);
- if(f > i)
- {
- return;
- }
- FontRenderer fontrenderer = getFontRendererFromRenderManager();
- float f1 = 1.6F;
- float f2 = 0.01666667F * f1;
- GL11.glPushMatrix();
- GL11.glTranslatef((float)d + 0.0F, (float)d1 + 2.3F, (float)d2);
- GL11.glNormal3f(0.0F, 1.0F, 0.0F);
- GL11.glRotatef(-renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
- GL11.glRotatef(renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
- GL11.glScalef(-f2, -f2, f2);
- GL11.glDisable(2896 /*GL_LIGHTING*/);
- GL11.glDepthMask(false);
- GL11.glDisable(2929 /*GL_DEPTH_TEST*/);
- GL11.glEnable(3042 /*GL_BLEND*/);
- GL11.glBlendFunc(770, 771);
- Tessellator tessellator = Tessellator.instance;
- GL11.glDisable(3553 /*GL_TEXTURE_2D*/);
- tessellator.startDrawingQuads();
- int j = fontrenderer.getStringWidth(s) / 2;
- tessellator.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.35F);
- tessellator.addVertex(-j - 1, -1, 0.0D);
- tessellator.addVertex(-j - 1, 8, 0.0D);
- tessellator.addVertex(j + 1, 8, 0.0D);
- tessellator.addVertex(j + 1, -1, 0.0D);
- tessellator.draw();
- GL11.glEnable(3553 /*GL_TEXTURE_2D*/);
- fontrenderer.drawString(s, -fontrenderer.getStringWidth(s) / 2, 0, 0x20ffffff);
- GL11.glEnable(2929 /*GL_DEPTH_TEST*/);
- GL11.glDepthMask(true);
- fontrenderer.drawString(s, -fontrenderer.getStringWidth(s) / 2, 0, -1);
- GL11.glEnable(2896 /*GL_LIGHTING*/);
- GL11.glDisable(3042 /*GL_BLEND*/);
- GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
- GL11.glPopMatrix();
- }
- public void renderHealthBars(GenuineNpcEntity entitynpc, double d, double d1, double d2, int i)
- {
- float f = entitynpc.getDistanceToEntity(renderManager.livingPlayer);
- if(f > i)
- {
- return;
- }
- float f2 = 1.6F;
- float f3 = 0.01666667F * f2;
- GL11.glPushMatrix();
- GL11.glTranslatef((float) d, (float) d1 + 2.2F, (float) d2);
- GL11.glNormal3f(0.0F, 1.0F, 0.0F);
- GL11.glRotatef(-renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
- GL11.glRotatef(renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
- GL11.glScalef(-f3, -f3, f3);
- GL11.glDisable(2896 /* GL_LIGHTING */);
- GL11.glEnable(3042 /*GL_BLEND*/);
- GL11.glBlendFunc(770, 771);
- Tessellator tessellator = Tessellator.instance;
- GL11.glDisable(3553 /* GL_TEXTURE_2D */);
- tessellator.startDrawingQuads();
- float health = entitynpc.health;
- float maxHealth = entitynpc.npcMaxHealth;
- float healthPercent = health / maxHealth;
- float opHealthPercent = 1F - (health / maxHealth);
- float ll = 50 * healthPercent;
- //GL11.glEnable(2929 /*GL_DEPTH_TEST*/);
- //GL11.glDepthMask(true);
- // black bar
- tessellator.setColorRGBA_F(0F, 0F, 0F, 1F);
- tessellator.addVertex(-25 + ll, 0, 0.0D);
- tessellator.addVertex(-25 + ll, 4, 0.0D);
- tessellator.addVertex(25, 4, 0.0D);
- tessellator.addVertex(25, 0, 0.0D);
- // health bar
- tessellator.setColorRGBA_F(opHealthPercent, healthPercent, 0F, 1F);
- tessellator.addVertex(-25, 0, 0.0D);
- tessellator.addVertex(-25, 4, 0.0D);
- tessellator.addVertex(ll - 25, 4, 0.0D);
- tessellator.addVertex(ll - 25, 0, 0.0D);
- tessellator.draw();
- GL11.glEnable(3553 /* GL_TEXTURE_2D */);
- GL11.glEnable(2896 /* GL_LIGHTING */);
- GL11.glDisable(3042 /* GL_BLEND */);
- GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
- GL11.glPopMatrix();
- }
- }
Advertisement