У меня есть файлы и код:

ExampleMod.java

package com.example.examplemod;

import com.example.examplemod.util.ModEvents;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;

@Mod("examplemod")
public class ExampleMod {
    public ExampleMod() {
        MinecraftForge.EVENT_BUS.register(new ModEvents());
    }
}

ModEvents.java

package com.example.examplemod.util;

import com.example.examplemod.client.GoreeGui;
import net.minecraft.client.Minecraft;
import net.minecraft.client.util.InputMappings;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import org.lwjgl.glfw.GLFW;

@Mod.EventBusSubscriber(modid = "examplemod", value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE)
public class ModEvents {

    @SubscribeEvent
    public void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) {
        if (event.getPlayer() instanceof ServerPlayerEntity) {
            ServerPlayerEntity player = (ServerPlayerEntity) event.getPlayer();
            player.sendMessage(new StringTextComponent("Мод написан Goree"), player.getUUID());
        }
    }

    @SubscribeEvent
    public static void onKeyInput(InputEvent.KeyInputEvent event) {
        Minecraft mc = Minecraft.getInstance();
        long window = mc.getWindow().getWindow();

        if (InputMappings.isKeyDown(window, GLFW.GLFW_KEY_RIGHT_SHIFT) && event.getAction() == GLFW.GLFW_PRESS) {
            mc.setScreen(new GoreeGui());
        }
    }
}

HudOverlay.java

package com.example.examplemod.client;

import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.FontRenderer;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;

@Mod.EventBusSubscriber(modid = "examplemod", value = Dist.CLIENT)
public class HudOverlay {

    private static final String TEXT = "Goree | Version: 0.1";

    @SubscribeEvent
    public static void onRenderOverlay(RenderGameOverlayEvent.Text event) {
        Minecraft mc = Minecraft.getInstance();
        FontRenderer font = mc.font;
        MatrixStack stack = event.getMatrixStack();

        int x = 5;
        int y = 5;
        int padding = 4;
        int textWidth = font.width(TEXT);
        int boxWidth = textWidth + padding * 2;
        int boxHeight = font.lineHeight + padding * 2;

        fill(stack, x - 2, y - 2, x + boxWidth, y + boxHeight, 0x90000000);
        font.draw(stack, TEXT, x + padding, y + padding, 0xFFFFFF);
    }

    private static void fill(MatrixStack stack, int x1, int y1, int x2, int y2, int color) {
        AbstractGui.fill(stack, x1, y1, x2, y2, color);
    }
}


GoreeGui.java

package com.example.examplemod.client;

import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.text.StringTextComponent;

import org.lwjgl.glfw.GLFW;

import java.util.ArrayList;
import java.util.List;

public class GoreeGui extends Screen {

    private class DraggableTab {
        String title;
        int x, y, width, height;
        boolean dragging = false;
        boolean visible = true;

        public DraggableTab(String title, int x, int y, int width, int height) {
            this.title = title;
            this.x = x;
            this.y = y;
            this.width = width;
            this.height = height;
        }

        public boolean isHovered(double mx, double my) {
            return mx >= x && mx <= x + width && my >= y && my <= y + 20;
        }

        public void render(MatrixStack stack, int mouseX, int mouseY) {
            if (!visible) return;

            fill(stack, x, y, x + width, y + height, 0xAA000000); // Темный фон с прозрачностью
            drawCenteredString(stack, font, title, x + width / 2, y + 6, 0xFFFFFF);

            // Контент вкладки
            if (title.equals("Exploits")) {
                drawString(stack, font, " - Скопировать данные сервера", x + 8, y + 30, 0xAAAAAA);
            } else if (title.equals("Server")) {
                drawString(stack, font, " - Состояние сервера", x + 8, y + 30, 0xAAAAAA);
            } else if (title.equals("Options")) {
                drawString(stack, font, " - Настройки модов", x + 8, y + 30, 0xAAAAAA);
            }
        }
    }

    private final List<DraggableTab> tabs = new ArrayList<>();
    private DraggableTab activeTab = null;
    private int dragOffsetX = 0, dragOffsetY = 0;

    public GoreeGui() {
        super(new StringTextComponent("Goree GUI"));
    }

    @Override
    protected void init() {
        tabs.clear();
        tabs.add(new DraggableTab("Exploits", this.width / 2 - 80, this.height / 2 - 50, 160, 100));
        tabs.add(new DraggableTab("Server", this.width / 2 - 80, this.height / 2, 160, 100));
        tabs.add(new DraggableTab("Options", this.width / 2 - 80, this.height / 2 + 50, 160, 100));
    }

    @Override
    public void render(MatrixStack stack, int mouseX, int mouseY, float partialTicks) {
        this.renderBackground(stack);
        for (DraggableTab tab : tabs) {
            tab.render(stack, mouseX, mouseY);
        }
        super.render(stack, mouseX, mouseY, partialTicks);
    }

    @Override
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        for (DraggableTab tab : tabs) {
            if (tab.isHovered(mouseX, mouseY)) {
                if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
                    activeTab = tab;
                    tab.dragging = true;
                    dragOffsetX = (int) mouseX - tab.x;
                    dragOffsetY = (int) mouseY - tab.y;
                } else if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) {
                    tab.visible = !tab.visible;
                }
                return true;
            }
        }
        return super.mouseClicked(mouseX, mouseY, button);
    }

    @Override
    public boolean mouseReleased(double mouseX, double mouseY, int button) {
        if (activeTab != null && button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
            activeTab.dragging = false;
            activeTab = null;
        }
        return super.mouseReleased(mouseX, mouseY, button);
    }

    @Override
    public boolean mouseDragged(double mouseX, double mouseY, int button, double dx, double dy) {
        if (activeTab != null && activeTab.dragging) {
            activeTab.x = (int) mouseX - dragOffsetX;
            activeTab.y = (int) mouseY - dragOffsetY;
        }
        return super.mouseDragged(mouseX, mouseY, button, dx, dy);
    }

    @Override
    public boolean isPauseScreen() {
        return false;
    }
}


Посмотри код и напиши ХОРОШО Я ГЛЯНУЛ