Skip to content
Bento GUI

Quick rating

Community listing page, reviews may not be monitored by the author.

Bento GUI

By ChaiOwner

No reviews yet

The expressive GUI library from Bento Box

Mod Loaders
Minecraft

About

Description

Bento GUI

Bento GUI is an expressive GUI library that makes building dynamic screens fast and easy. It is a replacement for Minecraft’s UI widgets that is inspired by HTML and CSS.

Features:

Bento GUI is documented in-code with JavaDocs and on my wiki.

@Environment(EnvType.CLIENT)
public class MyScreen extends Screen {
   public MyScreen() {
      super(Text.literal("My Screen"));
   }

   @Override
   protected void init() {
      Window window = client.getWindow();
      int width = window.getScaledWidth();
      int height = window.getScaledHeight();

      // The root panel that will contain everything
      Panel root = Panel.builder()
         .dimensions(width, height)
         .spacing(1)
         .build();

      // Add elements to root
      Label title = Label.builder()
         .text(Text.literal("My Screen"))
         .dimensions(true, 32)
         .build();
      ScrollPanel body = ScrollPanel.ofMenu()
         .dimensions(true, true)
         .alignCenter()
         .padding(10, 0)
         .spacing(10)
         .build();
      Panel footer = Panel.builder()
         .dimensions(true, 32)
         .alignCenter()
         .alignMiddle()
         .padding(20, 0)
         .spacing(8)
         .flowAxis(FlowAxis.HORIZONTAL)
         .build();

      root.addChild(title);
      root.addChild(body);
      root.addChild(footer);

      // Add elements to footer
      TextField<String> searchField = TextField.ofString()
         .placeholder(Text.literal("Search..."))
         .width(true)
         .maxWidth(200)
         .build();
      Button doneButton = Button.builder()
         .text(Text.literal("Done"))
         .onPress(self -> close())
         .build();

      footer.addChild(searchField);
      footer.addChild(doneButton);

      // Add root as drawable child
      addDrawableChild(root);
   }
}