Barre de vie Boss Custom qui ne s'affiche pas
-
Salut tout le monde, j’ai crée récemment une interface pour récupérer quelque info sur le boss, une autre class qui est l’équivalent de BossStatus pour mon mob et j’ai ajouté quelque fonctions dans l’entity du mob ainsi que dans son render. J’ai regardé plein de class de minecraft et j’ai vu que la barre de vie des boss s’affiche grâce au gui GuiIngame cependant ne pouvant pas l’éditer j’ai essayé de rajouter les mêmes fonctions dans mon tickhandler mais en vain rien ne fonctionne jue bloque depuismaintenant 2 heures et mes recherches sont actives depuis maintenant 4 heures. En gros je bloque VRAIMENT
Je vous passe mes classMon tickhandler:
package mrplaigon.fr.testMod.client; @SideOnly(Side.CLIENT) public class RenderTickHandler { // Stores an instance of Minecraft for easy access private Minecraft mc; // create a constructor that takes a Minecraft argument; now we have it whenever we need it public RenderTickHandler(Minecraft mc) { this.mc = mc; } @SubscribeEvent public void onRenderTick(RenderTickEvent event) { if (event.phase == Phase.START) { //this is the equivalent of tickStart if(mc.thePlayer != null) { renderBossHealth(); } } } /** * Renders dragon's (boss) health on the HUD */ protected void renderBossHealth() { if (CustomBossStatus.bossName != null && CustomBossStatus.statusBarTime > 0) { –CustomBossStatus.statusBarTime; FontRenderer fontrenderer = this.mc.fontRenderer; ScaledResolution scaledresolution = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth, this.mc.displayHeight); int i = scaledresolution.getScaledWidth(); short short1 = 182; int j = i / 2 - short1 / 2; int k = (int)(CustomBossStatus.healthScale * (float)(short1 + 1)); byte b0 = 12; this.drawTexturedModalRect(j, b0, 0, 74, short1, 5); this.drawTexturedModalRect(j, b0, 0, 74, short1, 5); if (k > 0) { this.drawTexturedModalRect(j, b0, 0, 79, k, 5); } String s = CustomBossStatus.bossName; fontrenderer.drawStringWithShadow(s, i / 2 - fontrenderer.getStringWidth(s) / 2, b0 - 10, 16777215); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(new ResourceLocation("textures/gui/icons.png")); } } public void drawTexturedModalRect(int i, int j, int k, int l, int i1, int j1) { float f = 0.00390625F; float f1 = 0.00390625F; Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); tessellator.addVertexWithUV(i + 0, j + j1, -90F, (float)(k + 0) * f, (float)(l + j1) * f1); tessellator.addVertexWithUV(i + i1, j + j1, 90F, (float)(k + i1) * f, (float)(l + j1) * f1); tessellator.addVertexWithUV(i + i1, j + 0, 90F, (float)(k + i1) * f, (float)(l + 0) * f1); tessellator.addVertexWithUV(i + 0, j + 0, 90F, (float)(k + 0) * f, (float)(l + 0) * f1); tessellator.draw(); } }
Mon entity
package mrplaigon.fr.testMod.entity; public class EntityBoss extends EntityMob implements IBossHPBar { private static final ItemStack defaultHeldItem; //public int deathTicks; public short timerReload = 0; public float crescendo = 0.0F; public float decrescendo = 2.5F; public float soundMusicValue; public EntityBoss(World world) { super(world); this.setSize(this.width * 3.5F, this.height * 2.4F); this.isImmuneToFire = true; } public void applyEntityAttributes() { super.applyEntityAttributes(); getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(10.0D); getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(20.0D); getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.25D); getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(5.0D); } public void onLivingUpdate() { super.onLivingUpdate(); } @Override public int getBossHP() { return 10; } @Override public int getBossMaxHP() { return 10; } @Override public String getBossTitle() { return "VICTOS, Monstre Abominable"; } }
Mon render:
package mrplaigon.fr.testMod.client.renderer.entity.mob; public class RenderEntityBoss extends RenderLiving { public final ResourceLocation texturePhase1 = new ResourceLocation(testMod.MODID, "textures/entity/BossPhase1.png"); public ModelEntityBoss modelboss; public RenderEntityBoss(ModelEntityBoss modelboss, float shadow) { super(modelboss, shadow); this.modelboss = modelboss; } protected void preRenderCallback(EntityBoss boss, float f) { GL11.glScalef(2, 2, 2); } protected void preRenderCallback(EntityLivingBase par1EntityLivingBase, float par2) { this.preRenderCallback((EntityBoss )par1EntityLivingBase, par2); } public void doRender(EntityBoss boss, double par2, double par4, double par6, float par8, float par9) { CustomBossStatus.setBossStatus(boss, false); super.doRender((EntityLiving)boss, par2, par4, par6, par8, par9); } public void doRender(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9) { this.doRender((EntityBoss )par1EntityLiving, par2, par4, par6, par8, par9); } public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) { this.doRender((EntityBoss )par1Entity, par2, par4, par6, par8, par9); } public void doRender(EntityLivingBase par1Entity, double par2, double par4, double par6, float par8, float par9) { this.doRender((EntityBoss )par1Entity, par2, par4, par6, par8, par9); } protected ResourceLocation getEntityTexture(Entity entity) { return getMobTutorielTexture((EntityBoss )entity); } private ResourceLocation getMobTutorielTexture(EntityBoss boss) { return this.texturePhase1; } }
Mon interface
package mrplaigon.fr.testMod.common.other; public interface IBossHPBar { public abstract int getBossHP(); public abstract int getBossMaxHP(); public abstract String getBossTitle(); }
et enfin mon customBossStatus
package mrplaigon.fr.testMod.common.other; @SideOnly(Side.CLIENT) public final class CustomBossStatus { public static float healthScale; public static int statusBarTime; public static String bossName; public static void setBossStatus(IBossHPBar bossHPBar, boolean par1) { healthScale = bossHPBar.getBossHP() / bossHPBar.getBossMaxHP(); statusBarTime = 100; bossName = bossHPBar.getBossTitle(); } }
Evidemment comme d’habitude je vous remercie d’avance pour votre temps que vous m’accordez et je souhaite en retours une bonne chance pour résoudre ce problème qui n’est pas des moindres.
PS1 = Je sais y’a des tutos sur mff qui traitent ça mais comme vous vous en doutez moi c’est une barre de vie custom qui n’a donc pas la même texture et puis une fois que celle ci marchera je souhaiterai encore la custom.
PS2 = J’ai retiré les imports car rien que dans mon entity y’en avait beaucoup trop ^^
-
UP ! SVP ça presse
-
UP SVP je n’ai toujours rien trouvé !