Jump to content

[SOLVED] GuiOpenEvent fires twice for GuiGameOver


bomber055

Recommended Posts

First off, this is most likely a Minecraft issue and not a Forge bug.

 

I am registered to receive the GuiOpenEvent in one of my classes and noticed that it gets fired twice for GuiGameOver. Once when the GUI is first opened (expected) and again when it is closed by clicking the "Respawn" button (unexpected). At first I thought it may be because the GuiGameOver screen creates a 2nd new screen, GuiYesNo, after clicking the "Title screen" button but in both cases event.gui.toString() is still "net.minecraft.client.gui.GuiGameOver".

 

To reproduce this, simply get to the death screen by typing "/kill" and notice that the GuiOpenEvent fires twice.

 

I am using Forge 1.8-11.14.0.1261.

Link to comment
Share on other sites

1st stacktrace (after "/kill" is executed):

 

 

Thread [Client thread] (Suspended (breakpoint at line 112 in Coordinates))

Coordinates.GuiOpenEvent(GuiOpenEvent) line: 112

ASMEventHandler_14_Coordinates_GuiOpenEvent_GuiOpenEvent.invoke(Event) line: not available

ASMEventHandler.invoke(Event) line: 55

EventBus.post(Event) line: 138

Minecraft.displayGuiScreen(GuiScreen) line: 906

Minecraft.runTick() line: 1639

Minecraft.runGameLoop() line: 1022

Minecraft.run() line: 345

Main.main(String[]) line: 117

NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]

NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available

DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available

Method.invoke(Object, Object...) line: not available

Launch.launch(String[]) line: 135

Launch.main(String[]) line: 28

GradleStart(GradleStartCommon).launch(String[]) line: 78

GradleStart.main(String[]) line: 45

 

 

 

 

2nd stacktrace (after "Respawn" is clicked)

 

 

Thread [Client thread] (Suspended (breakpoint at line 112 in Coordinates))

Coordinates.GuiOpenEvent(GuiOpenEvent) line: 112

ASMEventHandler_14_Coordinates_GuiOpenEvent_GuiOpenEvent.invoke(Event) line: not available

ASMEventHandler.invoke(Event) line: 55

EventBus.post(Event) line: 138

Minecraft.displayGuiScreen(GuiScreen) line: 906

GuiGameOver.actionPerformed(GuiButton) line: 61

GuiGameOver(GuiScreen).mouseClicked(int, int, int) line: 472

GuiGameOver(GuiScreen).handleMouseInput() line: 544

GuiGameOver(GuiScreen).handleInput() line: 516

Minecraft.runTick() line: 1663

Minecraft.runGameLoop() line: 1022

Minecraft.run() line: 345

Main.main(String[]) line: 117

NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]

NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available

DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available

Method.invoke(Object, Object...) line: not available

Launch.launch(String[]) line: 135

Launch.main(String[]) line: 28

GradleStart(GradleStartCommon).launch(String[]) line: 78

GradleStart.main(String[]) line: 45

 

 

 

 

Sure enough, when "Respawn" is clicked, Minecraft decides it wants to open a new null screen, which the game then interprets as a GuiGameOver because the player has <= 0 health. So it is just an unintended side effect of some bad coding from Mojang.

 

I used this to my advantage by using the following logic:

if(mc.currentScreen != null)
{
//"Respawn" is clicked
}
else
{
//GuiGameOver is initially displayed
}

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