Перейти к основному содержимому

GUI

Расширение GUI — это центральная система меню Typewriter. Оно предоставляет 9 настраиваемых движков раскладки (плюс компоненты только для API), 23 типа инвентаря, взаимодействия с клавиатурой/мышью, постоянное хранилище предметов и полное форматирование MiniMessage. Почти все остальные расширения зависят от него для своих меню.

Скоро: веб-редактор WYSIWYG с перетаскиванием, живым предпросмотром, точно соответствующим игре, автоматической раскладкой на CSS-flexbox, состояниями меню, тайлмапами и поддержкой ресурспаков от нескольких провайдеров.

Возможности

  • 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 создана, ссылайтесь на неё из любого другого расширения, которому нужно меню: - QuestCodexquest_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_LEFTShift + левый клик
SHIFT_RIGHTShift + правый клик
MIDDLEСредняя кнопка мыши
DOUBLE_CLICKДвойной клик
NUMBER_KEY_1..9Клавиши панели быстрого доступа 1-9
DROPКлавиша Q
DROP_ALLCtrl+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 в заголовках, названиях и описаниях.