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();
}