Compatibility
Minecraft: Java Edition
Platforms
Supported environments
75% of ad revenue goes to creators
Support creators and Modrinth ad-free with Modrinth+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 sources
is ignored
But most components will only operate one-way
on bound values