I create command to renderNameTag and is not perfetcly.
Text is rear of entity or no.
[/img]
public static void renderName(Entity entity, String string, int distance, float partialTicks)
{
RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
Entity player = Minecraft.getMinecraft().getRenderViewEntity();
FontRenderer fontRenderer = renderManager.getFontRenderer();
Tessellator tessellator = Tessellator.getInstance();
WorldRenderer worldRenderer = tessellator.getWorldRenderer();
double d3 = Utils.getDistanceBetweenBlocks(player.getPosition(), entity.getPosition());
if (d3 <= (double)(distance))
{
float scale = (float) (0.016666668F * getDistanceScalled(d3));
int string_length = fontRenderer.getStringWidth(string) / 2;
double playerX = player.lastTickPosX + (player.posX - player.lastTickPosX);
double playerY = player.lastTickPosY + (player.posY - player.lastTickPosY);
double playerZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ);
double entityX = entity.lastTickPosX + (entity.posX - entity.lastTickPosX);
double entityY = entity.lastTickPosY + (entity.posY - entity.lastTickPosY);
double entityZ = entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ);
double diffX = entityX - playerX * (double) partialTicks;
double diffY = entityY - playerY * (double) partialTicks;
double diffZ = entityZ - playerZ * (double) partialTicks;
GlStateManager.pushMatrix();
GlStateManager.translate(diffX + 0.0D, diffY + (entity.height + 0.75D), diffZ);
GlStateManager.rotate(-player.rotationYaw, 0.0F, 1.0F, 0.0F);
GlStateManager.rotate(player.rotationPitch, 1.0F, 0.0F, 0.0F);
GlStateManager.scale(-scale, -scale, scale);
GlStateManager.depthMask(false);
GlStateManager.disableTexture2D();
GlStateManager.disableLighting();
GlStateManager.disableBlend();
Minecraft.getMinecraft().ingameGUI.drawRect(-string_length - 2, -2, fontRenderer.getStringWidth(string) + 1 -string_length, fontRenderer.FONT_HEIGHT, 0x50000000);
Minecraft.getMinecraft().ingameGUI.drawRect(-string_length - 1, -1, fontRenderer.getStringWidth(string) -string_length, fontRenderer.FONT_HEIGHT - 1, 0x50FF0000);
fontRenderer.drawString(string, -string_length, 0, -1);
GlStateManager.enableTexture2D();
GlStateManager.enableLighting();
GlStateManager.disableBlend();
GlStateManager.depthMask(true);
GlStateManager.popMatrix();
}
}
I use in public void onRenderLiving(RenderLivingEvent.Post event).