Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

1.12.2 - Info bar above inventory bar completely artifacted


Frontear
 Share

Recommended Posts

I have isolated the issue in the following line of code:

Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(etc)

 

I'm extremely confused as to why it's artifacting the xp bar, health bar, food bar and armour bar. Here's a portion of my code:

// the main code
public void postInit(FMLPostInitializationEvent event) {
    MinecraftForge.EVENT_BUS.register(new MyMod());
}

// MyMod class
public uiCreator;
public MyMod() {
    uiCreator = new UICreator();
}

@SubscribeEvent
public void onGui(RenderGameOverlayEvent event) {
    uiCreator.Create();
}

// UICreator class
public void Create() {
    Minecraft.getMinecraft().fontRenderer.drawStringWithShadow("MyMod", 2, 2, 0xffffff);
}

 

Effectively, the line which is causing the artifacting is `Minecraft.getMinecraft().fontRenderer.drawStringWithShadow("MyMod", 2, 2, 0xffffff);`. I don't understand why. I'm certain it's this line, as removing/commenting out any other portions of code do not fix the artifacting until I comment this line out. I'm extremely confused as to why this is occuring. If anyone has any form of insight, I'd greatly appreciate it

Image of the Artifacting bar

I am a human and this action was performed manually. Please contact Frontear if you have any questions or concerns.

Link to comment
Share on other sites

7 minutes ago, Frontear said:

RenderGameOverlayEvent

RenderGameOverlayEvent gets called once per HUD element. It is called once for health, once for hunger, once for experience, etc. It is additionally called twice with Pre and Post subclasses. You need to 

  1. Subscribe to either Pre or Post instead of the parent event class
  2. Check whether the HUD type the event is fired for is the desired for your case. Otherwise you are drawing your text many times over which is not good for performance.

As for the "artifacting" issue:

When the game renders the HUD it binds the HUD texture once before drawing it. Rendering any text however binds a corresponding font texture. Since you are rendering in the middle of HUD rendering the font texture stays bound and is used to draw the rest of the HUD which leads to incorrect things being drawn. You need to either draw before/after all the HUD or rebind the HUD texture back.

Link to comment
Share on other sites

Thank you for your response, however the hunger bar continues to be artifacted with Post. I'll try Pre and reupdate this comment. If I use Pre, everything will once again be artifacted, as you said, since it uses a different texture. Post will also artifact the hunger bar still.

 

Edit: I've solved the issue by checking `event.getType()`. Thank you!

 

Edited by Frontear

I am a human and this action was performed manually. Please contact Frontear if you have any questions or concerns.

Link to comment
Share on other sites

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
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.

 Share



×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.