Skip to main content
The GuiUtil interface provides helper functions for safely interacting with Minecraft’s GUI system.

Getting GuiUtil

val guiUtil = EssentialAPI.getGuiUtil()
GuiUtil guiUtil = EssentialAPI.getGuiUtil();

Opening screens

openScreen()

Queue a new screen for opening. This API ensures the GUI is displayed synchronously, avoiding mouse glitches and rendering issues.
val myScreen = MyCustomScreen()
guiUtil.openScreen(myScreen)
GuiScreen myScreen = new MyCustomScreen();
guiUtil.openScreen(myScreen);
screen
GuiScreen?
required
The screen to open, or null to close the current screen
Always use guiUtil.openScreen() instead of directly setting Minecraft.currentScreen to avoid timing issues and mouse glitches.

Getting current screen

openedScreen()

Get the currently open screen, or null if no screen is open.
val currentScreen = guiUtil.openedScreen()
if (currentScreen != null) {
    println("Current screen: ${currentScreen.javaClass.simpleName}")
}
GuiScreen currentScreen = guiUtil.openedScreen();
if (currentScreen != null) {
    System.out.println("Current screen: " + currentScreen.getClass().getSimpleName());
}

GUI scale

getGuiScale()

Get the current Minecraft GUI scale setting.
val scale = guiUtil.getGuiScale()
// Returns -1 for auto, or positive integer for manual scale (1-4)
int scale = guiUtil.getGuiScale();
// Returns -1 for auto, or positive integer for manual scale (1-4)

getGuiScale(step)

Get the GUI scale with a specific step value.
val scale = guiUtil.getGuiScale(2)
int scale = guiUtil.getGuiScale(2);
step
Int
required
The step value for scale calculation

Static helpers

The GuiUtil companion object provides convenient static methods:
// Open a screen
GuiUtil.open(myScreen)

// Get current screen
val screen = GuiUtil.getOpenedScreen()
// Open a screen
GuiUtil.open(myScreen);

// Get current screen
GuiScreen screen = GuiUtil.getOpenedScreen();

Example: Safe screen navigation

import gg.essential.api.EssentialAPI
import net.minecraft.client.gui.GuiScreen

class MyMod {
    fun openSettings() {
        val guiUtil = EssentialAPI.getGuiUtil()
        
        // Check if a screen is already open
        val currentScreen = guiUtil.openedScreen()
        if (currentScreen != null) {
            println("A screen is already open, closing it first")
        }
        
        // Open settings screen safely
        guiUtil.openScreen(SettingsScreen())
    }
}

See also

Source: api/src/main/kotlin/gg/essential/api/utils/GuiUtil.kt

Build docs developers (and LLMs) love