Skip to content
Minecraft Flex UI

Quick rating

Community listing page, reviews may not be monitored by the author.

Minecraft Flex UI

By moheng233Owner

No reviews yet

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

Mod Loaders
Minecraft

About

Description

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

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