Skip to main content
Version: 26.2

Client GUI Events

dev.architectury.event.events.client.ClientGuiEvent

Hooks for rendering the in-game HUD and for initializing, rendering, and replacing screens.

Events

EventListener methodReturns
RENDER_HUDrenderHud(GuiGraphicsExtractor graphics, DeltaTracker)void - draw on top of the in-game HUD.
INIT_PREinit(Screen, ScreenAccess)EventResult - interrupt to cancel vanilla init.
INIT_POSTinit(Screen, ScreenAccess)void - after a screen initialized.
RENDER_PRErender(Screen, GuiGraphicsExtractor, int mouseX, int mouseY, float delta)EventResult - interrupt to cancel vanilla render.
RENDER_POSTrender(Screen, GuiGraphicsExtractor, int mouseX, int mouseY, float delta)void - after a screen rendered.
RENDER_CONTAINER_BACKGROUNDrender(AbstractContainerScreen, GuiGraphicsExtractor, int, int, float)void
RENDER_CONTAINER_FOREGROUNDrender(AbstractContainerScreen, GuiGraphicsExtractor, int, int, float)void
SET_SCREENmodifyScreen(Screen)CompoundEventResult<Screen> - replace the screen about to open.

The render events give you a GuiGraphicsExtractor - the drawing context, with methods like pose(), fill(...), and text(font, component, x, y, color). The ScreenAccess passed to the INIT events lets you add or remove widgets on the screen - see Screen Hooks.

Examples

Draw something over the HUD:

ClientGuiEvent.RENDER_HUD.register((graphics, deltaTracker) -> {
Font font = Minecraft.getInstance().font;
graphics.text(font, Component.literal("Hello HUD"), 4, 4, 0xFFFFFFFF);
});

Swap one screen for your own when it would open:

ClientGuiEvent.SET_SCREEN.register(screen -> {
if (screen instanceof PauseScreen) {
return CompoundEventResult.interruptTrue(new MyCustomScreen());
}
return CompoundEventResult.pass();
});