Как сделать лобби в майнкрафт атернос

Обновлено: 09.05.2024


После публикации первой части статьи по установке своего Minecraft сервера, ко мне обратился один читатель Хабра. В письме он написал, что по неосторожности показал мою статью своим детям и ему пришлось пообещать сделать все, как написано. Теперь я, как отец двух детей, просто не имею морального права не закончить серию этих статей. Поэтому поехали.

В первой части мы создали виртуальный сервер, скачали и запустили наш первый Minecraft сервер на Paper. Кто проделал все шаги сразу после публикации статьи, прошу обратить внимание на некоторые исправления, которые последовали после. Так, по советам в комментариях, я создал отдельного пользователя на виртуальном сервере. Поэтому все дальнейшие действия после создания пользователя будут выполнятся из под него. Запуск приложений из под root пользователя является плохой практикой и это просто не безопасно, так как предоставляет запускаемым приложениям неограниченный доступ к серверу.

Теперь, когда у нас есть запущенный Minecraft сервер, не плохо было бы заменить сгенерированную карту мира на что-то более подходящее для лобби сервера. Лобби — это наш главный сервер, визитная карточка, он служит точкой входа для игроков. Именно отсюда игроки будут перенаправляться на другие наши сервера, такие, как сервера мини-игр или выживания.

Есть несколько способов импортирования карт на ваш сервер.

Самый простой — копирование папки с миром с вашего ПК в папку вашего сервера. Такой способ подходит, если вы создали карту самостоятельно в одиночной игре либо скачали из интернета в формате, готовом для использования. Как найти файлы карт, сохраненные игрой на вашем компьютере, можно посмотреть здесь.

Второй способ — импорт карт с расширением schematic. Это формат, разработаный сообществом для хранения частей карт и использования их в сторонних программах, таких как MCEdit, WorldEdit, FastAsyncWorldEdit и др.

Я буду использовать для импорта карт второй метод, так как он более трудоёмкий и знание этого процесса может пригодиться вам в будущем. Если вы планируете использовать готовые архивы миров, можете пропустить этот пункт и просто скопировать папку с миром в папку сервера

Так, например, все карты, которые я покупал для своего сервера, шли в формате shematic. Так же, этот метод позволяет редактировать импортированые карты, например вырезать или копировать отдельные части. Мне это понадобилось, когда в купленом файле шли 4 набора островов для BedWars и нужно было разбить их на части по одному набору на сервер.

При использовании файлов в формате schematic для создания карт сервера вам понадобится пустой мир, в который вы будете импортировать карту. Обычно я использую два вида пустых миров: первый — это мир с одним блоком, второй — это океан. Первая карта подходит для создания миров для игр с воздушными островами, такими как SkyBlock, BedWars, SkyWars и тд. Океан же подходит для создания карт с островами в воде.
В интернете вы можете найти туториалы, как создать пустой мир или океан. Я же, ради сокращения размера статьи, просто прикреплю созданные мной карты:

Для удобства дальнейшей установки и редактирования плагинов, а с моей строны для сокращения количества комманд в статье, устанавливаем FTP клиент для подключения к нашему серверу. Я установил FileZilla.

После установки FTP клиента, подключаемся к серверу и переходим в папку с плагинами. У меня это /home/dinikin/PirateBay/plugins. Для краткости и универсальности буду писать


Скачиваем jar файл плагина FastAsyncWorldEdit и копируем в папку plugins на сервере. Так же скачиваем мой архив пустой карты Void.zip, распаковываем и подкладываем папку Void в папку Minecraft сервера

Если вы запускали Minecraft сервер напрямую из терминала, то после закрытия сесии процесс автоматически завершится и сервер остановится. Что бы этого не происходило в дальнейшем, для запуска сервера мы будем использовать программу screen.

Заходим на сервер по ssh:


и проверяем, установлена ли программа:


если возвращается версия программы, значит она установлена, иначе устанавливаем:


и создаем файл start.sh для запуска Minecraft сервера:


со следующим содержимым:


Даем файлу права на выполнение:


