?yogalayout
Угу, конечно. Лично я (и мой заказчик) очень любим.Стоит ли свеч ввод partialTicks в GUI API?
Запрос есть.есть ли запросы на порт для версий 1.16, 1.17 и 1.18?
Я не помню, что, но там что-то точно интересное сделали на 1.18. Можешь спросить у Саинта - он смотрел.Может, там наконец сделали layout'ы, кто знает.
У него уже есть биндинги для джавы под lwjgl3. В новых версиях майна без проблем можно подключить.я не хочу делать лишь порт yogalayout на джаву, да ещё и на Майнкрафт
Ждем вопросы на форуме типа: "Как центрироватьНу и такое позиционирование намного удобнее, так как похоже на веб.
Я так и не понял, про какое позиционирование речь? Конкретно.такое позиционирование
Ну вот завезу в 1.5. На самом деле это к вопросу об обработке ресайза, её ещё тщательно не тестировал. Без поддержки ресайза так-то раз плюнуть ввести такой пересчёт, можно даже тупо на уровне фабрик. А вот с ресайзом уже чуть более интеллектуально.Как центрироватьдивкнопку
Есть flex direction, flex wrap, aligment, паддинги всякие и тд. Максимально широкие и понятные возможности layout, которые так знакомы из веба.Я так и не понял, про какое позиционирование речь? Конкретно.
Существует. GList-vertical/horizontal.flex direction, flex wrap
Introduced in 1.5aligment
Технически, это и есть relative X/Y координаты, поддержано.паддинги
А для чего оно по вашему нужно?) Изначально-то это мой приватный инструмент. Странно, кстати, что в своё время я не смог нагуглить yogalayout - возможно, и правда напилил бы порт на 1.12.2 и на этом остановился. А сейчас там да - решить проблему с ресайзом, и будет стабильно работать во всех случаях.стабильно работать на любых размерах экрана
Бахаем такой код:aligment, паддинги всякие и тд.
@Override
public void initLayout() {
final int width = 300;
final int height = 300;
final GPanel<IGraphicsComponent> labels = Graphics.panel().size(width, height).placeAt(100, 100).build();
GBackground background;
labels.addComponent(background = Graphics.background().size(width, height).build());
labels.addComponent(Graphics
.label()
.text("Top", Color.WHITE.getRGB())
.placeAt(0, 0)
.alignment(Alignment.XCENTER, Alignment.TOP)
.padding(50, 50)
.build());
labels.addComponent(Graphics
.label()
.text("Bottom", Color.WHITE.getRGB())
.placeAt(0, 0)
.alignment(Alignment.XCENTER, Alignment.BOTTOM)
.padding(50, 50)
.build());
labels.addComponent(Graphics
.label()
.text("Left", Color.WHITE.getRGB())
.placeAt(0, 0)
.alignment(Alignment.LEFT, Alignment.YCENTER)
.padding(50, 50)
.build());
labels.addComponent(Graphics
.label()
.text("Right", Color.WHITE.getRGB())
.placeAt(0, 0)
.alignment(Alignment.RIGHT, Alignment.YCENTER)
.padding(50, 50)
.build());
labels.addComponent(Graphics
.label()
.text("Center", Color.WHITE.getRGB())
.placeAt(0, 0)
.alignment(Alignment.XCENTER, Alignment.YCENTER)
.padding(50, 50)
.build());
add(labels);
GButton btn1;
add(btn1 = Graphics.button()
.label("Change horizontal size", Color.WHITE.getRGB())
.action(btn -> {
if (labels.getWidth() < 300) {
labels.setWidth(300);
background.setWidth(300);
} else {
labels.setWidth(50);
background.setWidth(50);
}
})
.size(100, 20)
.placeAt(10, 10)
.build());
add(Graphics.button()
.label("Change vertical size", Color.WHITE.getRGB())
.action(btn -> {
if (labels.getHeight() < 300) {
labels.setHeight(300);
background.setHeight(300);
} else {
labels.setHeight(50);
background.setHeight(50);
}
})
.size(100, 20)
.bind(btn1)
.placeAt(0, 30)
.build());
}