BlakeBr0 / IronJetpacks

Adds fully customizable FE powered jetpacks!
https://blakesmods.com/iron-jetpacks
MIT License
13 stars 21 forks source link

[1.19] HUD renders many times per frame, dramatically reducing performance #65

Closed LuminaSapphira closed 1 year ago

LuminaSapphira commented 1 year ago

The check for the appropriate overlay appears to have been removed when updating to 1.19: https://github.com/BlakeBr0/IronJetpacks/blob/9fb935d3a3926301bd264d9395ac34c7bff30998/src/main/java/com/blakebr0/ironjetpacks/handler/HudHandler.java#L23-L25

This causes the overlay to render many times, which according to a Spark report, causes a large performance hit. I was able to confirm that checking for the overlay does improve performance (sample code below). However, the more appropriate solution would likely be to use Forge's register gui overlay event to create your own overlay to render from, rather than using the Forge event bus. See net.minecraftforge.client.event.RegisterGuiOverlaysEvent for more information on that.


Sample checking code to quickfix:

private NamedGuiOverlay overlay = null;
@SubscribeEvent
public void onRenderGameOverlay(RenderGuiOverlayEvent.Post event) {
if (overlay == null) {
overlay = GuiOverlayManager.findOverlay(new ResourceLocation("minecraft", "armor_level"));
} else {
if (overlay != event.getOverlay()) return;
}
// .....