August 9, 201312 yr Author Wait isnt the problem in here public static void drawTexturedQuadFit(double x, double y, double width, double height, double zLevel) { caveman = caveman.getCaveman(); Tessellator tessellator = Tessellator.instance; if(caveman != null) { for(int i = 0; i < caveman.func_110138_aP(); i++) { if(caveman.func_110138_aP() > i) { tessellator.startDrawingQuads(); tessellator.setColorOpaque(0, 255, 0); tessellator.addVertexWithUV(x + 0, y + height, zLevel, 0, 1); tessellator.addVertexWithUV(x + width, y + height, zLevel, 1, 1); tessellator.addVertexWithUV(x + width, y + 0, zLevel, 1, 0); tessellator.addVertexWithUV(x + 0, y + 0, zLevel, 0, 0); tessellator.setColorOpaque(0, 255, 0); tessellator.draw(); } else { tessellator.startDrawingQuads(); tessellator.setColorOpaque(255, 0, 0); tessellator.addVertexWithUV(x + 0, y + height, zLevel, 0, 1); tessellator.addVertexWithUV(x + width, y + height, zLevel, 1, 1); tessellator.addVertexWithUV(x + width, y + 0, zLevel, 1, 0); tessellator.addVertexWithUV(x + 0, y + 0, zLevel, 0, 0); tessellator.setColorOpaque(255, 0, 0); tessellator.draw(); } } } } Because before I added that it was working
August 9, 201312 yr give me another maybe 10 minute ive hacked one togheter ill give it to you how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
August 9, 201312 yr import java.lang.reflect.Field; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.Timer; import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.event.ForgeSubscribe; import org.lwjgl.opengl.GL11; import com.hydroflame.mod.ForgeRevCommonProxy; public class HealthBarRenderer { private Timer timer; public HealthBarRenderer(){ Field[] fields = Minecraft.getMinecraft().getClass().getDeclaredFields(); for(Field field: fields){ if(field.getType().isAssignableFrom(Timer.class)){ field.setAccessible(true); try { timer = (Timer)field.get(Minecraft.getMinecraft()); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } } @ForgeSubscribe public void renderHealthBar(RenderLivingEvent.Specials.Post event){ float interp = timer.renderPartialTicks; EntityLivingBase e = event.entity; float healthLength = 1;//you can change the length of the health if you want float healthHeight = 0.25f;//and its height EntityPlayer p = Minecraft.getMinecraft().thePlayer; double diffX = e.prevPosX+interp*(e.posX-e.prevPosX) - (p.prevPosX+interp*(p.posX-p.prevPosX)); double diffY = e.prevPosY+interp*(e.posY-e.prevPosY) - (p.prevPosY+interp*(p.posY-p.prevPosY)); double diffZ = e.prevPosZ+interp*(e.posZ-e.prevPosZ) - (p.prevPosZ+interp*(p.posZ-p.prevPosZ)); GL11.glPushMatrix(); double height = event.entity.boundingBox.maxY-event.entity.boundingBox.minY+0.5; GL11.glTranslated(diffX, diffY+height, diffZ); GL11.glRotated(-p.rotationYaw, 0, 1, 0); GL11.glScaled(-1, 1, 1); Tessellator t = Tessellator.instance; Minecraft.getMinecraft().renderEngine.func_110577_a(ForgeRevCommonProxy.blankTexture);//make sure to change thsi to your blank texture float currentHealth = e.getDataWatcher().func_111145_d(6); float maxHealth = e.func_110138_aP(); float sizeOfActiveHealth = healthLength*(currentHealth/maxHealth); GL11.glTranslated(-healthLength/2f, 0, 0); t.startDrawingQuads(); t.setColorOpaque(0, 255, 0); t.addVertexWithUV(0, 0, 0, 0, 0); t.addVertexWithUV(sizeOfActiveHealth, 0, 0, 1, 0); t.addVertexWithUV(sizeOfActiveHealth, healthHeight, 0, 1, 1); t.addVertexWithUV(0, healthHeight, 0, 0, 1); t.draw(); float rest = healthLength-sizeOfActiveHealth; GL11.glTranslated(sizeOfActiveHealth, 0, 0); t.startDrawingQuads(); t.setColorOpaque(255, 0, 0); t.addVertexWithUV(0, 0, 0, 0, 0); t.addVertexWithUV(rest, 0, 0, 1, 0); t.addVertexWithUV(rest, healthHeight, 0, 1, 1); t.addVertexWithUV(0, healthHeight, 0, 0, 1); t.draw(); GL11.glPopMatrix(); } } heres a health bar rendere i hacked in ~10 minute, artefact free just register it and you're good to go how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
August 9, 201312 yr right, i made special change to the Minecraft class change it to float interp = 1; for now, ill make the proper code later how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
August 9, 201312 yr right, i made special change to the Minecraft class change it to float interp = 1; for now, ill make the proper code later i know, change it to float interp = 1; instead how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
August 9, 201312 yr have you copied the entire class ? this is what it looks like for me: http://imagebin.org/267029 how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
August 9, 201312 yr Author is it my texture? http://gyazo.com/4c72117aef825f9dbcaa98c2e1db6ce9 Heres my code. but yeah I think I copied everything: private Timer timer; public void HealthBarRenderer() { Field[] fields = Minecraft.getMinecraft().getClass().getDeclaredFields(); for(Field field : fields) { if(field.getType().isAssignableFrom(Timer.class)) { field.setAccessible(true); try { timer = (Timer) field.get(Minecraft.getMinecraft()); } catch(IllegalArgumentException e) { e.printStackTrace(); } catch(IllegalAccessException e) { e.printStackTrace(); } } } } @ForgeSubscribe public void renderCavemanHealthBar(RenderLivingEvent.Specials.Pre event) { float interp = 1; EntityLivingBase e = event.entity; float healthLength = 5;//you can change the length of the health if you want float healthHeight = 2.0f;//and its height EntityPlayer p = Minecraft.getMinecraft().thePlayer; double diffX = e.prevPosX + interp * (e.posX - e.prevPosX) - (p.prevPosX + interp * (p.posX - p.prevPosX)); double diffY = e.prevPosY + interp * (e.posY - e.prevPosY) - (p.prevPosY + interp * (p.posY - p.prevPosY)); double diffZ = e.prevPosZ + interp * (e.posZ - e.prevPosZ) - (p.prevPosZ + interp * (p.posZ - p.prevPosZ)); GL11.glPushMatrix(); double height = event.entity.boundingBox.maxY - event.entity.boundingBox.minY + 0.5; GL11.glTranslated(diffX, diffY + height, diffZ); GL11.glRotated(- p.rotationYaw, 0, 1, 0); GL11.glScaled(- 1, 1, 1); Tessellator t = Tessellator.instance; FMLClientHandler.instance().getClient().renderEngine.func_110577_a(new ResourceLocation(Strings.MOD_ID, "/textures/gui/health_bar.png")); float currentHealth = e.getDataWatcher().func_111145_d(6); float maxHealth = e.func_110138_aP(); float sizeOfActiveHealth = healthLength * (currentHealth / maxHealth); GL11.glTranslated(- healthLength / 2f, 0, 0); t.startDrawingQuads(); t.setColorOpaque(0, 255, 0); t.addVertexWithUV(0, 0, 0, 0, 0); t.addVertexWithUV(sizeOfActiveHealth, 0, 0, 1, 0); t.addVertexWithUV(sizeOfActiveHealth, healthHeight, 0, 1, 1); t.addVertexWithUV(0, healthHeight, 0, 0, 1); t.draw(); float rest = healthLength - sizeOfActiveHealth; GL11.glTranslated(sizeOfActiveHealth, 0, 0); t.startDrawingQuads(); t.setColorOpaque(255, 0, 0); t.addVertexWithUV(0, 0, 0, 0, 0); t.addVertexWithUV(rest, 0, 0, 1, 0); t.addVertexWithUV(rest, healthHeight, 0, 1, 1); t.addVertexWithUV(0, healthHeight, 0, 0, 1); t.draw(); GL11.glPopMatrix(); }
August 9, 201312 yr ....... public void HealthBarRenderer() originally was public HealthBarRenderer() meaning its the constructor this constructor was suppose to set the timer to somethign so that shit renders well please copy the WHOLE class and register it how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
August 9, 201312 yr Author Okay I changed it to a new class and registered it and stuff but yeah its my texture what is messing it up, cant I have http://gyazo.com/4c72117aef825f9dbcaa98c2e1db6ce9 this because id like it to have a border
August 9, 201312 yr to future reader, this is the final version of my health displayer, feel free to use it and change ForgeRevCommonProxy.blankTexture to a white texture 1x1 import java.lang.reflect.Field; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.Timer; import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.event.ForgeSubscribe; import org.lwjgl.opengl.GL11; import com.hydroflame.mod.ForgeRevCommonProxy; public class HealthBarRenderer { private Timer timer; public HealthBarRenderer(){ Field[] fields = Minecraft.getMinecraft().getClass().getDeclaredFields(); for(Field field: fields){ if(field.getType().isAssignableFrom(Timer.class)){ try { field.setAccessible(true); timer = (Timer)field.get(Minecraft.getMinecraft()); if(timer == null){ System.out.println("***THIS MESSAGE SHOULD NOT APPEAR, CRASH IS IMMINENT\n***DO NOT START SINGLE/MULTIPLAYER"); try{ throw new Exception("NULL TIMER WTFBBQ"); }catch(Exception e){ e.printStackTrace(); System.out.println("please report to hydroflame with your logs (FULL LOG)"); } } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } } @ForgeSubscribe public void renderHealthBar(RenderLivingEvent.Specials.Post event){ float interp = timer.renderPartialTicks; EntityLivingBase e = event.entity; float healthLength = 1; float healthHeight = 0.25f; EntityPlayer p = Minecraft.getMinecraft().thePlayer; double diffX = e.prevPosX+interp*(e.posX-e.prevPosX) - (p.prevPosX+interp*(p.posX-p.prevPosX)); double diffY = e.prevPosY+interp*(e.posY-e.prevPosY) - (p.prevPosY+interp*(p.posY-p.prevPosY)); double diffZ = e.prevPosZ+interp*(e.posZ-e.prevPosZ) - (p.prevPosZ+interp*(p.posZ-p.prevPosZ)); GL11.glDisable(GL11.GL_LIGHTING); GL11.glPushMatrix(); double height = event.entity.boundingBox.maxY-event.entity.boundingBox.minY+0.5; GL11.glTranslated(diffX, diffY+height, diffZ); GL11.glRotated(-(p.prevRotationYaw+interp*(p.rotationYaw-p.prevRotationYaw)), 0, 1, 0); GL11.glRotated(p.prevRotationPitch+interp*(p.rotationPitch-p.prevRotationPitch), 1, 0, 0); GL11.glScaled(-1, 1, 1); Tessellator t = Tessellator.instance; Minecraft.getMinecraft().renderEngine.func_110577_a(ForgeRevCommonProxy.blankTexture); float currentHealth = e.getDataWatcher().func_111145_d(6); float maxHealth = e.func_110138_aP(); float sizeOfActiveHealth = healthLength*(currentHealth/maxHealth); GL11.glTranslated(-healthLength/2f, 0, 0); t.startDrawingQuads(); t.setColorOpaque(100, 205, 100); t.addVertexWithUV(0, 0, 0, 0, 0); t.addVertexWithUV(sizeOfActiveHealth, 0, 0, 1, 0); t.addVertexWithUV(sizeOfActiveHealth, healthHeight, 0, 1, 1); t.addVertexWithUV(0, healthHeight, 0, 0, 1); t.draw(); float rest = healthLength-sizeOfActiveHealth; GL11.glTranslated(sizeOfActiveHealth, 0, 0); t.startDrawingQuads(); t.setColorOpaque(255, 0, 0); t.addVertexWithUV(0, 0, 0, 0, 0); t.addVertexWithUV(rest, 0, 0, 1, 0); t.addVertexWithUV(rest, healthHeight, 0, 1, 1); t.addVertexWithUV(0, healthHeight, 0, 0, 1); t.draw(); GL11.glPopMatrix(); GL11.glEnable(GL11.GL_LIGHTING); } } artefact free you can also change the healthLength and healthHeight if you wish well start by usign a white 1x1 texture, after that adding a border wouldn't be hard (and you can always surround everythign with a if(entity instanceof Caveman) if you dotn want to render the other entities the same way how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.