HyTari Studios · Официальное визуальное руководство

Menu Info Pages

Изучайте JSON, сразу видя результат.

Практическое визуальное руководство по настройке MenuInfoPages. Начните с центрального окна, настройте навигацию в боковых панелях, затем персонализируйте ярлыки O-Key и интерактивные предметы. Каждый пример содержит копируемый JSON и упрощённое представление результата.

Сначала прочитайте это

Начало работы

ШАГ 01

Включите учебные страницы

В config.json установите languages.ru-RU.enabled и demo в true. Пакет Full включает учебные страницы на 25 языках.

ШАГ 02

Создайте страницу

Используйте /infopages newpage <name> <command> или создайте JSON-файл в mods/MenuInfoPages/pages/ru-RU/.

ШАГ 03

Перезагрузка и проверка

После изменения содержимого или изображений выполните /infopages reload. Новый игровой командный алиас или структурное изменение ItemCommands может потребовать перезапуска.

Эти примеры основаны на JSON-конфигурации и учебных файлах, поставляемых с текущей версией Full. Предпросмотры — это обучающие схемы, а не скриншоты и не нативный рендер интерфейса Hytale. Заменяйте примерные команды, цели и имена PNG ресурсами, доступными на вашем сервере. Сохраняйте резервные копии существующих файлов.

ГЛАВА 01 · 10 ПРИМЕРЫ

Центральный интерфейс

Начните с самой страницы: текст, секции, изображения, кнопки, разрешения и AutoOpen.

01JSON страницы

Ваша первая страница

Один JSON-файл создаёт страницу с собственной командой, заголовком и вступлением.

Конфигурация JSON
{
  "command": "welcome",
  "title": "ДОБРО ПОЖАЛОВАТЬ НА НАШ СЕРВЕР",
  "intro": "Привет, {player}! Здесь есть всё необходимое для начала.",
  "images": [],
  "sections": [
    {
      "title": "ПЕРВЫЕ ШАГИ",
      "text": "Прочитайте правила, найдите место для строительства и наслаждайтесь приключением!",
      "images": []
    }
  ],
  "buttons": [],
  "footer": "Приятной игры!"
}

pages/ru-RU/welcome.json

Визуальный результатСхематический предпросмотр
MENUINFOPAGES · СХЕМА×

ДОБРО ПОЖАЛОВАТЬ НА НАШ СЕРВЕР

Привет, Alex! Здесь есть всё необходимое для начала.

ПЕРВЫЕ ШАГИ

Прочитайте правила, найдите место для строительства и наслаждайтесь приключением!

Приятной игры!

Имя файла может отличаться от команды. Новые команды игрока после создания могут потребовать перезапуска сервера.

02JSON страницы

Форматированный текст и плейсхолдеры

Форматируйте текст и вставляйте динамические данные игрока и сервера.

Конфигурация JSON
{
  "command": "player-info",
  "title": "ИНФОРМАЦИЯ ОБ ИГРОКЕ",
  "intro": "{center}{#54DAF4}{b}С возвращением, {player}!{/}{/}",
  "images": [],
  "sections": [
    {
      "title": "{#F894FF}{b}ВАШИ ДАННЫЕ{/}{/}",
      "text": "{b}Игрок:{/} {player}\n{b}Мир:{/} {world}\n{b}Онлайн:{/} {online}/{max_players}\n{m}Полезная информация о сервере{/}",
      "images": []
    }
  ],
  "buttons": []
}

pages/ru-RU/player-info.json

Визуальный результатСхематический предпросмотр
MENUINFOPAGES · СХЕМА×

ИНФОРМАЦИЯ ОБ ИГРОКЕ

С возвращением, Alex!{/}{/}

ВАШИ ДАННЫЕ{/}{/}

Игрок:{/} Alex Мир:{/} Survival Онлайн:{/} 12/256 Полезная информация о сервере{/}

Форматированный текст отрисовывается Hytale. Схематический предпросмотр удаляет токены форматирования, а не воспроизводит нативный рендер шрифтов.

03JSON страницы

Цвета фона секций

Сочетайте стандартные, прозрачные и окрашенные HEX-цветом секции в одном меню.

