Jump to content

Recommended Posts

Posted

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

Posted


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-

Posted

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-

Posted

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-

Posted

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();
}

Posted

.......

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-

Posted

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • ⚠️ DON'T CLICK THIS LINK OR ANYTHING RELATED TO THIS, IT HAS MALWARE IN THE LINK AND IT'S LIKELY A SCAM. ⚠️
    • ⚠️ DON'T CLICK THIS LINK OR ANYTHING RELATED TO THIS, IT HAS MALWARE IN THE LINK AND IT'S LIKELY A SCAM. ⚠️
    • I fight fires for a living, it's in my blood as a volunteer firefighter. But nothing could have prepared me for the fire that almost reduced my family's future to ashes. I had secretly accumulated $150,000 worth of Bitcoin over the years, intending to lock up my children's education and provide my wife with some leeway from our constant shift-work life. That was until a phishing attack struck me while I was out fighting a wildfire. The call had been on a hot afternoon. We were dashing to contain wildfires tearing across parched scrub lands. At such frantic moments, my phone pulsed with a security alert message from what looked like my Bitcoin wallet operator. Drenched with sweat, fatigue, and hyper adrenaline, I had clicked on the link and input my log-ins without questioning anything. I was tricked by hackers during my most vulnerable time. Hours later, returning to the station, I emptied my wallet. The harsh reality hit me with more force than any fire could ever have. My carefully saved safety net had vanished. My heart beat faster than the sirens. I felt as though I had failed my family. I explained my terror of burgers at our favorite local diner that evening to my friend. He leaned in close and whispered a single word: Digital Hack Recovery. He swore by their effectiveness, stating they worked miracles when his cousin had crypto stolen from him in a scam. I was skeptical old-school and desperate, so I called them. From the first call, their team treated me like family. They didn't only view figures; they viewed a husband and a father attempting to rectify a horrific error. They labored day and night, following stolen money through blockchain transactions like l detectives. Progress was made every day, translating intricate tech into fireman-speak. Ten days later, I got the call. “We recovered your Bitcoin.” I cried. Right there in the station, surrounded by smoke-stained gear, I let it all out. Relief. Gratitude. Hope they don't stop there. Knowing I worked in emergency services, Digital Hack Recovery offered to run an online security workshop for my entire fire department. They turned my disaster into a lesson that safeguarded my team. These folks don’t just recover wallets; they rebuild lives. They rebuilt mine. I fight fires for a living, it's in my blood as a volunteer firefighter. But nothing could have prepared me for the fire that almost reduced my family's future to ashes. I had secretly accumulated $150,000 worth of Bitcoin over the years, intending to lock up my children's education and provide my wife with some leeway from our constant shift-work life. That was until a phishing attack struck me while I was out fighting a wildfire. The call had been on a hot afternoon. We were dashing to contain wildfires tearing across parched scrub lands. At such frantic moments, my phone pulsed with a security alert message from what looked like my Bitcoin wallet operator. Drenched with sweat, fatigue, and hyper adrenaline, I had clicked on the link and input my log-ins without questioning anything. I was tricked by hackers during my most vulnerable time. Hours later, returning to the station, I emptied my wallet. The harsh reality hit me with more force than any fire could ever have. My carefully saved safety net had vanished. My heart beat faster than the sirens. I felt as though I had failed my family. I explained my terror of burgers at our favorite local diner that evening to my friend. He leaned in close and whispered a single word: Digital Hack Recovery. He swore by their effectiveness, stating they worked miracles when his cousin had crypto stolen from him in a scam. I was skeptical old-school and desperate, so I called them. From the first call, their team treated me like family. They didn't only view figures; they viewed a husband and a father attempting to rectify a horrific error. They labored day and night, following stolen money through blockchain transactions like l detectives. Progress was made every day, translating intricate tech into fireman-speak. Ten days later, I got the call. “We recovered your Bitcoin.” I cried. Right there in the station, surrounded by smoke-stained gear, I let it all out. Relief. Gratitude. Hope they don't stop there. Knowing I worked in emergency services, Digital Hack Recovery offered to run an online security workshop for my entire fire department. They turned my disaster into a lesson that safeguarded my team. These folks don’t just recover wallets; they rebuild lives. They rebuilt mine. Contact : Whats...App : +.1 .4 7.4.3 5.3.7 7..1.9 Website : https://       digitalhackrecovery.com     Mail:            digitalhackrecovery         @techie.       com 
    • I fight fires for a living, it's in my blood as a volunteer firefighter. But nothing could have prepared me for the fire that almost reduced my family's future to ashes. I had secretly accumulated $150,000 worth of Bitcoin over the years, intending to lock up my children's education and provide my wife with some leeway from our constant shift-work life. That was until a phishing attack struck me while I was out fighting a wildfire. The call had been on a hot afternoon. We were dashing to contain wildfires tearing across parched scrub lands. At such frantic moments, my phone pulsed with a security alert message from what looked like my Bitcoin wallet operator. Drenched with sweat, fatigue, and hyper adrenaline, I had clicked on the link and input my log-ins without questioning anything. I was tricked by hackers during my most vulnerable time. Hours later, returning to the station, I emptied my wallet. The harsh reality hit me with more force than any fire could ever have. My carefully saved safety net had vanished. My heart beat faster than the sirens. I felt as though I had failed my family. I explained my terror of burgers at our favorite local diner that evening to my friend. He leaned in close and whispered a single word: Digital Hack Recovery. He swore by their effectiveness, stating they worked miracles when his cousin had crypto stolen from him in a scam. I was skeptical old-school and desperate, so I called them. From the first call, their team treated me like family. They didn't only view figures; they viewed a husband and a father attempting to rectify a horrific error. They labored day and night, following stolen money through blockchain transactions like l detectives. Progress was made every day, translating intricate tech into fireman-speak. Ten days later, I got the call. “We recovered your Bitcoin.” I cried. Right there in the station, surrounded by smoke-stained gear, I let it all out. Relief. Gratitude. Hope they don't stop there. Knowing I worked in emergency services, Digital Hack Recovery offered to run an online security workshop for my entire fire department. They turned my disaster into a lesson that safeguarded my team. These folks don’t just recover wallets; they rebuild lives. They rebuilt mine. I fight fires for a living, it's in my blood as a volunteer firefighter. But nothing could have prepared me for the fire that almost reduced my family's future to ashes. I had secretly accumulated $150,000 worth of Bitcoin over the years, intending to lock up my children's education and provide my wife with some leeway from our constant shift-work life. That was until a phishing attack struck me while I was out fighting a wildfire. The call had been on a hot afternoon. We were dashing to contain wildfires tearing across parched scrub lands. At such frantic moments, my phone pulsed with a security alert message from what looked like my Bitcoin wallet operator. Drenched with sweat, fatigue, and hyper adrenaline, I had clicked on the link and input my log-ins without questioning anything. I was tricked by hackers during my most vulnerable time. Hours later, returning to the station, I emptied my wallet. The harsh reality hit me with more force than any fire could ever have. My carefully saved safety net had vanished. My heart beat faster than the sirens. I felt as though I had failed my family. I explained my terror of burgers at our favorite local diner that evening to my friend. He leaned in close and whispered a single word: Digital Hack Recovery. He swore by their effectiveness, stating they worked miracles when his cousin had crypto stolen from him in a scam. I was skeptical old-school and desperate, so I called them. From the first call, their team treated me like family. They didn't only view figures; they viewed a husband and a father attempting to rectify a horrific error. They labored day and night, following stolen money through blockchain transactions like l detectives. Progress was made every day, translating intricate tech into fireman-speak. Ten days later, I got the call. “We recovered your Bitcoin.” I cried. Right there in the station, surrounded by smoke-stained gear, I let it all out. Relief. Gratitude. Hope they don't stop there. Knowing I worked in emergency services, Digital Hack Recovery offered to run an online security workshop for my entire fire department. They turned my disaster into a lesson that safeguarded my team. These folks don’t just recover wallets; they rebuild lives. They rebuilt mine. Contact : Wh.ats.Ap.p : +1 .4 .7  4 3. 5  3  .7 7.1.9 Website : https://     digitalhackrecovery.   com Mail:       digitalhackrecovery     @         techie.                     com  
    • Ran it one more time just to check, and there's no errors this time on the log??? Log : https://mclo.gs/LnuaAiu I tried allocating more memory to the modpack, around 8000MB and it's still the same; stopping at "LOAD_REGISTRIES". Are some of the mods clashing, maybe? I have no clue what to do LOL
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.