Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Hello,

 

Like the subject says, I'm working on a mod and it consists in modifying a GUI, the pause menu one, rearranging it, adding more buttons as well as some other features like a clock, for example. I used to modify the base class for it as jar modification was still a thing. Now to install a mod that requires jar modification (e.g. optifine currently) is a lot of work and I would like to use Forge to make things easier.

 

I have everything set except for the fact that I can't figure out how to override the GUI. The call to it is inside Minecraft.java and is somewhat hardcoded seeing that the 'Esc' key isn't really a keybind, the check if the Esc key is pressed is made there and, if so, display the screen.

 

I wanted to know if there is a way to override that call, for example, instead of instantiating GuiIngameMenu, instantiate Gui<nameOfMenu> or through events. Maybe catching the event for opening the GUI and when it occurs, close and open the one to override the original with. Or even pulling a key event and if the player was ingame and pressed the esc key, open the GUI.

 

I've been fiddling with this for a while and I can't seem to figure out a solution, could someone please help?

 

Thanks for your time,

 

~RGCV

Make a new class with a tickhandler

do something like this

@Override
    public void tickStart(EnumSet<TickType> type, Object... tickData) {
        Minecraft mc = Minecraft.getMinecraft();
        if (mc.currentScreen instanceof GuiIngameMenu) {
            mc.displayGuiScreen(/* Whatever GUI you want */);
        }
    }

  • Author

Make a new class with a tickhandler

do something like this

@Override
    public void tickStart(EnumSet<TickType> type, Object... tickData) {
        Minecraft mc = Minecraft.getMinecraft();
        if (mc.currentScreen instanceof GuiIngameMenu) {
            mc.displayGuiScreen(/* Whatever GUI you want */);
        }
    }

 

I actually was expecting that to work but it doesn't. I've created a TickHandler class that implements the ITickHandler interface, took care of the overriding in there and registered in my Mod's class. As soon as I open the GUI, nothing happens, or should I say, the same GUI is still opening, not being overriden :\

 

I don't know why it doesn't work when I guess it should.

 

Thank you anyways!

  • Author

Oh, nevermind, it worked, I took a better look in ITickHandler and actually noticed the ticks() method. Currently returning the tick types for client, world and server. If I'm doing something wrong, please don't hesitate on posting... Or killing me for being stupid.

 

Thanks for the help,

 

~RGCV

  • Author

Considering your latest piece of code, you are on client side, so use only client ticks.

 

I figured as much but I was unsure, thank you for clarifying :)

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

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.