Getting Started
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, and uses the builder pattern for building GUI elements. Elements are automatically layed out according to their constraints like min/max dimensions.
Quick Start
Section titled “Quick Start”-
Include my maven in the
repositoriesblock of your build file:build.gradle repositories {maven {name "Chai's Maven"url "https://codeberg.org/api/packages/chai/maven"}}build.gradle.kts repositories {maven("https://codeberg.org/api/packages/chai/maven") {name = "Chai's Maven"}} -
Declare the dependency in your
dependenciesblock:build.gradle dependencies {modImplementation "dev.chailotl:bento-gui:${project.bento_gui_version}"} -
Add the version you want to use in your
gradle.propertiesfile:gradle.properties bento_gui_version=0.1.0+1.21
Practical example
Section titled “Practical example”Here is a practical example of how you might use Bento GUI’s elements in a Minecraft screen.
@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) .displayAxis(Panel.DisplayAxis.HORIZONTAL) .build();
root.addChild(title); root.addChild(body); root.addChild(footer);
// Add elements to footer TextField<String> searchField = TextField.ofString() .palceholder(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); }}