Не работает кнопка в GUI (GExt 1.7.10)

Версия Minecraft
1.7.10
API
Forge
30
1
0
Всем доброго времени суток. Делаю приватный мод на политику для своего сервера. Функционал по мере разработки на столько возрос, что простых команд в чате начинает не хватать для полноценного взаимодействия с полит модом. Во-первых это не настолько удобно, насколько хотелось бы, во-вторых - в некоторых моментах сильно бы пригодились визуальные плюшки, которые не удастся реализовать используя одни лишь команды.

Решил я значит накодить интерфейс для нужд полит мода. До этого я не сильно углублялся в графическую часть игры, делал в основном серверные моды. Хотя прекрасно шарю за OpenGL. Изучил исходники Gui, GuiScreen и т.п., и как с ними вообще работать. Дело это мне показалось муторным (хоть и лёгким).
Мне нужно было какое-то готовое решение для таких целей, чтоб подключить, написать пару строк и оно работало без танцев с бубном, так как писать еще дофига всего, а к ноябрю надо успеть релизнуть этот мод.
Листаю форум, и натыкаюсь на сей чудо GExt - The layout engine for Minecraft
GExt - то самое решение, которого мне так не хватало. Модульность, простота, кроссплатформенность и много чего еще. В общем, то что доктор прописал!

Делаю всё по инструкции. Расширяю ExtendedGuiScreen, пишу в инициализации GUI (в статье это init(), но там походу инфа устарела, так как этот движок успел здорово так обновиться, и теперь родительский класс требует оверрайдить initLayout(), но отличается вроде только названием) следующий код:

GuiMainMenu.java:
    public GButton buttonProfile = Graphics
            .button()
            .label(Graphics
                    .label()
                    .text("Профиль", 0xffffff)
                    .scale(1.0f)
                    .setCentered()
                    .build())
            .action(button -> {
                System.out.println("click"); //проверка кнопки на работоспособность
            })
            .size(profileButtonSize.width, profileButtonSize.height)
            .placeAt(profileButtonPos.width, profileButtonPos.height)
            .alignment(Alignment.LEFT, Alignment.YCENTER)
            .padding(50, 50)
            .build();  

    @Override
    public void initLayout() {
        final GList<IGraphicsComponent> labels = Graphics.list().size(containerSize.width, containerSize.height).alignment(Alignment.XCENTER, Alignment.YCENTER).build();
       
        labels.addComponent(100, Graphics.label().text("FerrumPolit v"+ Core.VERSION, 0xFFFFFF).scale(1.0f).alignment(Alignment.XCENTER, Alignment.TOP).padding(0, 40).build());
        labels.addComponent(100, buttonProfile);
        labels.addComponent(Graphics.background().size(containerSize.width, containerSize.height).build());

        this.add(labels);
    }

Запускаю игру, открываю GUI привязанной клавишей, жму по кнопке и... Ничего не происходит! Никакой "click" в консоль не выводится. Как так?
Бегу сверять с инструкцией. Вроде всё правильно, а не работает. Скопипастил от туда готовый код
код кнопошки из статьи:
this.add(100, Graphics.button()
        .label(Graphics.label().text("Primary text", 0xffffff).scale(2.0F).setCentered().build())
        .action(button -> {
            if (button.getLabel().getText().startsWith("P")) {
                button.getLabel().setText("SecondaryText");
            } else {
                button.getLabel().setText("PrimaryText");
            }
        })
        .size(150, 60)
        .placeAt(800, 400)
        .build());
который по идее, должен после нажатия заменить надпись "SecondaryText" на "PrimaryText". Даже он отказывается работать. Что я делаю не так? Помогите плиз.
Мне этот движок категорически важен, по этому просьба не писать "кодь свой интерфейс, а то ишь, ленивая задница" и всё в этом роде.
 
Решение
Привет
Во-первых - рекомендую найти другую библиотеку
Во-вторых - там почему-то хендлер по-умолчанию вешается на кнопку 1 - а это правая кнопка мыши (0 - левая, 1 - правая, 2 - средняя)
Там есть перегрузка метода, просто первым параметром передай 0, и уже затем лямбду, которая обрабатывает клик
Привет
Во-первых - рекомендую найти другую библиотеку
Во-вторых - там почему-то хендлер по-умолчанию вешается на кнопку 1 - а это правая кнопка мыши (0 - левая, 1 - правая, 2 - средняя)
Там есть перегрузка метода, просто первым параметром передай 0, и уже затем лямбду, которая обрабатывает клик
 
Назад
Сверху