Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Hey salut les devs!
- Aujourd'hui nous allons apprendre comment faire une healthBar !
- (Tutoriel testé en 1.8.8)
- Donc pour commencer rendez vous dans la classe Render.java
- (package net.minecraft.client.renderer.entity;)
- Vous allez pouvoir rajouter c'est 2 fonctions:
- protected void renderPlayerHealth(T entityIn, double x, double y, double z, float p_177069_9_, double p_177069_10_)
- {
- this.drawRect(entityIn, x, y, z, 64);
- }
- protected void drawHealthBar(T entityIn, double x, double y, double z, int maxDistance)
- {
- double d0 = entityIn.getDistanceSqToEntity(this.renderManager.livingPlayer);
- if (d0 <= (double)(maxDistance * maxDistance))
- {
- FontRenderer fontrenderer = this.getFontRendererFromRenderManager();
- float f = 1.6F;
- float f1 = 0.016666668F * f;
- GlStateManager.pushMatrix();
- GlStateManager.translate((float)x + 0.0F, (float)y + entityIn.height + 0.5F, (float)z);
- GL11.glNormal3f(0.0F, 1.0F, 0.0F);
- GlStateManager.rotate(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
- GlStateManager.rotate(this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
- 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();
- GlStateManager.disableTexture2D();
- int i = 10;
- int j = 20;
- worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR);
- worldrenderer.pos((double)(-j - 2), (double)(-1 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
- worldrenderer.pos((double)(-j - 2), (double)(5 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
- worldrenderer.pos((double)(j + 2), (double)(5 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
- worldrenderer.pos((double)(j + 2), (double)(-1 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
- tessellator.draw();
- GlStateManager.enableTexture2D();
- EntityPlayer player = (EntityPlayer)entityIn;
- int health = (int)player.getHealth();
- GuiScreen.drawRect(-health, 10, health, 14, new Color(80, 255, 80).getRGB());
- GuiScreen.drawRect(- 20, 10, 20, 11, new Color(100, 100, 100).getRGB());
- GuiScreen.drawRect(- 20, 14, 20, 13, new Color(100, 100, 100).getRGB());
- GuiScreen.drawRect(20, 14, 21, 10, new Color(100, 100, 100).getRGB());
- GuiScreen.drawRect(- 20, 14, -21, 10, new Color(100, 100, 100).getRGB());
- GlStateManager.enableDepth();
- GlStateManager.depthMask(true);
- GlStateManager.enableLighting();
- GlStateManager.disableBlend();
- GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
- GlStateManager.popMatrix();
- }
- }
- PS: Certaines personnes peuvent avoir une érreur dans les lignes:
- GuiScreen.drawRect(- 20, 14, -21, 10, new Color(100, 100, 100).getRGB());
- Pour régler ceci il faut mettre drawRect dans la classe GuiScreen en static
- Ensuite rendez vous dans la classe RendererLivingEntity.java
- (package net.minecraft.client.renderer.entity;)
- Ajouter cette ligne dans la fonction renderName(T entity, double x, double y, double z)
- this.renderPlayerHealth(entity, x, y - 1.37 + entity.getEyeHeight() + 0.2, z, 0.02666667F, d0);
- Faites bien attention! Ajouter la dans le "else" a la fin de la fonction.
- Voilà logiquement vous avez maintenant une healthbar au dessus de la tête des joueurs!
- --Frosted
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement