Небольшое руководство CustomScreenMenu

Руководство Небольшое руководство CustomScreenMenu

Поддерживаемые версии
  1. 1.19
  2. 1.20
  3. 1.21
Руководство по плагину CustomScreenMenu

CustomScreenMenu
— плагин для создания интерактивных 3D-меню в игровом мире. Он фиксирует камеру игрока в определенной точке и отображает виртуальный курсор для выбора элементов.


Полезно:
-На данный момент плагин бесплатный, но по информации от разработчика скоро он станет платный,
плагин уже продаётся за 13$ тут: You must be logged in to see this link.

-Либо скачиваем free версию плагина на Spigot: You must be logged in to see this link.
Разница в платной и бесплатной версии это то что бесплатная отстаёт на 3 версии от платной

-Создание менюшек что то на подобии DeluxeMenus только вместо предметов там голограммы

-Для работы плагина необходимо установить Packetevents и PlaceholderAPI

Информация:

Основная техническая информация из официальной документации плагина

Главные возможности
  • Родная поддержка мультипоточности Folia и стабильная работа на актуальных версиях Minecraft.
  • Полная интеграция с ItemsAdder (отображение парящих 3D-моделей предметов, эффектов зачарований и лора) и BetterHud (рендер элементов меню прямо в интерфейс игрока).
  • Орбитальный режим камеры: возможность вращения обзора на 360 градусов вокруг меню или демонстрируемого предмета.

Список актуальных команд
  • /cursormenu run [название] — открыть меню с указанным именем.
  • /cursormenu stop — мгновенно закрыть текущее активное меню.
  • /cursormenu items [название_предмета] — запустить демонстрацию предмета (с поддержкой свечения и кастомной модели).
  • /cursormenu itemsstop — завершить режим предпросмотра предмета.
  • /cursormenu reload — перезагрузить файлы конфигурации после внесения изменений.

Особенности логики плагина
  • Каждый файл меню находится в своей отдельной конфигурации для удобства редактирования.
  • Автоматический запуск кастомных команд и открытие личного стартового меню при самом первом заходе нового игрока на сервер.
  • Возможность настройки моментальной телепортации игрока на заданную точку сразу в момент входа в режим меню.

Разбор глобальных настроек (config.yml)

1. Глобальные параметры
  • version: Техническая версия конфигурации.
  • Debug: Переключатель режима отладки в консоли.
  • use-pumpkin-overlay: Отображение оверлея тыквы на экране игрока.
  • use-player-location: Использовать текущую позицию игрока для камеры вместо фиксированных координат из файла меню.
  • exit-camera: Направление взгляда игрока (yaw, pitch) после закрытия интерфейса.

2. Ограничения и проверки
  • creature-spawn-limits: Ограничение спавна мобов в радиусе от центра меню.
  • camera-block-check: Проверка наличия блоков вокруг игрока для корректной работы камеры.

3. Контроль доступа к кнопкам (button-access-control)
  • login-required: Список текстовых тегов в названиях или ключах кнопок, которые блокируют нажатие до авторизации игрока.
  • no-duplicate-registration: Теги для кнопок, предотвращающие повторную регистрацию.

4. Безопасность и IP-привязка (ip-binding)
  • enabled: Включение проверки IP (один аккаунт на один IP).
  • strict: Строгий режим (блокировка входа при несовпадении сохраненного IP).
  • allow-same-ip-login: Разрешение одновременного входа с одного IP.
  • lockout-duration: Время блокировки аккаунта в минутах при подборе пароля.
  • max-login-attempts: Лимит попыток ввода пароля.
  • whitelist / blacklist: Белый и черный списки IP-адресов в формате CIDR.
  • admin-ip-whitelist: Отдельный белый список IP-адресов только для операторов (OP).

5. Окружение и автоматизация
  • messages: Текстовый префикс плагина и уведомление о блокировке команд в меню.
  • sound: Настройка фоновой музыки меню, её громкости, тональности и интервала циклического повтора.
  • join-run: Автоматическое открытие указанного меню через заданное время после входа игрока на сервер с выполнением списка стартовых команд.

6. Настройка курсора (cursor-item)
  • material / custom-model-data: Иконка предмета и ID его кастомной модели для курсора.
  • scale / size: Настройки масштабирования курсора по осям X, Y, Z.
  • sensitivity / smoothing: Чувствительность движения и сглаживание задержки перемещения курсора.
  • max-x / max-y: Максимальные границы перемещения курсора по экрану.
  • x / y / z-offset: Начальное смещение положения курсора.
  • movement-range: Кастомные лимиты минимальных и максимальных позиций сетки курсора.
  • default-position: Принудительная начальная позиция курсора при открытии окон.


