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
  On 8/9/2013 at 6:20 PM, hydroflame said:

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

.......

  Quote
public void HealthBarRenderer()

originally was

  Quote
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

 

  Reveal hidden contents

 

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

    • UPDATE: this seems to be an Arch-specific issue. Switching to Ubuntu server fixed EVERYTHING.
    • Yes, Attapoll offers a $20 Sign-up bonus for new users using a code (AOVCQ). Enter the Attapoll Referral Code “AOVCQ” and submit. Yes, Attapoll offers $20 Referral Code {AOVCQ} For New Customers. If you are who wish to join Attapoll, then you should use this exclusive Attapoll referral code $20 Signup Bonus Use this Code (AOVCQ) and get $20 Welcome Bonus. You can get a $20 Signup bonus use this referral code {AOVCQ}. You can get a $20 Attpoll Referral Code {AOVCQ}. This Attapoll $20 Referral code is specifically for existing customers and can be redeemed to receive a $20. Enter $20 Attapoll Referral Code {AOVCQ} at checkout. Enjoy $20Welcome Bonus. Use the best Attapoll referral code $20 (AOVCQ) to get up to $20 first time survey as a new user. Complete the survey and get $20 credited on your Attapoll account. Plus, refer your friend to earn 10% commission on their earning If you're on the hunt for a little extra cash or some cool rewards without too much hassle, you've landed in the right place. Today, we're diving into the world of Attapoll referral codes, a nifty way to boost your earnings while taking surveys. Use this Attapoll Referral Link or code {{AOVCQ}} to get a $20 sign up bonus.
    • Yes, Attapoll offers a $20 Sign-up bonus for new users using a code (AOVCQ). Enter the Attapoll Referral Code “AOVCQ” and submit. Yes, Attapoll offers $20 Referral Code {AOVCQ} For New Customers. If you are who wish to join Attapoll, then you should use this exclusive Attapoll referral code $20 Signup Bonus Use this Code (AOVCQ) and get $20 Welcome Bonus. You can get a $20 Signup bonus use this referral code {AOVCQ}. You can get a $20 Attpoll Referral Code {AOVCQ}. This Attapoll $20 Referral code is specifically for existing customers and can be redeemed to receive a $20. Enter $20 Attapoll Referral Code {AOVCQ} at checkout. Enjoy $20Welcome Bonus. Use the best Attapoll referral code $20 (AOVCQ) to get up to $20 first time survey as a new user. Complete the survey and get $20 credited on your Attapoll account. Plus, refer your friend to earn 10% commission on their earning If you're on the hunt for a little extra cash or some cool rewards without too much hassle, you've landed in the right place. Today, we're diving into the world of Attapoll referral codes, a nifty way to boost your earnings while taking surveys. Use this Attapoll Referral Link or code {{AOVCQ}} to get a $20 sign up bonus.
    • Yes, Attapoll offers a $20 Sign-up bonus for new users using a code (AOVCQ). Enter the Attapoll Referral Code “AOVCQ” and submit. Yes, Attapoll offers $20 Referral Code {AOVCQ} For New Customers. If you are who wish to join Attapoll, then you should use this exclusive Attapoll referral code $20 Signup Bonus Use this Code (AOVCQ) and get $20 Welcome Bonus. You can get a $20 Signup bonus use this referral code {AOVCQ}. You can get a $20 Attpoll Referral Code {AOVCQ}. This Attapoll $20 Referral code is specifically for existing customers and can be redeemed to receive a $20. Enter $20 Attapoll Referral Code {AOVCQ} at checkout. Enjoy $20Welcome Bonus. Use the best Attapoll referral code $20 (AOVCQ) to get up to $20 first time survey as a new user. Complete the survey and get $20 credited on your Attapoll account. Plus, refer your friend to earn 10% commission on their earning If you're on the hunt for a little extra cash or some cool rewards without too much hassle, you've landed in the right place. Today, we're diving into the world of Attapoll referral codes, a nifty way to boost your earnings while taking surveys. Use this Attapoll Referral Link or code {{AOVCQ}} to get a $20 sign up bonus.
    • Yes, Attapoll offers a $20 Sign-up bonus for new users using a code (AOVCQ). Enter the Attapoll Referral Code “AOVCQ” and submit. Yes, Attapoll offers $20 Referral Code {AOVCQ} For New Customers. If you are who wish to join Attapoll, then you should use this exclusive Attapoll referral code $20 Signup Bonus Use this Code (AOVCQ) and get $20 Welcome Bonus. You can get a $20 Signup bonus use this referral code {AOVCQ}. You can get a $20 Attpoll Referral Code {AOVCQ}. This Attapoll $20 Referral code is specifically for existing customers and can be redeemed to receive a $20. Enter $20 Attapoll Referral Code {AOVCQ} at checkout. Enjoy $20Welcome Bonus. Use the best Attapoll referral code $20 (AOVCQ) to get up to $20 first time survey as a new user. Complete the survey and get $20 credited on your Attapoll account. Plus, refer your friend to earn 10% commission on their earning If you're on the hunt for a little extra cash or some cool rewards without too much hassle, you've landed in the right place. Today, we're diving into the world of Attapoll referral codes, a nifty way to boost your earnings while taking surveys. Use this Attapoll Referral Link or code {{AOVCQ}} to get a $20 sign up bonus.
  • Topics

  • Who's Online (See full list)

    • There are no registered users currently online
×
×
  • Create New...

Important Information

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