Конфигурация JSON
{
  "command": "colors",
  "title": "НАСТРАИВАЕМЫЕ СЕКЦИИ",
  "intro": "Выберите оформление для каждой области содержимого.",
  "images": [],
  "sections": [
    {
      "title": "ПО УМОЛЧАНИЮ",
      "text": "Стандартное оформление секции.",
      "backgroundColor": "default",
      "images": []
    },
    {
      "title": "ПРОЗРАЧНЫЙ",
      "text": "Фоновая панель удаляется.",
      "backgroundColor": "none",
      "images": []
    },
    {
      "title": "СВОЙ HEX",
      "text": "Пользовательский цвет секции.",
      "backgroundColor": "#243D59",
      "images": []
    }
  ],
  "buttons": []
}

pages/ru-RU/colors.json

Визуальный результатСхематический предпросмотр
MENUINFOPAGES · СХЕМА×

НАСТРАИВАЕМЫЕ СЕКЦИИ

Выберите оформление для каждой области содержимого.

ПО УМОЛЧАНИЮ

Стандартное оформление секции.

ПРОЗРАЧНЫЙ

Фоновая панель удаляется.

СВОЙ HEX

Пользовательский цвет секции.

Используйте backgroundColor для отдельной секции, а не для всей страницы.

04JSON страницы

Фиксированное вступление и изображения заголовка

Вступление и до шести изображений остаются над прокручиваемыми секциями.

Конфигурация JSON
{
  "command": "header",
  "title": "НАШЕ СООБЩЕСТВО",
  "intro": "{center}Изучите сервер и его возможности.",
  "images": [
    {
      "image": "server-logo.png"
    },
    {
      "image": "welcome-banner.png"
    }
  ],
  "sections": [
    {
      "title": "ПРОКРУЧИВАЕМОЕ СОДЕРЖИМОЕ",
      "text": "Эта секция прокручивается, а вступление и изображения заголовка остаются видимыми.",
      "images": []
    }
  ],
  "buttons": []
}

pages/ru-RU/header.json

Визуальный результатСхематический предпросмотр
MENUINFOPAGES · СХЕМА×

НАШЕ СООБЩЕСТВО

Изучите сервер и его возможности.

server-logo.png
welcome-banner.png
ПРОКРУЧИВАЕМОЕ СОДЕРЖИМОЕ

Эта секция прокручивается, а вступление и изображения заголовка остаются видимыми.

Перед открытием страницы поместите server-logo.png и welcome-banner.png в mods/MenuInfoPages/images/. Используйте PNG; для более быстрой загрузки рекомендуется держать каждый файл меньше 2 МБ, но это не обязательно.

05JSON страницы

Несколько изображений в секции

Разместите до шести изображений в секции. Они распределяются по одинаковым горизонтальным ячейкам.

Конфигурация JSON
{
  "command": "places",
  "title": "МЕСТА ДЛЯ ПОСЕЩЕНИЯ",
  "intro": "Выберите направление.",
  "images": [],
  "sections": [
    {
      "title": "НАПРАВЛЕНИЯ",
      "text": "Выберите, куда хотите отправиться.",
      "images": [
        {
          "image": "spawn.png",
          "command": "spawn",
          "runAs": "player",
          "close": true,
          "delayMs": 100
        },
        {
          "image": "market.png",
          "command": "warp market",
          "runAs": "player",
          "close": true,
          "delayMs": 100
        },
        {
          "image": "website.png",
          "command": "https://example.org",
          "close": false
        }
      ]
    }
  ],
  "buttons": []
}

pages/ru-RU/places.json

Визуальный результатСхематический предпросмотр
MENUINFOPAGES · СХЕМА×

МЕСТА ДЛЯ ПОСЕЩЕНИЯ

Выберите направление.

НАПРАВЛЕНИЯ

Выберите, куда хотите отправиться.

spawn.png
market.png
website.png

Каждое имя файла соответствует PNG, который вы помещаете в mods/MenuInfoPages/images/.

06JSON страницы

Кнопки внутри секции

Добавьте секции собственные интерактивные действия primary, secondary и danger.

