Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Links
Creators
Details
Minecraft Flex UI
For ordinary players do not download the mod
In most cases the module is used by other module developers and is included in their mod Jar package
Description
Based on facebook open source Yoga layout engine implements the Minecraft GUI framework based on the Flex layout.
A subset of the Flex standard is implemented on top of Yoga and most of the CSS properties are implemented as well.
The design concept of MVC is adopted to realize the one-way and two-way data binding.
Developers can design and implement complex UI interfaces on top of this, and this project can be used as Yoga engine embedded in the game as a non-exhaustive reference implementation of the game layout engine.
Example

public class WidgetTestScreen extends WidgetScreen {
protected StringBuilderObservable text = new StringBuilderObservable();
public WidgetTestScreen() {
super(Text.of("test"));
}
@Override
public void widget(ScreenWidget root) {
root.flexDirection.set(WidgetFlexDirection.Row)
.justifyContent.set(WidgetJustify.Center)
.alignItems.set(WidgetAlign.Center)
.child(new BoxWidget()
.background.set(RectDrawable.LIGHT_PANEL)
.child(new LabelWidget()
.text.binding(text.computed((StringBuilderObservable text) -> Text.of(text.getString())))
.margin(WidgetEdge.All, 4))
.child(new TextBoxWidget()
.text.binding(text))
.child(new ButtonWidget()
.click.on((mouse) -> close())
.child(new LabelWidget()
.text.set(Text.of("取消"))))
);
}
}
Data Binding
By default all bindings from non-computed binding sources are bi-directional bindings.
Setting values for
computed binding sourcesis ignored
But most components will only operate one-way on bound values

