Code Patterns

Copy-paste examples for common plugin tasks. Commands, events, ECS, GUI, and more.

← Back to Patterns
gui

UI Dropdown

Create dropdown menus in custom UI with selectable options.

Example Code

java
@Override
public void build(Ref<EntityStore> ref, UICommandBuilder ui, UIEventBuilder events, Store<EntityStore> store) {
    ui.append("Pages/MyPage.ui");

    // Create dropdown entries
    List<DropdownEntryInfo> gamemodes = Arrays.stream(GameMode.values())
        .map(mode -> new DropdownEntryInfo(
            LocalizableString.fromString(mode.name()),
            mode.name()
        ))
        .collect(Collectors.toList());

    // Set dropdown entries and current value
    ui.set("#GamemodeDropdown.Entries", gamemodes);
    ui.set("#GamemodeDropdown.Value", player.getGameMode().name());

    // Bind value change event
    events.addEventBinding(
        CustomUIEventBindingType.ValueChanged,
        "#GamemodeDropdown",
        EventData.of("Action", "ChangeGamemode")
                .append("@SelectedValue", "#GamemodeDropdown.Value"),
        false
    );
}

@Override
public void handleDataEvent(Ref<EntityStore> ref, Store<EntityStore> store, GuiData data) {
    if ("ChangeGamemode".equals(data.action)) {
        GameMode mode = GameMode.valueOf(data.selectedValue);
        Player.setGameMode(ref, mode, store);
    }
}

Common Mistakes

Forgetting to set .Entries before .Value. Using wrong event type for dropdowns.