Разбор структуры меню (файлы в папке menus)

Каждое меню настраивается в отдельном yml-файле и делится на три блока:

1. Доступ и автоматизация
  • permission: Право, необходимое для открытия данного меню.
  • auto-commands: Список команд, автоматически выполняемых с заданной задержкой в тиках сразу после открытия меню.

2. Позиция камеры (camera-position)
  • distance: Расстояние от точки обзора до текстовых кнопок.
  • world, x, y, z: Точные координаты размещения камеры игрока.
  • yaw, pitch: Углы поворота камеры по горизонтали и вертикали.

3. Макет интерфейса (layout)
Содержит список интерактивных элементов (кнопок):
  • permission: Индивидуальное право на отображение конкретной кнопки.
  • name: Отображаемый текст кнопки или плейсхолдер картинки.
  • x, y, z: Смещение элемента в 3D-пространстве относительно камеры.
  • tilt: Трёхмерный наклон текста по осям X (тангаж), Y (рыскание) и Z (крен).
  • text-size: Кастомный размер шрифта элемента.


Функционал кнопок при взаимодействии

  • Увеличение при наведении (hover-enlarge): Изменение масштаба текста (scale) при наведении курсора.
  • Звук при наведении (hover-sound): Воспроизведение звукового эффекта с настройкой названия, громкости, тональности и перезарядки в тиках.
  • Печатная машинка (typewriter): Посимвольное отображение текста с настройкой скорости появления, начальной задержки и символа каретки.
  • Выполнение команд (command): Список команд, выполняемых при клике, с задержкой в тиках (command-delay). Поддерживаются префиксы:
[player] — от имени игрока.
[op] — с правами администратора.
[console] — от консоли сервера.
[server] — отправка команды на прокси-сервер.
  • Случайные награды (random-commands): Выполнение случайного действия из списка на основе процентных шансов (random-chances).
  • Смена меню (next-menu): Перенаправление игрока в другое меню при клике.
  • Выход (stop-menu): Закрытие интерфейса с возможностью телепортации игрока на новые координаты или возврата на исходное место до открытия меню (back-original).

🇷🇺 Русифицированные шаблоны конфигурации

config.yml

YAML:
version: "1.4.4" # Не изменять
Debug: false

# Включить отображение тыквы на экране
use-pumpkin-overlay: false

# Использовать ли текущую позицию/взгляд игрока в качестве координат камеры меню
# true  -> игнорировать camera-position в yml файле меню, использовать позицию под ногами игрока
# false -> использовать фиксированные координаты, прописанные в yml файле меню
use-player-location: false

# Установка кастомного направления взгляда игрока при выходе из меню
exit-camera:
  yaw: 0.0
  pitch: 0.0

# Настройка ограничений спавна существ
creature-spawn-limits:
  enabled: false  # Включить ограничение спавна существ
  radius: 10      # Радиус (в блоках) от中心 меню, где запрещен спавн существ

# Настройка проверки блоков для ракурса камеры
camera-block-check:
  enabled: true
  radius: 1  # Радиус проверки (в блоках) вокруг игрока

# Настройка контроля доступа к кнопкам
button-access-control:
  # Настройка идентификаторов кнопок, требующих авторизации для нажатия
  login-required:
    # Текстовые теги, содержащиеся в названии кнопки
    name-tags:
      - "[ need login ]"
      - "%img_logo%"
    # Текстовые теги, содержащиеся в ключевом имени кнопки
    key-tags:
      - "login_required"
      - "%img_logo%"
  # Настройка идентификаторов кнопок для предотвращения повторной регистрации
  no-duplicate-registration:
    # Текстовые теги, содержащиеся в названии кнопки
    name-tags:
      - "%img_logo%"
      - "[NO_DUPLICATE_REG]"
    # Текстовые теги, содержащиеся в ключевом имени кнопки
    key-tags:
      - "no_duplicate_reg"
      - "Предотвращение повторной регистрации"

