Руководство

Как сделать плагин GUI-меню для Minecraft

Обновлено: 18 октября 2026 г.

Серверные меню (варпы, магазины, киты, настройки) это инвентари-сундуки, которые плагин открывает и контролирует. В каждом слоте лежит предмет, который работает как кнопка. Выглядят они просто, но меню, которое не отменяет любой вид клика, позволяет игрокам унести кнопки с собой. В этом руководстве разобрано, как работают меню и как получить готовое и проверенное меню.

Начните с этого примера.

Сгенерировать это в Codexe

Шаг за шагом

  1. 1.Набросайте меню

    Меню-сундук состоит из 1-6 рядов по 9 слотов (от 9 до 54). Укажите, какой предмет в каком слоте, что делает каждый клик и какие слоты просто украшение, например стеклянные панели.

  2. 2.Создайте инвентарь с holder

    Открывайте его через Bukkit.createInventory(holder, size, title), используя собственный класс InventoryHolder. По holder плагин понимает, что клик произошёл в его меню, а не в обычном сундуке.

  3. 3.Обработайте клики

    В InventoryClickEvent проверьте holder, отмените событие и выполните действие для этого слота. После действия закройте меню или обновите его.

  4. 4.Перекройте все остальные способы перемещать предметы

    Отменяйте и InventoryDragEvent, а также обрабатывайте клики с Shift, цифровые клавиши и клики в собственном инвентаре игрока, пока меню открыто.

  5. 5.Добавьте страницы, если список длинный

    Для варпов или товаров, которые не помещаются, отведите нижний ряд под кнопки «назад», «вперёд» и «закрыть».

  6. 6.Открывайте меню командой

    Например, /warps, или через предмет или NPC. Назначьте команде право, если меню не для всех.

  7. 7.Соберите плагин и прокликайте меню

    Дождитесь, пока Codexe скомпилирует плагин, зайдите на тестовый сервер и нажмите каждую кнопку. Тестовые игроки тоже могут открыть меню и покликать по слотам за вас.

Правила, которые делают меню безопасным

  • Определяйте меню по holder, а не по заголовку: заголовок можно скопировать любым переименованным сундуком.
  • Отменяйте клик до всего остального, чтобы ошибка в действии никогда не оставила предмет на курсоре игрока.
  • Отменяйте перетаскивание и клики с Shift из инвентаря игрока, иначе предметы можно затолкать в меню.
  • Не доверяйте предмету в слоте: определяйте действие по номеру слота или по метке на предмете.
  • Выполняйте медленную работу (чтение из базы данных, веб-запросы) вне основного потока и обновляйте меню, когда она завершится.

Меню из конфига

Владельцы серверов любят менять меню без новой сборки. Попросите описывать каждое меню в конфиг-файле: размер, заголовок и для каждой кнопки слот, материал, название, описание и действие:

КлючПримерЧто делает
size27Число слотов, кратное 9
slot13Где находится кнопка, отсчёт с 0
materialENDER_PEARLОтображаемый предмет
actionwarp:spawnЧто делает клик: варп, команда, другое меню

Пример описания

«Плагин для Paper 1.21.4 под названием WarpMenu. /warps открывает меню из 6 рядов с кнопкой для каждого варпа, 45 на страницу, с кнопками «назад», «вперёд» и «закрыть» в нижнем ряду. Администраторы добавляют варпы через /setwarp <name> <material> и удаляют через /delwarp. Клик по варпу телепортирует после 3-секундной задержки, которая отменяется при движении. Игроки не могут забрать или сдвинуть ни один предмет в меню. Варпы хранятся в warps.yml, заголовок меню, названия кнопок и сообщения в config.yml.»

Проверка меню тестовыми игроками

Тестовые игроки Codexe могут открыть меню и кликнуть по слоту, а затем проверить, что открылось меню, появилось сообщение или был выдан предмет. Добавьте тест своими словами, например «обычный игрок вводит /warps, кликает по слоту 0 и видит сообщение о телепорте», и он будет запускаться заново каждый раз, когда Codexe выдаёт изменение.

Вопросы

Работает ли это на 1.8?

Меню-сундуки есть во всех версиях начиная с 1.8. API отличается в деталях (названия материалов, заголовки), поэтому укажите версию в запросе.

Можно ли сделать меню на Skript?

Да, с дополнением skript-gui, которое установлено на тестовом сервере Codexe для Skript. Для больших или нагруженных меню лучше подходит плагин.

Может ли меню выглядеть как своя текстура?

Только с ресурспаком, который меняет предметы или фон инвентаря. Со стороны плагина всё то же самое: слоты, предметы и клики.

Создайте своё меню

Этот промпт откроется уже готовым к отправке:

“Плагин для Paper 1.21.4 под названием WarpMenu: /warps открывает меню из 6 рядов с кнопкой для каждого варпа, 45 на страницу, кнопки «назад»/«вперёд»/«закрыть» в нижнем ряду, /setwarp с названием и материалом и /delwarp для администраторов, 3-секундная задержка телепорта, которая отменяется при движении, ни один предмет нельзя забрать или сдвинуть, варпы в warps.yml, заголовки и сообщения в config.yml.”

Сгенерировать это в Codexe
Как сделать плагин GUI-меню для Minecraft | Codexe