Поднимаем свой полноценный игровой 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. Как результат, карта импортировалась в наш мир:
Поздравляю, мы добавили нашу первую карту на сервер.
Что мы будем делать в следующей части:
Скачать плагин LobbyAPI 🧸 Команды /lobby и /Hub для сервера Майнкрафт 3.7.106b 
Описание плагина LobbyAPI:
LobbyAPI был создан для управления несколькими мирами и позволять игрокам телепортироваться в эти миры с помощью удобного меню, при этом его можно полностью настроить. Просто используя команды /lobby или /hub, игрок получает доступ ко всем мирам, указанным в меню. LobbyAPI имеет множество настраиваемых методов для изменения цвета блока в меню, количества блоков, его местоположения и описания мира, Так же можно настроить кто может видеть и телепортироваться в тот либо иной мир.
Особенности плагина LobbyAPI:
Команды плагина LobbyAPI:
/Lobby — Открывает меню WorldMenu
/Hub — Открывает меню WorldMenu
/LobbyApi — Позволяет изменять некоторые свойства LobbyAPI.
/LobbyApi addWorld [мир] — Добавляет мир в меню LobbyAPI.
/LobbyApi removeWorld [мир] — Удаляет мир в меню LobbyAPI.
/LobbyApi addServer [Мир] — Добавляет сервер в меню LobbyAPI.
/LobbyApi removeServer [Мир] — Удаляет сервер в меню LobbyAPI.
/LobbyApi listServers — Показывает список всех серверов.
/LobbyApi listWorlds — Показывает список всех миров.
Настройка
/LobbyApi setDefaultWeather [Мир] [Погода] — Устанавливает погоду по умолчанию для мира. Выбор NORMAL (Хорошая погода), NO_RAIN (Без дождя), и ALWAYS_RAINING (Всегда дождь).
/LobbyApi addJoiningCommand [Мир] [Команда] — Добавляет команду, которая должна быть отправлена, когда игрок присоединяется к этому миру.
/LobbyApi removeJoiningCommand [Мир] [command id] — Удаляет команду, которая должна быть отправлена, когда игрок присоединяется к этому миру.
/LobbyApi listJoiningCommands [Мир] — Перечисляет все команды, которые отправляются, когда игрок присоединяется к этому миру.
/LobbyApi hideworld [world] — Скрывает мир из меню хаба.
/LobbyApi showworld [world] — Повторно добавляет мир в меню хаба.
Права плагина LobbyAPI:
lobbyapi.* — Предоставляет доступ ко всем функциям lobbyapi
lobbyapi.user — Предоставляет право на все команды, которые должны быть у игроков. Если вы не знаете, какие разрешения дать вашим игрокам, просто дайте им это.
lobbyapi.commands — Только дает доступ к командам
lobbyapi.hub — Предоставляет доступ к команде /hub.
lobbyapi.bypassworldlimits — Дает игрокам возможность присоединяться к мирам, которые являются частными или превысили лимит игроков