Конфигурация JSON
{
  "command": "section-actions",
  "title": "ПОЛЕЗНЫЕ КОМАНДЫ",
  "intro": "Разные стили кнопок помогают быстро различать действия.",
  "images": [],
  "sections": [
    {
      "title": "НАВИГАЦИЯ",
      "text": "Секция может содержать текст, изображения и кнопки.",
      "images": [],
      "buttons": [
        {
          "text": "СПАВН",
          "command": "spawn",
          "runAs": "player",
          "close": true,
          "delayMs": 250,
          "style": "primary"
        },
        {
          "text": "ПРАВИЛА СЕРВЕРА",
          "page": "rules",
          "style": "secondary"
        },
        {
          "text": "ПРИМЕР DANGER",
          "style": "danger"
        }
      ]
    }
  ],
  "buttons": []
}

pages/ru-RU/section-actions.json

Визуальный результатСхематический предпросмотр
MENUINFOPAGES · СХЕМА×

ПОЛЕЗНЫЕ КОМАНДЫ

Разные стили кнопок помогают быстро различать действия.

НАВИГАЦИЯ

Секция может содержать текст, изображения и кнопки.

СПАВН
ПРАВИЛА СЕРВЕРА
ПРИМЕР DANGER

Используйте page для прямого открытия другой страницы MenuInfoPages. Используйте command для выполнения команд; runAs: console следует применять только для доверенных действий.

07JSON страницы

Нижняя панель действий

Разместите до шести действий внизу, отдельно от прокручиваемых секций.

Конфигурация JSON
{
  "command": "shortcuts",
  "title": "БЫСТРЫЕ ДЕЙСТВИЯ",
  "intro": "Частые ярлыки в одном месте.",
  "images": [],
  "sections": [
    {
      "title": "ПОМОЩЬ",
      "text": "Выберите действие ниже.",
      "images": []
    }
  ],
  "buttons": [
    {
      "text": "ПРАВИЛА",
      "page": "rules",
      "style": "primary"
    },
    {
      "text": "СПАВН",
      "command": "spawn",
      "runAs": "player",
      "close": true,
      "delayMs": 250,
      "style": "secondary"
    },
    {
      "text": "САЙТ",
      "command": "https://example.org",
      "style": "secondary"
    }
  ]
}

pages/ru-RU/shortcuts.json

Визуальный результатСхематический предпросмотр
MENUINFOPAGES · СХЕМА×

БЫСТРЫЕ ДЕЙСТВИЯ

Частые ярлыки в одном месте.

ПОМОЩЬ

Выберите действие ниже.

ПРАВИЛА
СПАВН
САЙТ

Цели вроде rules или warp market должны существовать на вашем сервере. Цель page — это внутренняя команда страницы MenuInfoPages.

08JSON страницы

Разрешения страницы

Добавьте необязательный узел разрешения, чтобы ограничить страницу авторизованными пользователями.

Конфигурация JSON
{
  "command": "staff-info",
  "permission": "server.staff",
  "title": "ИНФОРМАЦИЯ ДЛЯ ПЕРСОНАЛА",
  "intro": "Закрытая информация для авторизованных игроков.",
  "images": [],
  "sections": [
    {
      "title": "ЗАМЕТКИ ПЕРСОНАЛА",
      "text": "Открывать эту страницу могут только игроки с разрешением server.staff.",
      "images": []
    }
  ],
  "buttons": []
}

pages/ru-RU/staff-info.json

Визуальный результатСхематический предпросмотр
MENUINFOPAGES · СХЕМА×

ИНФОРМАЦИЯ ДЛЯ ПЕРСОНАЛА

Закрытая информация для авторизованных игроков.

ЗАМЕТКИ ПЕРСОНАЛА

Открывать эту страницу могут только игроки с разрешением server.staff.

Узел разрешения приведён как пример. Выдайте его через систему разрешений вашего сервера. AutoOpen также учитывает разрешения страницы.

09JSON страницы

Автоматическое открытие при входе

Показывайте приветственную страницу один раз, всегда или пока игрок не отключит её.

Конфигурация JSON
{
  "autoOpen": {
    "enabled": true,
    "mode": "dismissible",
    "version": 1,
    "worlds": [],
    "delayMs": 1500
  },
  "command": "server-guide",
  "title": "РУКОВОДСТВО СЕРВЕРА",
  "intro": "Добро пожаловать! Отметьте «Больше не показывать», чтобы скрыть эту страницу при следующих входах.",
  "images": [],
  "sections": [
    {
      "title": "ПЕРВЫЕ ШАГИ",
      "text": "Прочитайте наши правила и разберитесь, как ориентироваться.",
      "images": []
    }
  ],
  "buttons": []
}

pages/ru-RU/server-guide.json

Визуальный результатСхематический предпросмотр
MENUINFOPAGES · СХЕМА×

РУКОВОДСТВО СЕРВЕРА

Добро пожаловать! Отметьте «Больше не показывать», чтобы скрыть эту страницу при следующих входах.

ПЕРВЫЕ ШАГИ

Прочитайте наши правила и разберитесь, как ориентироваться.

Настройте autoOpen в версии этой страницы на резервном языке. Не включайте пересекающиеся страницы AutoOpen для одного мира: если совпадает несколько страниц, ни одна не откроется автоматически.

10JSON конфигурации

Включите встроенные учебные страницы

Выбирайте загружаемые языки независимо от языков, для которых создаются демонстрационные страницы.

Конфигурация JSON
{
  "fallbackLanguage": "en-US",
  "languages": {
    "en-US": {
      "enabled": true,
      "demo": true
    },
    "it-IT": {
      "enabled": true,
      "demo": false
    },
    "de-DE": {
      "enabled": true,
      "demo": false
    }
  }
}

config.json — top-level fields

Визуальный результатСхематический предпросмотр

Настройки языка

en-USЗагружен · Demo ON
it-ITЗагружен · Demo OFF
de-DEЗагружен · Demo OFF

Язык клиента выбирает перевод страницы; при отсутствии перевода используется настроенный резервный язык.

В редакции Full поставляется 25 языковых папок. Для создания учебных страниц языка и enabled, и demo должны быть true. Установите demo: false, когда они больше не нужны.

ГЛАВА 03 · 4 ПРИМЕРЫ

O-Key & HUD

Создайте быстрые ярлыки, расположите их индикаторы и настройте поведение для отдельных миров.

01JSON конфигурации

Глобальный ярлык O-Key

Задайте команду по умолчанию, разрешения и индикатор HUD для каждого мира.

Конфигурация JSON
{
  "O-Key": {
    "Enabled": true,
    "RequirePermission": false,
    "Permission": "menuinfopages.okey",
    "OpPermission": "hytale.command.gamemode",
    "AllWorlds": {
      "Command": "menuinfopages",
      "OpCommand": "menuinfopages",
      "AppliesOnOP": true,
      "CooldownMs": 250,
      "Hud": {
        "Enabled": true,
        "Horizontal": "right:-8",
        "Vertical": "top:245",
        "Title": "menuinfopages.hud.okey.press",
        "Image": "default",
        "Width": 112,
        "Height": 112
      }
    }
  }
}

config.json — O-Key object

Визуальный результатСхематический предпросмотр

O-Key · пример HUD

O

Представление игрового экрана

Позиция HUD: right:-8, top:245. Команды и поведение настраиваются в config.json.

Редактируйте существующий объект O-Key вместо замены всего config.json. Значение default для изображения HUD указывает на встроенную иконку.

02JSON конфигурации

Центрирование HUD O-Key

Используйте center независимо на любой оси, а вторую ось настройте от края.

Конфигурация JSON
{
  "Hud": {
    "Enabled": true,
    "Image": "default",
    "Width": 112,
    "Height": 112,
    "Horizontal": "center",
    "Vertical": "top:190"
  }
}

config.json — O-Key.AllWorlds.Hud

Визуальный результатСхематический предпросмотр

O-Key · пример HUD

O

Представление игрового экрана

Позиция HUD: center, top:190. Команды и поведение настраиваются в config.json.

Этот пример — частичный объект Hud; добавьте эти значения в существующие настройки O-Key.AllWorlds.Hud.

03JSON конфигурации

Переопределения для миров и инстансов

Назначьте отдельным мирам другой ярлык, включая генерируемые инстансы с завершающим wildcard.

Конфигурация JSON
{
  "WorldOverrides": [
    {
      "Worlds": [
        "Survival"
      ],
      "Enabled": true,
      "Command": "welcome",
      "Hud": {
        "Enabled": true,
        "Horizontal": "right:-5",
        "Vertical": "center"
      }
    },
    {
      "Worlds": [
        "instance-Forgotten_Temple-*"
      ],
      "Enabled": true,
      "Command": "server-guide",
      "Hud": {
        "Enabled": true,
        "Horizontal": "center",
        "Vertical": "top:190"
      }
    }
  ]
}