# Настройки безопасности и привязки по IP
ip-binding:
  # Включить привязку по IP (один IP может зарегистрировать только один аккаунт)
  enabled: true
  # Строгий режим: отклонять вход напрямую при несовпадении IP
  # false -> выдавать предупреждение при несовпадении IP, но разрешать вход
  # true -> напрямую запрещать вход при несовпадении IP
  strict: false
  # Разрешать ли пользователям с одного IP входить в уже зарегистрированные аккаунты
  allow-same-ip-login: true
  # Длительность блокировки (в минутах) после нескольких неверных вводов пароля
  lockout-duration: 5
  # Максимальное количество попыток входа
  max-login-attempts: 5

  # Настройка белого списка IP
  whitelist:
    # Включить белый список IP
    enabled: false
    # Список IP-адресов белого списка (поддерживается формат CIDR, например 192.168.1.0/24)
    ips: []

  # Настройка черного списка IP
  blacklist:
    # Включить черный список IP
    enabled: false
    # Список IP-адресов черного списка (поддерживается формат CIDR, например 192.168.1.0/24)
    ips: []

  # Настройка белого списка IP для администраторов (работает только для OP игроков)
  admin-ip-whitelist:
    # Включить белый список IP для администраторов
    enabled: false
    # Список разрешенных IP-адресов (поддерживается формат CIDR, например 192.168.1.0/24)
    ips: []

messages:
  prefix: '&f[&eCustomScreenMenu&f] '
  command_blocked: '&c固定视角下无法使用命令!'

sound:
  name: 'music.menu'
  volume: 1
  pitch: 1
  # Циклический звук
  loop:
    # Включить
    enabled: true
    # Интервал воспроизведения в секундах
    duration: 30

# Выполнение меню при входе в игру
join-run:
  enabled: false
  # Задержка выполнения в секундах
  delay: 3
  # Исполняемое меню
  menu: 'test'
  commands:
    - "[console] say 欢迎玩家 %player% 加入游戏!"
    - "[player] msg %player% 欢迎来到服务器!"
    - "[op] gamemode survival %player%"

cursor-item:
  material: 'ARROW'
  custom-model-data: 0
  scale: 0.5
  # Чувствительность перемещения курсора (1.0 — значение по умолчанию, чем меньше значение, тем медленнее перемещение)
  sensitivity: 1.0
  # Коэффициент плавности курсора (0.05-1.0, где 1.0 = отсутствие фильтрации и нулевая задержка; чем меньше значение, тем плавнее движение, но появится ощущение тяжести)
  smoothing: 1.0
  # Кастомный размер курсора
  size:
    x: 1.0
    y: 1.0
    z: 1.0
  # Максимум 3 по оси X (уже является максимальной вместимостью экрана по горизонтали)
  max-x: 2
  # Максимум 1.5 по оси Y (уже является максимальной вместимостью экрана по вертикали)
  max-y: 3
  x: 0.0       # Смещение по оси X
  y: 0.0       # Смещение по оси Y
  z-offset: 0.0  # Смещение курсора по оси Z
  # Ограничение диапазона перемещения курсора
  movement-range:
    # Включить кастомное ограничение диапазона перемещения курсора
    enabled: false
    # Минимальное и максимальное положение курсора по оси X
    x:
      min: -2.0
      max: 2.0
    # Минимальное и максимальное положение курсора по оси Y
    y:
      min: -3.0
      max: 3.0
  # Позиция курсора по умолчанию
  default-position:
    # Включить кастомную позицию курсора по умолчанию
    enabled: false
    # Координаты X и Y курсора по умолчанию
    x: 0.0
    y: 0.0