Если сервер в вашей терминальной сессии на данном этапе был уже запущен, останавливаем его командой stop.

Перед повторным запуском нам нужно перенастроить наш сервер на новую карту. Открываем через FTP клиент файл

/PirateBay/server.properties и устанавливаем следующие значения параметров:


Если вы использовали карту из одиночной игры со своего ПК, либо скачали архив из интернета, тогда вместо Void укажите имя папки с файлами мира, предварительно скопировав их в папку

Дальше удаляем на сервере папки с ранее сгенерированными мирами:
world
world_nether
world_the_end

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

И так, запускаем сервер через sh скрипт:


теперь, если ваша терминальная сессия оборвется, вы можете посмотреть список запущеных серверов командой:


а подключиться командой:


где 1234 — id процесса из результатов выполнения команды screen -ls.

На самом деле, вместо PirateBay вы можете указать такое название процесса, по которому вам будет однозначно понятно, какой сервер запущен.

И так, мы устаноновили плагин для редактирования карт и перезапустили сервер. Подключаемся к нему из лаунчера игры.


Пустой мир загрузился и мы готовы импортировать какую нибудь карту для лобби. Я выбрал вот такую:


Давайте скачаем ее здесь и скопируем файл WaithSpawn.schematic в папку


По умолчанию, большинство устанавливаемых плагинов ограничивают доступ к своим командам, открывая его только для оператора, т.е. администратора сервера. Переключаеся на терминальную сессию нашего сервера и пишем комманду /op Dinikin (в вашем случае это будет ваш никнейм):


Мы предоставили права администратора нашему пользователю и тепрерь можем повторно выполнить команду /schematic в игре:


Как видите, права появились. Но нас больше интересует команда /schematic list


Теперь в списке появилась наша загруженная карта. Нажимаем на нее мышкой и выполняем предложенную команду:


Когда команда выполнилась, выполняем команду //paste. Как результат, карта импортировалась в наш мир:

Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 3. Устанавливаем мини-игры


И так, лобби у нас готово, теперь нам нужно запустить сервера с мини-играми и прокси сервер.
Для этого нам понадобится такие плагины:

  • BungeeCord — прокси, который объединяет сервера в одну сеть и делает незаметным переход между ними для игрока — отличный плагин, который позволяет настраивать лобби, ограничивать права игроков на создании и разрушение блоков, отключать смену погоды и времени и многое другое.
  • Citizens — плагин для создания npc — плагин для создания npc с командами перехода между серверами
  • ItemJoin — плагин, позволяющий выдать игроку определенные предметы при подключении к серверу
  • Chest Commands — прекрасный плагин для создания графического пользовательского интерфейса — популярная мини-игра — плагин, позволяющий создавать голографические надписи, требуется, как зависимость, для Murder Mystery — еще одна популярная мини-игра — очень удобный плагин для управления правами пользователей

Так же создаем три новых папки в корневой папке сервера:

В папку BungeeCord копируем скачаный файл BungeeCord.jar, в MurderMystery и SkyBlock копируем paper-1.15.2.jar. Так же во все новые папки копируем файл start.sh из PirateBay.

Файл start.sh редактируем таким образом, что для каждого сервера у нас было своё название процесса для программы screen. Так же для BungeeCord будет другой jar файл, который мы скачали ранее. Я сделал это следующим образом.


Обратите внимание, суммарно теперь 4 сервера будут потреблять 3.5Gb ОЗУ, поэтому мне пришлось увеличить конфигурацию дроплета на хостинге до 4Gb.

По уже пройденному сценарию запускаем 3 новых сервера, не забывая редактировать файл eula.txt.

После первого запуска сервера BungeeCord, нам нужно в его конфигурации прописать 3 будущих сервера: PirateBay, MurderMystery, SkyBlock. Для этого в файле

/BungeeCord/config.yml добавляем следующие сервера, удалив тот, что был создан по умолчанию:


так же ставим ip_forward: true и не забываем поменять online_mode: true на false, если у вас не лицензионный Minecraft.

