- 29
- 1
- 2
Как привязать текст к модельке игрока чтобы текст поворачивался при повороте игрока а не при повороте моей камеры
Текущий код:
@SubscribeEvent
public void render(RenderPlayerEvent.Pre event) {
EntityPlayer player = event.entityPlayer;
if (player != Minecraft.getMinecraft().thePlayer) {
renderName(event, "Speed: ", player, event.x, event.y * .3D, event.z + 1);
}
}
public void renderName(RenderPlayerEvent event, String text, EntityPlayer entityIn, double x, double y, double z) {
//#if MC<=10809
FontRenderer fontrenderer = event.renderer.getFontRendererFromRenderManager();
//#else
//$$ FontRenderer fontrenderer = event.getRenderer().getFontRendererFromRenderManager();
//#endif
float f = (float) (1.6F * 1);
float f1 = 0.016666668F * f;
GlStateManager.pushMatrix();
int xMultiplier = 1;
if (Minecraft.getMinecraft() != null && Minecraft.getMinecraft().gameSettings != null && Minecraft.getMinecraft().gameSettings.thirdPersonView == 2) {
xMultiplier = -1;
}
GlStateManager.translate((float) x + 0.0F, (float) y + entityIn.height + 0.5F, (float) z);
GL11.glNormal3f(0.0F, 1.0F, 0.0F);
//#if MC<=10809
float Xcc = (float) Math.sin(90 - entityIn.cameraPitch) * 10;
float Ycc = (float) Math.sin(entityIn.cameraPitch) * 10;
float Zcc = (float) Math.sin(entityIn.cameraYaw) * 10;
//GlStateManager.rotate(-event.renderer.getRenderManager().playerViewX, 0.0F, 1.0F, 0.0F);
GlStateManager.rotate(-event.renderer.getRenderManager().playerViewY, 0.0F, 1.0F, 0.0F);
GlStateManager.rotate(event.renderer.getRenderManager().playerViewX * xMultiplier, 1.0F, 0.0F, 0.0F);
System.out.println(event.renderer.getRenderManager().playerViewX * xMultiplier);
System.out.println(Xcc * xMultiplier);
//#else
//$$ GlStateManager.rotate(-event.getRenderer().getRenderManager().playerViewY, 0.0F, 1.0F, 0.0F);
//$$ GlStateManager.rotate(event.getRenderer().getRenderManager().playerViewX * xMultiplier, 1.0F, 0.0F, 0.0F);
//#endif
GlStateManager.scale(-f1, -f1, f1);
GlStateManager.disableLighting();
GlStateManager.depthMask(false);
GlStateManager.disableDepth();
GlStateManager.enableBlend();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
Tessellator tessellator = Tessellator.getInstance();
WorldRenderer worldrenderer = tessellator.getWorldRenderer();
int i = 0;
int j = fontrenderer.getStringWidth(text) / 2;
GlStateManager.disableTexture2D();
worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR);
worldrenderer.pos(-j - 1, -1 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
worldrenderer.pos(-j - 1, 8 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
worldrenderer.pos(j + 1, 8 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
worldrenderer.pos(j + 1, -1 + i, 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
tessellator.draw();
GlStateManager.enableTexture2D();
renderString(fontrenderer, text);
GlStateManager.enableLighting();
GlStateManager.disableBlend();
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
GlStateManager.popMatrix();
}
private void renderString(FontRenderer renderer, String text) {
int x = -renderer.getStringWidth(text) / 2;
//Render header
render(renderer, text, x);
//x -= renderer.getStringWidth(text);
}
private void render(FontRenderer renderer, String text, int x) {
GlStateManager.disableDepth();
GlStateManager.depthMask(true);
GlStateManager.disableDepth();
GlStateManager.depthMask(false);
int y = 0;
GlStateManager.color(255, 255, 255, .5F);
renderer.drawString(text, x, y, Color.WHITE.darker().darker().darker().darker().darker().getRGB() * 255);
GlStateManager.enableDepth();
GlStateManager.depthMask(true);
GlStateManager.color(1.0F, 1.0F, 1.0F);
GlStateManager.color(255, 255, 255, .5F);
renderer.drawString(text, x, y, Color.WHITE.darker().getRGB());
}
Последнее редактирование: