ImproperUI
Активный0.0
Установок
Последнее обновление
Версии
ImproperUI
Преодолейте сложности создания интерфейсов в Minecraft с помощью этой уникальной библиотеки! ImproperUI предлагает революционный подход к разработке игровых GUI, используя синтаксис, вдохновленный CSS.
Что такое ImproperUI?
Это специализированная библиотека, которая кардинально упрощает процесс создания пользовательских интерфейсов в Minecraft. Вместо сложного программирования рендеринга вы получаете мощный инструмент с интуитивно понятным синтаксисом.

На скриншоте показан интерактивный экран с перетаскиваемыми и прокручиваемыми элементами, созданный с помощью ImproperUI Script
Требования к знаниям
Для эффективной работы с ImproperUI потребуются базовые знания:
- Основы CSS и принципы работы свойств
- Структура HTML
- Язык программирования Java
Последние обновления
Версия: 0.0.6-BETA
Добавлено:
- добавлен ConfigReader
- добавлен ImproperUIAPI.getConfigReader()
Исправления:
- исправлена неправильная обработка целочисленных аргументов конфигурации
Начало работы
Подключение библиотеки
Скачайте JAR-файл и добавьте его в проект как зависимость в build.gradle:
зависимости {
compileOnly files("libs/ImproperUI-нужнаяВерсия.jar")
}
Инициализация API
В основном классе вашего мода вызовите функцию init() у ImproperUIAPI:
public class ВашМодИнициализатор implements ModInitializer {
@Override
public void onInitialize() {
ImproperUIAPI.init("вашModId", ВашМодИнициализатор.class,
"assets/вашModId/improperui/вашЭкран1.ui",
"assets/вашModId/improperui/вашЭкран2.ui"
);
}
}
Важно: При парсинге скриптов указывайте имя файла, а не полный путь!
Работа с событиями
Для обработки событий из скриптов создайте класс, реализующий CallbackListener:
public class ПользовательскиеОбработчики implements CallbackListener {
@CallbackHandler
public void отправитьПриветствие(MouseEvent e) {
if (e.input.isDown())
ChatUtils.sendMessage("Привет мир");
}
}
В скрипте событие будет выглядеть так:
element {
on-click: отправитьПриветствие
}
Вспомогательные методы
Вспомогательные методы:
- ImproperUIPanel.collect() // список всех элементов и виджетов, включая дочерние
- ImproperUIPanel.collectOrdered() // отсортированный список по z-index
- ImproperUIPanel.collectById() // элементы по указанному ID
- ImproperUIPanel.collectByClassAttribute() // элементы по классу
API:
- ImproperUIAPI.parse() // парсит скрипт и возвращает элементы
- ImproperUIAPI.parseAndRunFile() // парсит и запускает зарегистрированный файл
- ImproperUIAPI.parseAndRunScript() // парсит и запускает скрипт
- ImproperUIAPI.reload() // перезагружает API
- ImproperUIAPI.reInit() // повторная инициализация API
Конфигурационные ключи
Ключ конфигурации состоит из трех частей: modId, confileFile, propertyName. Используется для сохранения значений настроек.
В скрипте:
slider #someId -yourModId:config.properties:testing-slider-value -someAnotherAttributeClass {
}
Доступные элементы
| Элемент | Динамические состояния | Поддержка детей | Конфигурация | Псевдонимы | Специфичные свойства |
|---|---|---|---|---|---|
| element | ✅ | ✅ | ✅ | e, div | |
| checkbox | ✅ | ❌ | ✅ | active:boolean | |
| radio | ✅ | ❌ | ✅ | active:boolean | |
| button | ✅ | ❌ | ❌ | ||
| link | ✅ | ❌ | ❌ | a | href:string |
| slider | ❌ | ❌ | ✅ | min:double max:double value:double | |
| input | ❌ | ❌ | ✅ | textbox | pattern:quote placeholder:quote |
| textfield | ❌ | ❌ | ✅ | textarea | |
| label | ✅ | ❌ | ❌ | textlabel | |
| header1-6 | ✅ | ❌ | ❌ | h1-h6 | |
| positionable | ✅ | ✅ | ✅ |
Пример скрипта
div #background-gradient {
size: 100%
margin-top: 100%
shadow-distance: 50%
shadow-color: #9775a6
}
div #display {
size: 420 240
center: both
border-radius: 10
border-thickness: 1
border-color: #412752
background-color: #2d162c
shadow-distance: 5
shadow-color: #683a68
child-align: grid
grid-columns: 1
div #title {
inner-text: "ImproperUI Interactives"
size: 100% 10
text-align: center
text-scale: 1.69
text-color: #9775a6
background-color: none
margin-top: 15
}
div #motto {
inner-text: "We got CSS in Minecraft before GTA 6"
size: 100% 10
text-align: center
text-scale: 0.8
background-color: none
margin-top: 10
}
}
Этот скрипт создает интерактивный интерфейс с заголовком, навигационной панелью и перетаскиваемыми блоками, демонстрируя всю мощь ImproperUI.