Advertisement
Sweetoky

HealthBar par Frosted

Jan 20th, 2020
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.86 KB | None | 0 0
  1. Hey salut les devs!
  2. Aujourd'hui nous allons apprendre comment faire une healthBar !
  3.  
  4. (Tutoriel testé en 1.8.8)
  5.  
  6. Donc pour commencer rendez vous dans la classe Render.java
  7. (package net.minecraft.client.renderer.entity;)
  8.  
  9. Vous allez pouvoir rajouter c'est 2 fonctions:
  10. protected void renderPlayerHealth(T entityIn, double x, double y, double z, float p_177069_9_, double p_177069_10_)
  11.    {
  12.        this.drawRect(entityIn, x, y, z, 64);
  13.    }
  14. protected void drawHealthBar(T entityIn, double x, double y, double z, int maxDistance)
  15.     {
  16.         double d0 = entityIn.getDistanceSqToEntity(this.renderManager.livingPlayer);
  17.  
  18.         if (d0 <= (double)(maxDistance * maxDistance))
  19.         {
  20.             FontRenderer fontrenderer = this.getFontRendererFromRenderManager();
  21.             float f = 1.6F;
  22.             float f1 = 0.016666668F * f;
  23.             GlStateManager.pushMatrix();
  24.             GlStateManager.translate((float)x + 0.0F, (float)y + entityIn.height + 0.5F, (float)z);
  25.             GL11.glNormal3f(0.0F, 1.0F, 0.0F);
  26.             GlStateManager.rotate(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
  27.             GlStateManager.rotate(this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
  28.             GlStateManager.scale(-f1, -f1, f1);
  29.             GlStateManager.disableLighting();
  30.             GlStateManager.depthMask(false);
  31.             GlStateManager.disableDepth();
  32.             GlStateManager.enableBlend();
  33.             GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
  34.             Tessellator tessellator = Tessellator.getInstance();
  35.             WorldRenderer worldrenderer = tessellator.getWorldRenderer();
  36.             GlStateManager.disableTexture2D();
  37.            
  38.             int i = 10;
  39.             int j = 20;
  40.            
  41.             worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR);
  42.             worldrenderer.pos((double)(-j - 2), (double)(-1 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
  43.             worldrenderer.pos((double)(-j - 2), (double)(5 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
  44.             worldrenderer.pos((double)(j + 2), (double)(5 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
  45.             worldrenderer.pos((double)(j + 2), (double)(-1 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
  46.             tessellator.draw();
  47.             GlStateManager.enableTexture2D();
  48. EntityPlayer player = (EntityPlayer)entityIn;
  49.            
  50.             int health = (int)player.getHealth();
  51.             GuiScreen.drawRect(-health, 10, health, 14, new Color(80, 255, 80).getRGB());
  52.             GuiScreen.drawRect(- 20, 10, 20, 11, new Color(100, 100, 100).getRGB());
  53.             GuiScreen.drawRect(- 20, 14, 20, 13, new Color(100, 100, 100).getRGB());
  54.             GuiScreen.drawRect(20, 14, 21, 10, new Color(100, 100, 100).getRGB());
  55.             GuiScreen.drawRect(- 20, 14, -21, 10, new Color(100, 100, 100).getRGB());
  56.             GlStateManager.enableDepth();
  57.             GlStateManager.depthMask(true);
  58.             GlStateManager.enableLighting();
  59.             GlStateManager.disableBlend();
  60.             GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
  61.             GlStateManager.popMatrix();
  62.         }
  63.     }
  64. PS: Certaines personnes peuvent avoir une érreur dans les lignes:
  65. GuiScreen.drawRect(- 20, 14, -21, 10, new Color(100, 100, 100).getRGB());
  66.  
  67.  
  68. Pour régler ceci il faut mettre drawRect dans la classe GuiScreen en static
  69.  
  70. Ensuite rendez vous dans la classe RendererLivingEntity.java
  71. (package net.minecraft.client.renderer.entity;)
  72.  
  73. Ajouter cette ligne dans la fonction renderName(T entity, double x, double y, double z)
  74. this.renderPlayerHealth(entity, x, y - 1.37 + entity.getEyeHeight() + 0.2, z, 0.02666667F, d0);
  75.  
  76.  
  77. Faites bien attention! Ajouter la dans le "else" a la fin de la fonction.
  78.  
  79. Voilà logiquement vous avez maintenant une healthbar au dessus de la tête des joueurs!
  80.  
  81. --Frosted
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement