public static void drawBillboardedText(@Nonnull Vector3f pos, @Nonnull String text, float size, @Nonnull Vector4f txtCol, boolean drawShadow, @Nullable Vector4f shadowCol, boolean drawBackground, @Nullable Vector4f bgCol) { GlStateManager.pushMatrix(); GlStateManager.translate(pos.x, pos.y, pos.z); GlStateManager.rotate(180, 1, 0, 0); Minecraft mc = Minecraft.getMinecraft(); FontRenderer fnt = mc.fontRenderer; float scale = size / fnt.FONT_HEIGHT; GlStateManager.scale(scale, scale, scale); GlStateManager.rotate(mc.getRenderManager().playerViewY + 180, 0.0F, 1.0F, 0.0F); GlStateManager.rotate(-mc.getRenderManager().playerViewX, 1.0F, 0.0F, 0.0F); GlStateManager.translate(-fnt.getStringWidth(text) / 2, 0, 0); if (drawBackground && bgCol != null) { renderBackground(fnt, text, bgCol); } fnt.drawString(text, 0, 0, ColorUtil.getRGBA(txtCol)); if (drawShadow && shadowCol != null) { GlStateManager.translate(0.5f, 0.5f, 0.1f); fnt.drawString(text, 0, 0, ColorUtil.getRGBA(shadowCol)); } GlStateManager.enableAlpha(); GlStateManager.popMatrix(); RenderUtil.bindBlockTexture(); }