electric-expansion/src/main/java/electricexpansion/client/render/RenderFloatingText.java

61 lines
2.5 KiB
Java

package electricexpansion.client.render;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderManager;
import org.lwjgl.opengl.GL11;
public class RenderFloatingText {
public static void renderFloatingText(final String text, final float x,
final float y, final float z) {
renderFloatingText(text, x, y, z, 16777215);
}
public static void renderFloatingText(final String text, final float x,
final float y, final float z,
final int color) {
final RenderManager renderManager = RenderManager.instance;
final FontRenderer fontRenderer = renderManager.getFontRenderer();
final float scale = 0.027f;
GL11.glColor4f(1.0f, 1.0f, 1.0f, 0.5f);
GL11.glPushMatrix();
GL11.glTranslatef(x + 0.0f, y + 2.3f, z);
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(-scale, -scale, scale);
GL11.glDisable(2896);
GL11.glDepthMask(false);
GL11.glDisable(2929);
GL11.glEnable(3042);
GL11.glBlendFunc(770, 771);
final Tessellator tessellator = Tessellator.instance;
final int yOffset = 0;
GL11.glDisable(3553);
tessellator.startDrawingQuads();
final int stringMiddle = fontRenderer.getStringWidth(text) / 2;
tessellator.setColorRGBA_F(0.0f, 0.0f, 0.0f, 0.5f);
tessellator.addVertex((double) (-stringMiddle - 1), (double) (-1 + yOffset),
0.0);
tessellator.addVertex((double) (-stringMiddle - 1), (double) (8 + yOffset),
0.0);
tessellator.addVertex((double) (stringMiddle + 1), (double) (8 + yOffset),
0.0);
tessellator.addVertex((double) (stringMiddle + 1), (double) (-1 + yOffset),
0.0);
tessellator.draw();
GL11.glEnable(3553);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 0.5f);
fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2,
yOffset, color);
GL11.glEnable(2929);
GL11.glDepthMask(true);
fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2,
yOffset, color);
GL11.glEnable(2896);
GL11.glDisable(3042);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
GL11.glPopMatrix();
}
}