Русифицированный пример файла меню example.yml
YAML:
example:
  # Права, необходимые для открытия всего меню; если оставить пустым, открыть сможет любой
  permission: cursormenu.menu.example

  auto-commands:
    enabled: false
    commands:
      - "[console] say Добро пожаловать в меню лобби, выполняется через 3 секунды"
      - "[op] say Эта команда выполняется через 5 секунд"
    delays:
      - 60   # 3 секунды = 60 тиков
      - 100  # 5 секунд = 100 тиков

  # Расположение камеры
  camera-position:
    # Расстояние до текстовых компонентов
    distance: 1.5
    world: lobby
    x: -187
    y: 70
    z: 347
    yaw: 190 # Угол горизонтального поворота (0-360)
    pitch: 0.0 # Угол вертикального поворота (-90 до 90)
   
  layout:
    logo:
      permission: cursormenu.button.test.logo
      name: "%img_logo%"
      # Ось X текстового компонента
      x: -2
      # Ось Y текстового компонента
      y: 1
      # Ось Z текстового компонента
      z: 3.5
      tilt:
        x: 0.0 # Наклон вверх/вниз (тангаж)
        y: 0.0 # Наклон влево/вправо (рыскание)
        z: 0.0 # Наклон вбок (крен)            
      command-delay: 6 # Задержка выполнения команды (тиков)
      next-menu:
        enabled: false
        menu: lobby
      # Закрывать ли меню после клика
      stop-menu:
        enabled: false
        teleport:
          enabled: false # Включить функцию телепортации (по умолчанию false)
          back-original: false # Возвращать ли игрока на исходное место до открытия меню (true: исходное место; false: кастомные координаты)
          world: world # Целевой мир (работает, когда back-original равен false)
          x: 0.0 # Координата X
          y: 64.0 # Координата Y
          z: 0.0 # Координата Z
 
    layout1:
      permission: cursormenu.button.test.layout1
      name: "Регистрация аккаунта"
      x: -2
      y: 0
      z: 3.5
      tilt:
        x: 0.0
        y: 0.0
        z: 0.0  
      # Эффект увеличения при наведении
      hover-enlarge:
        enabled: true    # Включить эффект увеличения при наведении
        scale: 1.1       # Масштаб увеличения      
      # Размер текста (опционально, по умолчанию 1.0)
      text-size: 1.2
      # Команды, выполняемые при клике
      command:
        - '[op] say Регистрация аккаунта'
      command-delay: 6
      next-menu:
        enabled: true
        menu: "Меню_Авторизации"
      stop-menu:
        enabled: false
        teleport:
          enabled: false
          back-original: false
          world: world
          x: 0.0
          y: 64.0
          z: 0.0
         
    layout2:
      permission: cursormenu.button.test.layout2
      name: "Выход из игры"
      x: -2
      y: -0.5
      z: 3.5
      tilt:
        x: 0.0
        y: 0.0
        z: 0.0            
      command:
        - '[op] say Выход из игры'
      hover-enlarge:
        enabled: true  
        scale: 1.1      
      command-delay: 6
      next-menu:
        enabled: false
        menu: example
      stop-menu:
        enabled: true
        teleport:
          enabled: true
          back-original: false
          world: world
          x: 554.0
          y: 64.0
          z: 0.0

    layout3:
      permission: cursormenu.button.test.layout2
      name: "Войти на сервер"
      x: -2
      y: 0.5
      z: 3.5
      tilt:
        x: 0.0
        y: 0.0
        z: 0.0            
      command:
        - '[op] say Войти на сервер'
      hover-enlarge:
        enabled: true  
        scale: 1.1      
      command-delay: 6
      next-menu:
        enabled: true
        menu: example2
      stop-menu:
        enabled: false
        teleport:
          enabled: false
          back-original: false
          world: world
          x: 0.0
          y: 64.0
          z: 0.0

    layout4:
      permission: cursormenu.button.test.layout4
      name: "Создатели"
      x: -2
      y: -1.0
      z: 3.5
      tilt:
        x: 0.0
        y: 0.0
        z: 0.0            
      command:
        - '[op] say Создатели'
      hover-enlarge:
        enabled: true  
        scale: 1.1      
      command-delay: 6
      next-menu:
        enabled: false
        menu: lobby
      stop-menu:
        enabled: false
        teleport:
          enabled: false
          back-original: false
          world: world
          x: 0.0
          y: 64.0
          z: 0.0          

    layout8:
      permission: cursormenu.button.test.layout1
      name: "Регистрация аккаунта"
      x: -2
      y: 0
      z: 3.5
      tilt:
        x: 0.0
        y: 0.0
        z: 0.0  
      # ========== Эффект печатной машинки ==========
      typewriter:
        enabled: true          # Включить эффект печатной машинки
        speed: 2               # Показывать один символ каждые 2 тика (чем меньше, тем быстрее)
        start-delay: 10        # Задержка 10 тиков перед началом отображения (около 0.5 сек)
        cursor-char: "|"       # Символ курсора, также можно использовать "_" или "▌"
      # ========== Звук при наведении ==========
      hover-sound:
        name: "minecraft:block.lever.click"   # Название звука (обязательно)
        volume: 0.8                 # Громкость 0.0-1.0 (опционально, по умолчанию 1.0)
        pitch: 1.2                  # Тональность 0.5-2.0 (опционально, по умолчанию 1.0)
        cooldown: 20                # Время перезарядки в тиках (опционально, по умолчанию 20)      
      hover-enlarge:
        enabled: true  
        scale: 1.1      
      text-size: 1.2
      command:
        - '[op] say Регистрация аккаунта'
      command-delay: 6
      next-menu:
        enabled: true
        menu: "Меню_Авторизации"
      stop-menu:
        enabled: false
        teleport:
          enabled: false
          back-original: false
          world: world
          x: 0.0
          y: 64.0
          z: 0.0


Мои примеры(профессиональные):

Загрузочный экран:

Снимок экрана 2026-06-19 092544.png

Меню лобби:

Снимок экрана 2026-06-19 092649.png

Скриншоты от разработчика:
CF1B2E9C92A1E91BC8A69F7C7622724E_compressed.png
  • Люблю это (+2)
Реакции: reallmerry
Автор
Nagivka
Просмотры
41
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Поделиться ресурсом

Назад
Сверху Снизу