GUI
Расширение GUI — это центральная система меню Typewriter. Оно предоставляет 9 настраиваемых движков раскладки (плюс компоненты только для API), 23 типа инвентаря, взаимодействия с клавиатурой/мышью, постоянное хранилище предметов и полное форматирование MiniMessage. Почти все остальные расширения зависят от него для своих меню.
Скоро: веб-редактор WYSIWYG с перетаскиванием, живым предпросмотром, точно соответствующим игре, автоматической раскладкой на CSS-flexbox, состояниями меню, тайлмапами и поддержкой ресурспаков от нескольких провайдеров.
- Исходный код — Посмотреть исходники на GitHub.
- Скачать релизы — Получить свежие JAR-файлы.
Возможности
- 9 движков раскладки — Simple, Composite, Scrollable, Paginated, Frame, Flex, Storage, Book, Merchant — плюс Iterator, Slider и ReactiveSlot через Kotlin API.
- 23 типа инвентаря — Сундук, печь, наковальня, стол зачарования, кузнечный стол, торговец, книга и другие.
- Прокрутка и навигация — Прокручиваемые раскладки с настраиваемыми кнопками вверх/вниз/влево/вправо. Кнопки прокрутки закреплены за вьюпортом. Мультифрейм с независимыми зонами.
- Постоянное хранилище — Хранилище предметов на базе артефактов — для каждого игрока или группы. Режим накопления для отслеживания прогресса. Настраиваемые действия по клику.
- Плейсхолдеры хранилища — Динамические плейсхолдеры
{stored_name},{stored_amount},{stored_max}в названиях и описаниях слотов. - MiniMessage — Полная поддержка MiniMessage для заголовков, названий предметов и описаний. Цвета, градиенты, события hover/click.
- Взаимодействия по клику — LEFT, RIGHT, SHIFT, DOUBLE_CLICK, DROP, SWAP_OFFHAND, NUMBER_KEY, SCROLL — на слот или глобально.
- Анимации — Плавные переходы слотов с настраиваемым сглаживанием (linear, ease-in, ease-out).
- Диалоги ввода — Запросы текстового ввода во время взаимодействия с меню через API диалогов Paper.
Архитектура
Библиотека записей
Действия
- Open GUI — Основная точка входа. Задаёт GUI инвентаря с заголовком, раскладкой, предметами, взаимодействиями и хранилищем.
Конфигурация
- GUI Settings — Глобальные значения по умолчанию: настройка аудио, сопоставление поведения кликов по хранилищу, узлы дерева навыков.
Руководства
- Введение — Как работает система, терминология и ваше первое меню шаг за шагом.
- Типы раскладки — Каждый движок раскладки с полными примерами и указанием, когда его использовать.
- Команды и взаимодействия — Типы кликов, внутренние действия gui:, перезарядки, диалоги ввода.
- Cookbook — Готовые к адаптации рецепты: прокручиваемый список, магазин, подтверждение, депозит по квоте.
Артефакты
- GUI Storage — Артефакт постоянного хранилища. Постоянство предметов для игрока или группы, с поддержкой накопления.
Быстрый старт
-
1. Создайте запись Open GUI — Создайте запись-действие Open GUI. Эта единственная запись задаёт всё об одном меню: Базовая настройка: -
title— Заголовок инвентаря (MiniMessage + PlaceholderAPI) -guiType— Тип инвентаря:CUSTOM,CHEST,MERCHANT,BOOK,ANVILи т. д. (23 типа) -size— Для типаCUSTOM: отSIZE_9доSIZE_54Раскладка (выберите одну): -simple— Явные координаты x,y, сcount/direction/gap/repeatYдля сеточных паттернов -scrollable— Вьюпорт с кнопками прокрутки, внутренняя раскладка прокручивается -frame— Несколько независимых зон, у каждой своя дочерняя раскладка -paginated— Дискретные страницы с навигацией вперёд/назад -composite— Дочерние элементы, наложенные по оси Z -book— Страницы MiniMessage в виде написанной книги -merchant— Сделки жителя с пользовательскими предметами Предметы и взаимодействия: - Задавайте слоты сitem,displayName,lore— используйтеx/y/count/directionдля позиционирования - ПрикрепляйтеinteractionListк слоту:LEFT,RIGHT,SHIFT_LEFT,SHIFT_RIGHT,DOUBLE_CLICK,DROPи т. д. - Прикрепляйтеtriggers, чтобы запускать действия Typewriter по клику Хранилище (опционально): - Добавьтеstorageк любому слоту для постоянства предметов - Используйте плейсхолдеры{stored_name},{stored_amount},{stored_max}→ Справочник записи Open GUI -
2. Ссылайтесь из других расширений — Когда ваша запись GUI создана, ссылайтесь на неё из любого другого расширения, которому нужно меню: - QuestCodex —
quest_codex_settingsиспользует раскладку GUI для просмотра квестов - Shops — Меню магазинов используют раскладки GUI для отображения предметов - BattlePass, Crates, Pets, Party, Profiles, Cosmetics, Dungeon, BTCSky... — Все используют расширение GUI для своих меню Просто сошлитесь на ID записи-действия Open GUI в конфигурации меню другого расширения. > Расширение GUI — обязательная зависимость для более чем 20 других расширений.
Типы раскладки
SimpleLayout
Предметы размещаются по явным координатам (x, y) на виртуальной сетке. Лучше всего для статичных меню, декораций и фонов. Поддерживает count, direction, gap и repeatY для сеточных паттернов.
ScrollableLayout
Оборачивает дочернюю раскладку с поддержкой прокрутки. Пользовательские кнопки прокрутки (UP/DOWN/LEFT/RIGHT) закреплены за вьюпортом — они не двигаются при прокрутке содержимого. Лучше всего для длинных списков предметов.
FrameLayout
Делит экран на независимые зоны. У каждого фрейма своя позиция, размер и дочерняя раскладка (обычно прокручиваемая). Лучше всего для дашбордов, боковых панелей и многопанельных интерфейсов. Каждая прокручиваемая зона должна иметь уникальный ID для правильной изоляции прокрутки.
PaginatedLayout
Дискретные страницы с кнопками навигации вперёд/назад. Лучше всего для многостраничных меню и больших коллекций.
CompositeLayout
Накладывает несколько дочерних раскладок по оси Z. Лучше всего для наложений и сложных интерфейсов.
BookLayout
Отрисовывает страницы MiniMessage в виде написанной книги. Лучше всего для лора, руководств и диалогов.
MerchantLayout
Задаёт сделки жителя с входными предметами и результатом. Лучше всего для магазинов и торговли.
Справочник взаимодействий
Все поддерживаемые взаимодействия
| Взаимодействие | Триггер |
|---|---|
LEFT | Левая кнопка мыши |
RIGHT | Правая кнопка мыши |
SHIFT_LEFT | Shift + левый клик |
SHIFT_RIGHT | Shift + правый клик |
MIDDLE | Средняя кнопка мыши |
DOUBLE_CLICK | Двойной клик |
NUMBER_KEY_1..9 | Клавиши панели быстрого доступа 1-9 |
DROP | Клавиша Q |
DROP_ALL | Ctrl+Q |
SWAP_OFFHAND | Клавиша F |
Использование: interactionList на слот для действий по клику, globalInteractions для привязок в масштабах меню.
Справочник типов GUI
Все 23 поддерживаемых типа инвентаря
| Тип | Описание |
|---|---|
CUSTOM | Настраиваемый сундук (1-6 рядов) |
CHEST | Обычный сундук |
FURNACE | Печь |
BLAST_FURNACE | Доменная печь |
SMOKER | Коптильня |
BEACON | Маяк |
ENCHANTING_TABLE | Стол зачарования |
GRINDSTONE | Починка на точиле |
CARTOGRAPHY_TABLE | Изменение карты |
ANVIL | Починка/переименование на наковальне |
LOOM | Ткацкий станок (узоры флагов) |
SMITHING_TABLE | Кузнечный стол |
STONECUTTER | Камнерез |
CRAFTING_TABLE | Верстак |
BREWING_STAND | Варочная стойка |
HOPPER | Воронка |
DROPPER | Дроппер |
DISPENSER | Раздатчик |
BARREL | Бочка |
SHULKER_BOX | Ящик шалкера |
ENDER_CHEST | Эндер-сундук |
MERCHANT | Торговля с торговцем |
BOOK | Написанная книга |
Хранилище и накопление
- Стандартное хранилище: клик для внесения/изъятия предметов. Всё поведение кликов настраивается глобально через GUI Settings.
- Плейсхолдеры хранилища:
{stored_name},{stored_amount},{stored_max}динамически разрешаются вdisplayNameиloreслота forceStorage: true(по умолчанию): нескладируемые предметы (мечи, инструменты, броня) можно хранить- Режим накопления: задайте
requiredItem+requiredAmount— предметы расходуются, триггерыonReachRequiredсрабатывают на пороге - Групповое хранилище: делите хранилище между игроками (напр., команда острова) через запись
group - Временные слоты: предметы удаляются после закрытия (
temporary = true) - Триггеры
onFill/onEmpty: запускают действия Typewriter при изменении состояния слота
Подробности см. в GUI Storage Artifact.
Плейсхолдеры
Плейсхолдеры хранилища
Разрешаются в displayName и lore слота хранилища:
| Плейсхолдер | Описание |
|---|---|
{stored_name} | Отображаемое название хранимого предмета |
{stored_amount} | Текущее число предметов в слоте |
{stored_max} | Максимальная вместимость слота |
Плейсхолдеры движка
Заголовки GUI и описания предметов также поддерживают плейсхолдеры движка Typewriter и PlaceholderAPI через поля @Placeholder.
Команды
Это расширение не предоставляет собственных команд. Все взаимодействия меню идут через записи Typewriter.
Права
Пользовательских прав нет. Доступ к GUI управляется записями, ссылающимися на действия Open GUI.
Зависимости
| Extension | Обязательно | Назначение |
|---|---|---|
| (нет) | - | Это фундаментальное расширение. От него зависят более 20 других расширений. |
| PlaceholderAPI | Опционально | Для полей @Placeholder в заголовках, названиях и описаниях. |