From ade8f2789b092e4b7112b5f89d0133c3f4a8cb09 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 1 May 2023 21:23:10 -0400 Subject: [PATCH] Fix screen open firing too soon --- .../embeddedt/modernfix/ModernFixClientFabric.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/fabric/src/main/java/org/embeddedt/modernfix/ModernFixClientFabric.java b/fabric/src/main/java/org/embeddedt/modernfix/ModernFixClientFabric.java index a73a29a2..41254e49 100644 --- a/fabric/src/main/java/org/embeddedt/modernfix/ModernFixClientFabric.java +++ b/fabric/src/main/java/org/embeddedt/modernfix/ModernFixClientFabric.java @@ -4,6 +4,9 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; +import net.minecraft.client.Minecraft; + +import java.util.concurrent.atomic.AtomicBoolean; public class ModernFixClientFabric implements ClientModInitializer { public static ModernFixClient commonMod; @@ -13,7 +16,16 @@ public class ModernFixClientFabric implements ClientModInitializer { commonMod = new ModernFixClient(); ClientTickEvents.END_CLIENT_TICK.register((mc) -> commonMod.onRenderTickEnd()); - ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> commonMod.onScreenOpening(screen)); + ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> { + AtomicBoolean hasOpened = new AtomicBoolean(false); + ScreenEvents.beforeTick(screen).register(screen1 -> { + if(Minecraft.getInstance().overlay != null) + return; + if(!hasOpened.getAndSet(true)) { + commonMod.onScreenOpening(screen1); + } + }); + }); ServerLifecycleEvents.SERVER_STARTED.register(server -> { commonMod.onServerStarted(server); });