После первого запуска серверов MurderMystery и SkyBlock, а также для PirateBay правим их server.properties, выставив соответствующие порты из bungeecord. Так же нужно установить online-mode=false, что бы bungeecord мог проксировать наши сервера:

для PirateBay:
server-port=25565
query.port=25565
online-mode=false

для MurderMystery:
server-port=25566
query.port=25566
online-mode=false

для SkyBlock:
server-port=25567
query.port=25567
online-mode=false

Так же для того, что бы заработал Citizens Server Selector, нам нужно в файле spigot.yml для сервера PirateBay проставить параметр bungeecord: true

Перезапускаем все сервера.

Обратите внимание, что теперь у нас изменился порт для подключения в игровом клиенте, согласно конфигурации bungeecord теперь он 25577.

Теперь время настроить наш лобби-сервер. Для этого копируем скачанные плагины SuperLobbyDeluxe, Citizens, Citizens Server Selector, LuckPerms, ItemJoin и Chest Commands в папку плагинов нашего PirateBay сервера

/PirateBay/plugins. Перезапускаем сервер и подключаемся к нему из игры.

Первым делом выберем место на карте, где у нас должны появляться игроки и выполним команду:


Теперь выбираем место для npc, который будет перенаправлять нас на сервер мини-игры и выполняем команды:


Наш npc создался и если мы нажмем на него правой кнопкой мыши, нас перенаправит на сервер MurderMystery. Для перехода между серверами вы так же можете использовать команду /server:


Тоже самое проделываем и для SkyBlock:


У нас должно получиться следующее:


/PirateBay/plugins/ItemJoin/items.yml и заменяем содержимое нашим:

Перезапускаем сервер PirateBay. У нас должно появиться меню в виде компаса:


И при нажатии правой кнопки мыши вот такое игровое меню:


Но если мы заберем у нашего игрока роль оператора, выполнив команду

Возвращаем нашему пользователю роль оператора в консоли сервера:


и там же вводим:


предоставим нам права админа на все команды плагина LuckPerms.

Переходим в игру и выполняем команду:


которая сгенерирует ссылку на сайт плагина, по которой нам нужно перейти для дальнейшего редактировани прав:


Переходим по ссылке и на открывшейся странице добавляем дефолтной группе пользователей права chestcommands.open.example.yml:



Снова забираем у себя права оператора и пробуем открыть игровое меню. Теперь это должно получиться и у простого пользователя:


Теперь можете перенести плагины ItemJoin и Command Chest c содержимым их папок на сервера мини-игр SkyBlock и MurderMystery, что бы не проделывать эти же действия повторно.
Так же копируем соответствующие плагины мини-игр. Для Murder Mystery так же копируем плагин Holographic Displays и SuperLobbyDelux. Перезапускаем сервера мини-игр.

Для LuckPerms плагина на обоих серверах повторяем действия, что бы предоставить игрокам доступ к меню.

И так, игра SkyBlock у нас готова, вы можете перейти на нее через npc либо меню. Что бы начать выживание, просто наберите команду /is или /island и выберите тип острова.


Если вы хотите, что бы для всех новых игроков остров создавался автоматически, поставьте в файле

/SkyBlock/plugins/BentoBox/addons/BSkyBlock/config.yml для параметра create-island-on-first-login свойство enable: true и перезапустите сервер.

Осталось за малым: подобрать и импортировать карту для мини-игры Murder Mystery, а так же настроить её.

Я скачал эту карту, распаковал архив и залил на сервер в папку

/MurderMystery. Незабудьте в файле

/MurderMystery/server.properties изменить значение свойства level-name=world на имя вашей папки с картами. Перегружаем сервер и переходим на карту MurderMystery:


Как настроить игру Murder Mystery, вы можете в этом видео

Поздравляю, мы закончили с установкой игрового сервера. Нам все еще осталось сделать некоторые косметические настройки, такие как приветственные и информационные надписи. Однако эти изменения уже выходят за рамки этого туториала, но я думаю, вы без проблем сможете разобраться в конфигурационных файлах плагина SuperLobbyDelux.

Читайте также: