Jump to content

[solved]Creating new GUI - Problem with alpha(transparency of my health bar)


Recommended Posts

Posted

I trying to create new health bar for my mod. But I can't use alpha ;/

I have my bars.png with transparency bar but in game that just normal color.

 

Anyone know how fix that?

 

 

PS: How to change maxHealth of player?

Posted

Post your code and screenshots of whats wrong

package ml.guis.events;

import java.util.Arrays;
import java.util.List;

import ml.Ml;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
import net.minecraftforge.event.EventPriority;
import net.minecraftforge.event.ForgeSubscribe;

import org.lwjgl.opengl.GL11;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class Event_RenderGameOverlayEvent extends Gui {
public Minecraft mc;

public Minecraft getMC() {
	return mc;
}

public Event_RenderGameOverlayEvent(Minecraft mc) {
	super();
	this.mc = mc;
}

private static final ResourceLocation texturepath = new ResourceLocation(
		Ml.modid, "textures/gui/bars.png");
private static final List<ElementType> BLOCKED_ELEMENT_TYPES = Arrays
		.asList(ElementType.ARMOR, ElementType.EXPERIENCE,
				ElementType.FOOD, ElementType.HEALTH,
				ElementType.HEALTHMOUNT, ElementType.AIR);

@ForgeSubscribe(priority = EventPriority.NORMAL)
public void onRender(RenderGameOverlayEvent event) {
	if (BLOCKED_ELEMENT_TYPES.contains(event.type)) {
		event.setCanceled(true);
		if (event.type == ElementType.EXPERIENCE) {
			EntityClientPlayerMP player = mc.thePlayer;

			/**
			 * HealthBar
			 */
			{
				int xPos = event.resolution.getScaledWidth() / 50;
				int yPos = event.resolution.getScaledHeight() - 32;
				GL11.glDisable(GL11.GL_LIGHTING);
				this.mc.renderEngine.bindTexture(texturepath);
				this.drawTexturedModalRect(xPos, yPos, 0,
						0, 223, 23);
				int healthscale = (int) (((float) player.getHealth() / player
						.getMaxHealth()) * 200);
				this.drawTexturedModalRect(xPos + 12,
						yPos + 4, 12, 25, healthscale, 16);
			}

			/**
			 * EnergyBar
			 */
			{
				int xPos = (event.resolution.getScaledWidth() - (event.resolution
						.getScaledWidth() / 50)) - 223;
				int yPos = event.resolution.getScaledHeight() - 32;
				// GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
				// GL11.glDisable(GL11.GL_LIGHTING);
				this.mc.renderEngine.bindTexture(texturepath);
				this.drawTexturedModalRect(xPos, yPos, 0, 0, 223, 23);
				int foodscale = (int) (((float) player.getFoodStats()
						.getFoodLevel() / 20) * 200);
				this.drawTexturedModalRect(xPos + 12, yPos + 4, 12, 25,
						foodscale, 16);
				return;
			}
		}
	}
}
}

http://images.tinypic.pl/i/00450/hopgekv4xev1.png

That red part have some transparency, but in game that just normal red ;/

 

GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

or any other value like

GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);

don't works good. (some part are still just red, but other have 100% Transparency)

 

 

PS: How about that max hp.

And that possible to scale that GUI in some resolutions? Becouse on small resolution like 1024 x 768 my bar is on hotbar. But in "normal" resolution like: 1280×720 or 1920×1080 is very small ;/

Posted

In the one GUI I've built, I've got these lines (and you dont):

 

                GL11.glDisable(GL11.GL_DEPTH_TEST);
                GL11.glDepthMask(false);
                GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
                GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                GL11.glDisable(GL11.GL_ALPHA_TEST);

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

In the one GUI I've built, I've got these lines (and you dont):

 

                GL11.glDisable(GL11.GL_DEPTH_TEST);
                GL11.glDepthMask(false);
                GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
                GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                GL11.glDisable(GL11.GL_ALPHA_TEST);

Nope O.o  that also removing alpha. I have just white GUI :P

I also trying change a few things etc..... but I don't find anything good ;/ Still this same or worse

Posted

Make sure belnding is enabled.

GL11.glEnable(GL11.GL_BLEND);

 

And to disable it afterwards:

GL11.glDisable(GL11.GL_BLEND);

 

It might be enabled by default, so I don't know what the problem is if this doesn't help.

sorry for no response I have much to do :P

THANKS :) , that fixed all problems.

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.

×
×
  • Create New...

Important Information

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