Minecraft Flex UI

Implement a Flex layout-based Minecraft GUI framework based on facebook's open source Yoga layout engine.

255

Minecraft Flex UI

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

example

```java 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

ADS