Иконка ресурса

GExt - The GUI extension 1.4

Нет прав для скачивания
Версия(и) Minecraft
1.7.10-1.15
Давно уже была мысль сделать что-то подобное. Во многих проектах приходится делать одно и то же - так почему бы не обобщить GUI-компоненты под единым API, подумал я... И сделал.

GExt - это движок для создания полноценных внутриигровых интерфейсов(уровня самостоятельных программ). Он предоставляет API и основные его реализации. Больше никакого GL-кода в интерфейсах. ООПшно и сердито.

Полезные ссылки:
GitHub Wiki(English)
Туториал по использованию
Discord-сервер
GExt на CurseForge

Опубликовано в OSSRH: com.github.stannismod.gext:forge<номер_версии_игры>:<версия_библиотеки>.
Например: com.github.stannismod.gext:forge112:1.4.0.0-SNAPSHOT.
Версию снапшотов(вероятно) придётся смотреть на гитхабе либо в OSSRH. Версии stable будут выходить здесь в качестве обновлений.
Репозиторий:
Gradle (Groovy):
maven {
    url = "https://oss.sonatype.org/content/repositories/snapshots/"
}

Основные возможности:
  • Единое API графических компонентов
  • Модульная сборка всех компонентов как главная идеология библиотеки. Чёткое разделение ответственности за логические части функционирования интерфейса. За счёт этого сложные компоненты можно собирать из более мелких. Так, например, панель GPanel - это инструмент композиции, которому можно установить любой обработчик прокрутки - графический компонент, обрабатывающий ввод мыши и рисующий скроллбары, если нужно. Такой подход улучшает читаемость кода и позволяет сконцентрироваться на решении маленькой задачи в каждый конкретный момент времени
  • Удобное создание каждого компонента через фабрики. Код максимально короткий и читаемый
  • Полная абстракция рисования. Гарантируется, что криво написанный рендер одного компонента не может сломать работу другого. Кроме того, ваше рисование не зависит от координат компонента в контейнере! Можно считать, что функция draw получает систему координат, связанную с вашим компонентом. Не важно, что вы натворите в своей функции рисования - матрица преобразований на выходе из неё будет сброшена
  • Интегрированная обрезка кадра, используя glScissor. Все компоненты по умолчанию обрезаются до своей ширины и высоты, заявленной в реализации API
  • Инструменты компоновки(композиции). Они же контейнеры. Это компоненты с одной целью - содержать в себе и определённым образом располагать другие компоненты
  • Контекстные меню. Определяйте действия для компонентов, доступные по ПКМ
  • Иерархический 'проброс' в эти компоненты основных событий ввода - мышка нажата, отпущена, передвинута и т.п., нажата клавиша на клавиатуре. Тем же образом передаются события наведения(hover), изменения размеров окна(resize), проверки обновлений и обновления(update) и прочее. Ну и, конечно, отрисовки компонента
  • Слушатели(Listener). Можно реализовать в своем компоненте интерфейс IListener и управлять своим состоянием в зависимости от состояния цели. Да, прямо у себя, не залезая в основной контейнер
  • Продвинутая работа с элементами интерфейса. Класс StyleMap представляет из себя то, что может нарисовать кнопку, скроллбар, фон, иконку любого размера! Кроме того, это позволяет делать несколько стилей графических интерфейсов, меняя всего одну текстуру в ресурсах
  • Платформонезависимый код. Можно легко и быстро реализовать API адаптеров под абсолютно любую платформу, при этом основной код библиотеки трогать не придётся
В составе библиотеки идёт множество основных(по моему мнению) составных частей GUI. Со временем будет дополняться. Кроме того, вы всегда можете форкнуть и дописать компонент, которого вам так не хватает :)
Автор
Quarter
Скачивания
93
Просмотры
2,971
Первый выпуск
Обновление
Оценка
5.00 звёзд 4 оценок

Последние обновления

  1. 1.4-RELEASE

    Наконец-то релиз. Думал, не дождусь). Пока что какие-то проблемы с релиз-репозиторием, можно...
  2. 1.4.0.4-SNAPSHOT

    Ухх, давно не было такого спидрана. Но всё же я выкатил(пока в preview) третий(и ну ёмаё...
  3. 1.4.0.3-SNAPSHOT

    Релиз версии 1.4 уже близко. До него будут только фиксы, после - вас ожидает версия 1.5 с...

Последние рецензии

Очень важная работа
Хотелось бы увидеть пару примеров с использованием либы, а так 5
Quarter
Quarter
Добавлено :)
Молодец. Давно было пора дать интерфейсам ООП стиль
Начинание очень хорошее и актуальное) 5 звезд за это
Концепция модульности позволит делать сложные интерфейсы
А адаптеры позволят коду юзера работать на любых версиях майна)
Название надо бы выбрать более уникальное, чтобы гуглилось и вообще узнавалось
Сверху