Custom GUI
Warning
Not available for LabyMod 4! Only available for LabyMod 3 users with version greater than 3.8.25
Overview
With this feature it is possible to create a custom user interface. We provide a collection of GUI components you can use.
Requirements
- LabyMod API (or use the Protocol without the API)
- Widgets
Example GUI
Open the GUI
public void openGUI( Player player ) {
// Create new screen
WidgetScreen screen = new WidgetScreen(42); // The client will send this id back on an interaction
// Centered anchor
Anchor anchor = new Anchor(50, 50); // X: 50% Y: 50%
// Button
ButtonWidget button = new ButtonWidget(1337, anchor, -50, 20, "Apply", 100, 20);
button.setCloseScreenOnClick(true);
screen.addWidget(button);
// Text field
screen.addWidget(new TextFieldWidget(1, anchor, -100, -5, "", 200, 20, "Name...", 16, true));
// Label
screen.addWidget(new LabelWidget(2, anchor, -100, -20, "Name of your pet", 0, 1));
// Color picker
ColorPickerWidget colorPicker = new ColorPickerWidget(3, anchor, 110, -5, 20, 20, "Pet color", Color.RED);
colorPicker.setRgb(true);
screen.addWidget(colorPicker);
// Image banner
screen.addWidget(new ImageWidget(4, anchor, -50, -80, 100, 20, "https://www.labymod.net/page/tpl/assets/images/logo.png"));
// Serialize widgets
JsonObject object = screen.toJsonObject(EnumScreenAction.OPEN); // OPEN = Open the screen
// Send the json object to LabyMod
LabyModProtocol.sendLabyModMessage( player, "screen", object );
}
All possible screen action
ids:
public enum EnumScreenAction {
OPEN, // Action id 0 - Open a new screen
UPDATE, // Action id 1 - Update the current screen
CLOSE, // Action id 2 - Force close the current screen and display the previous screen of the user
WRAP_INVENTORY; // Action id 3 - Wrap a Minecraft Inventory
}
Interaction response
The client will send the following response with the screen
key after closing the GUI:
{
"id": 42,
"type": 0,
"states": {
"1": {
"value": "Content of the text field..."
},
"3": {
"color": "#ff0000"
}
}
}
Widget interaction response (Example shows an interaction with the button):
Thewidget_id
is the id of the interacted widget. The states
object contains all values of the widget like color, text field value..Response types: ("type"
)
public enum EnumResponse {
CLOSE, // Type id 0 - Sent when the player closes the GUI
INTERACT // Type id 1 - Sent when the players interact with a widget
}