config.json — O-Key.WorldOverrides

Визуальный результатСхематический предпросмотр

O-Key · пример HUD

O

Представление игрового экрана

Survival → /welcome
instance-Forgotten_Temple-* → /server-guide

Поддерживается один завершающий * в префиксе имени мира. Точные имена имеют приоритет над wildcard-шаблонами; иначе выбирается самый длинный совпавший префикс.

04JSON конфигурации

Пользовательское изображение O-Key

Используйте собственный PNG с настраиваемыми размером и положением.

Конфигурация JSON
{
  "Hud": {
    "Enabled": true,
    "Image": "okey-survival.png",
    "Width": 300,
    "Height": 200,
    "Horizontal": "right:-5",
    "Vertical": "top:138"
  }
}

config.json — O-Key.AllWorlds.Hud

Визуальный результатСхематический предпросмотр

O-Key · пример HUD

O

Представление игрового экрана

Позиция HUD: right:-5, top:138. Команды и поведение настраиваются в config.json.

Поместите okey-survival.png в mods/MenuInfoPages/images/. Подберите Width/Height под соотношение сторон PNG, например 600×400 при отображении 300×200.

ГЛАВА 04 · 2 ПРИМЕРЫ

ItemCommands

Создавайте предметы с отдельными командами для левого и правого клика.

01JSON конфигурации

Включите демонстрационный предмет

Встроенный пример предоставляет интерактивный исходный предмет с отдельными действиями для левого и правого клика.

Конфигурация JSON
{
  "itemCommands": {
    "enabled": true,
    "items": [
      {
        "id": "demo",
        "sourceItem": "MenuInfoPages_Demo_Grimoire_Source",
        "name": "Демо-страницы",
        "quality": "",
        "leftClickCommand": "menuinfopages",
        "rightClickCommand": "menuinfopages"
      }
    ]
  }
}

config.json — itemCommands object

Визуальный результатСхематический предпросмотр

ItemCommands · схема взаимодействий

Демо-страницы

Левый клик/menuinfopages
Правый клик/menuinfopages

Это реальный ID исходного предмета встроенного примера. В отличие от изменений страниц, структурные изменения предметов могут потребовать перезапуска сервера.

02JSON конфигурации

Отдельные команды для левого и правого клика

Используйте существующий предмет Hytale или установленного мода как источник нового интерактивного ярлыка.

Конфигурация JSON
{
  "itemCommands": {
    "enabled": true,
    "items": [
      {
        "id": "server-shortcuts",
        "sourceItem": "MenuInfoPages_Demo_Grimoire_Source",
        "name": "Ярлыки сервера",
        "quality": "",
        "leftClickCommand": "welcome",
        "rightClickCommand": "spawn"
      }
    ]
  }
}

config.json — itemCommands object

Визуальный результатСхематический предпросмотр

ItemCommands · схема взаимодействий

Ярлыки сервера

Левый клик/welcome
Правый клик/spawn

Замените sourceItem на реальный ID предмета, установленного на сервере, и выберите существующие команды, доступные игрокам. ItemCommands не зависит от JSON страниц.

Перед использованием примера

Полные примеры страниц: Помещайте каждый JSON-объект в отдельный файл внутри mods/MenuInfoPages/pages/ru-RU/. Используйте уникальную команду для каждой страницы и при необходимости переводите соответствующие файлы в других языковых папках.

Примеры конфигурации: Объекты O-Key и ItemCommands являются фрагментами вашей существующей config.json. Добавляйте показанные свойства в правильное место; никогда не заменяйте весь файл конфигурации небольшим примером.

Безопасная настройка: Размещайте упомянутые PNG в ожидаемой папке изображений. Для лучшей производительности рекомендуется, но не обязательно, держать отдельные изображения меньше 2 МБ; более крупные файлы могут потребовать больше времени и памяти для загрузки. Демонстрационные команды, цели навигации, узлы разрешений и внешние URL являются примерами для ресурсов, предоставляемых вами. Не выполняйте привилегированные команды от имени недоверенных игроков.

Текущая схема: Это руководство описывает текущую систему sections, leftContent и rightContent; возможная будущая единая модель content/cells не представлена как уже доступная функция.

НАВЕРХ