一.先创建一个Item用于打开菜单

public class GuiItem extends Item {
    public GuiItem() {
        super(new Properties());
    }

    @Override
    public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand usedHand) {
        if(level.isClientSide){
            FirstGui.openFirstGui();
        }
        return super.use(level, player, usedHand);
    }
}

记得注册Item

public static final Supplier<Item> GUI_ITEM=ITEMS.register("gui_item", GuiItem::new);

二.实现我们的Screen

public class FirstGui extends Screen {
    public FirstGui(Component component) {
        super(component);
    }
    EditBox editBox;
    Button button;
    ResourceLocation FIRST_GUI_TEXTURE = new ResourceLocation(TestMod.MODID, "textures/gui/first_gui.png");
    Component content = Component.translatable("gui." + TestMod.MODID + ".first_gui_title");
    ExtendedSlider sliderBar;

    @Override
    protected void init() {
        this.editBox = new EditBox(this.font, this.width / 2 - 100, 66, 200, 20, Component.translatable("gui." + TestMod.MODID + ".first_gui"));
        this.addWidget(this.editBox);
        this.button = new Button.Builder(
                Component.translatable("gui." + TestMod.MODID + ".first_gui.save"),
                pButton -> {}).pos(this.width / 2 - 40, 96).size(80, 20).build();
        this.addWidget(this.button);
        this.sliderBar = new ExtendedSlider(
                        this.width / 2 - 100,
                        120,
                        200,
                        10,
                        Component.translatable("gui." + TestMod.MODID + ".first_gui.slider"),
                        Component.empty(), 0, 100, 0, true);
        this.addWidget(this.sliderBar);
        super.init();
    }
    @Override
    public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
        this.renderBackground(guiGraphics, mouseX, mouseY, partialTick);
        guiGraphics.setColor(1, 1, 1, 1);
        int textureWidth = 208;
        int textureHeight = 156;
        guiGraphics.blit(FIRST_GUI_TEXTURE, this.width / 2 - 150, 10, 0, 0, 300, 200, textureWidth, textureHeight);
        guiGraphics.drawCenteredString(this.font, content, this.width / 2 - 10, 30, 0xeb0505);
        this.editBox.render(guiGraphics, mouseX, mouseY, partialTick);
        this.button.render(guiGraphics, mouseX, mouseY, partialTick);
        this.sliderBar.render(guiGraphics, mouseX, mouseY, partialTick);
        super.render(guiGraphics, mouseX, mouseY, partialTick);
    }
    public static void openFirstGui(){
        Minecraft.getInstance().setScreen(new FirstGui(Component.translatable("test")));
    }
}