Как сделать лобби в майнкрафт атернос
Обновлено: 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.
Читайте также: