All Classes and Interfaces
Class
Description
What one backend serves (TODO.md 0.6, 5.3): per platform, the DataVersion range it was checked
against, plus the runtime names it is remapped to.
The backends a jar bundles, and which one serves a running game (TODO.md 5.3).
A push button, drawn as the version's vanilla button.
Builds a
Button; from Button.builder(String).A check box with its label to the right, like vanilla's
Checkbox (1.16+; older versions get an equivalent
drawing).Builds a
Checkbox; from Checkbox.builder(String).A color setting: a button "label: #RRGGBB" with a swatch of the color on it.
Builds a
ColorPicker; from ColorPicker.builder(String).A yes/no question on its own screen, drawn as the version's vanilla confirm screen (like "Delete world?").
Builds a
ConfirmDialog; from ConfirmDialog.builder(String).A button that steps through a fixed list of values, shown as "label: value" like vanilla's option buttons
(e.g.
Builds a
Cycle; from Cycle.builder(String).Picks one of a list of values, for lists too long to step through with a
Cycle: languages, biomes, profiles.Builds a
Dropdown; from Dropdown.builder(String).The options every entry builder has.
One method per entry type, for code that must handle every widget: a backend implements it to create the vanilla
widget for each entry, and the test fixture's
FakeHost to render and drive them.The fail-safe around every backend entry point (D9, TODO.md 9.1): Options screen hooks, opening the menu,
the mod list's config screen, a menu screen's init and drawing, and
GameBridge calls.Test switch for the fail-safe paths (D9): with
-Dxis_mvui.forceError=true every
backend hook that calls ForcedFailure.check(String) fails as if Minecraft had changed under it, so integration
tests can show that the game and sync keep working without the menu.The running game's options file, for menus that save or restore it (TODO.md §3.5): e.g.
A keyboard key or mouse button that a
Keybind can be set to, the same in every Minecraft version.Whether a
Key is a keyboard key or a mouse button.A key binding button, as on vanilla's Controls screen: "label: key".
Builds a
Keybind; from Keybind.builder(String).Read-only text on its own row: an explanation, a heading, or a value to show.
Builds a
Label; from Label.builder(String).The main screen type: a title, a vertical, scrolling list of
entries, and a row of footer entries at
the bottom (usually "Done").Builds a
MenuScreen; from MenuScreen.builder(String).Where backends run
UiHost.runAsync(Callable, BiConsumer) tasks: one daemon thread per mod, so a mod whose task hangs (store IO
waiting on another instance's file lock) holds up only its own menu.A text box of several lines, for notes, descriptions or lists the player types freely.
Builds a
MultiLineInput; from MultiLineInput.builder(String).Where mods register their menus with Xi's Multiversion UI Lib, and the static entry point of the API.
One successful
MultiversionUi.register(String, Text, ScreenFactory) call: a mod id, its display name and its guarded menu.What
MultiversionUi needs from the library's runtime (core, which implements it): the part that
knows the running game and its backend.A
TextInput for a number, optionally between a minimum and a maximum.What
GameBridge.reloadOptions() could not apply in the running game: the options that take effect only after
a restart.Something a
UiHost can open: exactly one of MenuScreen (a list of widgets) or
ConfirmDialog (a yes/no question).A mod's menu: builds the menu's first screen each time the player opens it.
A titled group of entries on a
MenuScreen.Builds a
Section; from Section.builder(String).A scrolling list of rows of text, at most one of them selected, like vanilla's world or server lists.
Builds a
SelectList; from SelectList.builder(String).One row of a
SelectList: an id the mod knows it by, and the text shown.A vanilla slider over a range of numbers, showing "label: value" on the slider itself, like vanilla's FOV or volume
sliders.
Builds a
Slider; from Slider.builder(String).A line the screen's actions write their results to, e.g.
Builds a
StatusLine; from StatusLine.builder(String).The severity of a message; backends pick its color from it (e.g.
Edits a list of unique strings, such as server addresses, item ids or ignored player names: a list of the items, a
text field for a new item, and Add and Remove buttons.
Builds a
StringListEditor; from StringListEditor.builder(String).A piece of user-visible text, independent of Minecraft's text classes (which differ between versions).
The editing logic of a
MultiLineInput box, for backends of versions without vanilla's
MultiLineEditBox (before 1.19.3, TODO.md Phase 11): text, cursor, word wrap, scrolling and the keys,
so such a backend only draws the box and feeds it input.One line as drawn:
text().substring(start, end), without its line break.A one-line text field with a label above it and an error line below it, like the name field of vanilla's
world-creation screen.
Builds a
TextInput; from TextInput.builder(String).An on/off setting, drawn as a vanilla button reading "label: ON" or "label: OFF" (
UiTexts.ON,
UiTexts.OFF), like the toggles on vanilla's options screens.Builds a
Toggle; from Toggle.builder(String).A backend's entry point: the class
BackendDescriptor.entryClassName() names, with a public no-argument
constructor.Shows a menu's screens and runs work for them.
The mod loader a backend serves (TODO.md 0.6).
Ready-made texts: the ones the widgets themselves need, and common button labels mods can reuse.