BukkitSmerf Posted September 22, 2013 Posted September 22, 2013 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? Quote
Alix_The_Alicorn Posted September 23, 2013 Posted September 23, 2013 Post your code and screenshots of whats wrong Quote
BukkitSmerf Posted September 24, 2013 Author Posted September 24, 2013 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 ;/ Quote
Draco18s Posted September 24, 2013 Posted September 24, 2013 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); Quote 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.
BukkitSmerf Posted September 24, 2013 Author Posted September 24, 2013 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 that also removing alpha. I have just white GUI I also trying change a few things etc..... but I don't find anything good ;/ Still this same or worse Quote
Glenn Posted September 24, 2013 Posted September 24, 2013 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. Quote http://i.imgur.com/YOLa0KX.png[/img]
BukkitSmerf Posted September 29, 2013 Author Posted September 29, 2013 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 THANKS , that fixed all problems. Quote
coolAlias Posted September 29, 2013 Posted September 29, 2013 Just wanted to say thanks to both Glenn and Draco18s - the two posts together is just what I needed to polish off a gui I've been working on. Quote http://i.imgur.com/NdrFdld.png[/img]
Recommended Posts
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.