Как сделать лобби для сервера

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

Как сделать лобби для сервера

Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord.

После публикации первой части статьи по установке своего 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 скрипт:

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

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

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

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

Как сделать лобби для сервера

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

Как сделать лобби для сервера

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

Теперь в запущеном игровом клиенте нажимаем / для открытия командной строки и пишем команду schematic. Как видим по сообщению, у нас нет прав на выполнение этой команды.

Как сделать лобби для сервера

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

Как сделать лобби для сервера

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

Как сделать лобби для сервера

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

Как сделать лобби для сервера

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

Как сделать лобби для сервера

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

Как сделать лобби для сервера

Как сделать лобби для сервера

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

Что мы будем делать в следующей части:

Источник

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

Как сделать лобби для сервера

Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord.

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

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

В папку 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:

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

Как сделать лобби для сервера

Теперь настроим меню игрока. Для этого нам нужно подправить конфигурацию плагина ItemJoin.

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

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

Как сделать лобби для сервера

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

Как сделать лобби для сервера

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

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

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

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

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

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

Как сделать лобби для сервера

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

Как сделать лобби для сервера

Жмем Save в правом верхнем углу, копируем сгенерированную команду и выполняем ее в игре. Результатом будет следующее сообщение:

Как сделать лобби для сервера

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

Как сделать лобби для сервера

Теперь можете перенести плагины 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.

Источник

Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 1. Выбираем и устанавливаем сервер

Как сделать лобби для сервера

tl;dr;
И так, что будет сделано в конце всего туториала?

Поехали!

Я никогда раньше не играл в Minecraft. Скажу даже больше, мне он был не особо интересен. Скорее все, по причине того, что я не понимал его идеи. Да, я видел, что в нем можно строить бесконечное множество сооружений, выращивать разного вида растения и животных, строить механизмы. Но я все еще не мог понять, как за этой игрой с примитивной графикой мои дети могут проводить целые дни напролёт.

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

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

Существует две версии Майнкрафа. Одна — это Pocket Edition, предназначена для мобильных устройств и Windows 10, вторая — Java Edition, для ПК. Как оказалось они не совместимые друг с другом, поэтому я выбрал Java Edition, так как в игровом мире этой версии больше возможностей, в добавок под нее существует более широкий выбор плагинов. Ну и еще потому, что я Java разработчик.

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

Для старта нам достаточно конфигурации на 2 CPU и 2 GB RAM. Я пробовал 1 CPU, но сервер жутко долго стартовал, с 1GB оперативной памяти я иногда сталкивался с крашем сервера при импорте крупных карт.

Как сделать лобби для сервера

При создании дроплета я выбрал способ аутентификации — SSH key

Как сделать лобби для сервера

Выполнил инструкции по его созданию

Как сделать лобби для сервера

И так, виртуальный сервер готов.

Как сделать лобби для сервера

Заходим на него по ssh:

/minecraft — путь к созданному приватному SSH ключу, IP_address — выданный хостингом IP адрес.

Хотел бы заметить, что для запуска сервера не рекомендуется использовать пользователя root, так как это может позволить злоумышленикам через уязвимые плагины нанести вред вашему серверу. Как добавить нового пользователя, вы можете ознакомиться по ссылке.

Если кратко, то создаем пользователя (dinikin замените на вашего пользователя):

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

и права удаленного достпа по SSH:

Теперь начните новый сеанс и используйте SSH с новым именем пользователя:

И так, мы на сервере.

Создаем папку для нашего первого Minecraft сервера и переходим в неё:

Теперь нам нужно определиться с реализацией сервера. Их существует несколько, самые популярные — это Spigot, Paper, Forge. Более детально про отличия этих серверов вы можете почитать здесь.

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

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

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

В итоге я остановил свой выбор на Paper, хотя для некоторых инстансов сервера оставил Spigot. Теперь нам нужно установить и запустить выбранный сервер. Качаем последнюю версию сервера:

и пробуем запустить

У меня сервер не запустился, так как не установлена Java:

Теперь запускаем повторно:

Сервер не запускается, выдавая сообщение:

меняем eula=false на true и сохраняем. Еще раз запускаем сервер:

Как сделать лобби для сервера

Запускаем игру и подключаемя к нашему серверу:

Как сделать лобби для сервера

Поздравляю, ваш первый сервер запущен и работает.

Что мы будем делать в следующей части:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *