Posted July 31, 201312 yr 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
August 1, 201312 yr 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 */); } }
August 1, 201312 yr 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!
August 1, 201312 yr 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
August 1, 201312 yr Considering your latest piece of code, you are on client side, so use only client ticks.
August 1, 201312 yr 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.