После публикации первой части статьи по установке своего Minecraft сервера, ко мне обратился один читатель Хабра. В письме он написал, что по неосторожности показал мою статью своим детям и ему пришлось пообещать сделать все, как написано. Теперь я, как отец двух детей, просто не имею морального права не закончить серию этих статей. Поэтому поехали.
В первой части мы создали виртуальный сервер, скачали и запустили наш первый Minecraft сервер на Paper. Кто проделал все шаги сразу после публикации статьи, прошу обратить внимание на некоторые исправления, которые последовали после. Так, по советам в комментариях, я создал отдельного пользователя на виртуальном сервере. Поэтому все дальнейшие действия после создания пользователя будут выполнятся из под него. Запуск приложений из под root пользователя является плохой практикой и это просто не безопасно, так как предоставляет запускаемым приложениям неограниченный доступ к серверу.
Теперь, когда у нас есть запущенный Minecraft сервер, не плохо было бы заменить сгенерированную карту мира на что-то более подходящее для лобби сервера. Лобби — это наш главный сервер, визитная карточка, он служит точкой входа для игроков. Именно отсюда игроки будут перенаправляться на другие наши сервера, такие, как сервера мини-игр или выживания.
Есть несколько способов импортирования карт на ваш сервер.
Самый простой — копирование папки с миром с вашего ПК в папку вашего сервера. Такой способ подходит, если вы создали карту самостоятельно в одиночной игре либо скачали из интернета в формате, готовом для использования. Как найти файлы карт, сохраненные игрой на вашем компьютере, можно посмотреть здесь.
Второй способ — импорт карт с расширением schematic. Это формат, разработаный сообществом для хранения частей карт и использования их в сторонних программах, таких как MCEdit, WorldEdit, FastAsyncWorldEdit и др.
Я буду использовать для импорта карт второй метод, так как он более трудоёмкий и знание этого процесса может пригодиться вам в будущем. Если вы планируете использовать готовые архивы миров, можете пропустить этот пункт и просто скопировать папку с миром в папку сервера ~/PirateBay/.
Так, например, все карты, которые я покупал для своего сервера, шли в формате shematic. Так же, этот метод позволяет редактировать импортированые карты, например вырезать или копировать отдельные части. Мне это понадобилось, когда в купленом файле шли 4 набора островов для BedWars и нужно было разбить их на части по одному набору на сервер.
При использовании файлов в формате schematic для создания карт сервера вам понадобится пустой мир, в который вы будете импортировать карту. Обычно я использую два вида пустых миров: первый — это мир с одним блоком, второй — это океан. Первая карта подходит для создания миров для игр с воздушными островами, такими как SkyBlock, BedWars, SkyWars и тд. Океан же подходит для создания карт с островами в воде.
В интернете вы можете найти туториалы, как создать пустой мир или океан. Я же, ради сокращения размера статьи, просто прикреплю созданные мной карты:
Сперва мы запустим сервер на пустой карте, потом при помощи плагина FastAsyncWorldEdit импортируем необходимую карту в пустом мире.
Для удобства дальнейшей установки и редактирования плагинов, а с моей строны для сокращения количества комманд в статье, устанавливаем FTP клиент для подключения к нашему серверу. Я установил FileZilla.
После установки FTP клиента, подключаемся к серверу и переходим в папку с плагинами. У меня это /home/dinikin/PirateBay/plugins. Для краткости и универсальности буду писать ~/PirateBay/plugins.
Скачиваем jar файл плагина FastAsyncWorldEdit и копируем в папку plugins на сервере. Так же скачиваем мой архив пустой карты Void.zip, распаковываем и подкладываем папку Void в папку Minecraft сервера ~/PirateBay.
Если вы запускали Minecraft сервер напрямую из терминала, то после закрытия сесии процесс автоматически завершится и сервер остановится. Что бы этого не происходило в дальнейшем, для запуска сервера мы будем использовать программу screen.
Заходим на сервер по ssh:
ssh -i ~/minecraft dinikin@ip_address
и проверяем, установлена ли программа:
screen --version
если возвращается версия программы, значит она установлена, иначе устанавливаем:
sudo apt-get install screen
и создаем файл start.sh для запуска Minecraft сервера:
cd ~/PirateBay/
nano start.sh
со следующим содержимым:
#!/bin/sh
screen -S PirateBay java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
Даем файлу права на выполнение:
chmod +x start.sh
Если сервер в вашей терминальной сессии на данном этапе был уже запущен, останавливаем его командой stop.
Перед повторным запуском нам нужно перенастроить наш сервер на новую карту. Открываем через FTP клиент файл ~/PirateBay/server.properties и устанавливаем следующие значения параметров:
level-name=Void
generate-structures=false
Если вы использовали карту из одиночной игры со своего ПК, либо скачали архив из интернета, тогда вместо Void укажите имя папки с файлами мира, предварительно скопировав их в папку ~/PirateBay/.
Дальше удаляем на сервере папки с ранее сгенерированными мирами:
world
world_nether
world_the_end
Их можно оставить, но я предпочитаю удалять, что бы они в будущем случайно не использовались сервером, если я не изменил в каком то плагине или файле конфигурации название мира по умолчанию.
И так, запускаем сервер через sh скрипт:
./start.sh
теперь, если ваша терминальная сессия оборвется, вы можете посмотреть список запущеных серверов командой:
screen -ls
а подключиться командой:
screen -r PirateBay
или
screen -r 1234
где 1234 — id процесса из результатов выполнения команды screen -ls.
На самом деле, вместо PirateBay вы можете указать такое название процесса, по которому вам будет однозначно понятно, какой сервер запущен.
И так, мы устаноновили плагин для редактирования карт и перезапустили сервер. Подключаемся к нему из лаунчера игры.
Пустой мир загрузился и мы готовы импортировать какую нибудь карту для лобби. Я выбрал вот такую:
Давайте скачаем ее здесь и скопируем файл WaithSpawn.schematic в папку ~/PirateBay/plugins/FastAsyncWorldEdit/schematics/.
Теперь в запущеном игровом клиенте нажимаем / для открытия командной строки и пишем команду schematic. Как видим по сообщению, у нас нет прав на выполнение этой команды.
По умолчанию, большинство устанавливаемых плагинов ограничивают доступ к своим командам, открывая его только для оператора, т.е. администратора сервера. Переключаеся на терминальную сессию нашего сервера и пишем комманду /op Dinikin (в вашем случае это будет ваш никнейм):
Мы предоставили права администратора нашему пользователю и тепрерь можем повторно выполнить команду /schematic в игре:
Как видите, права появились. Но нас больше интересует команда /schematic list
Теперь в списке появилась наша загруженная карта. Нажимаем на нее мышкой и выполняем предложенную команду:
Когда команда выполнилась, выполняем команду //paste. Как результат, карта импортировалась в наш мир:
Поздравляю, мы добавили нашу первую карту на сервер.
Что мы будем делать в следующей части:
- установим и настроим прокси сервер
- запустим еще 3 сервера, 1 для прокси и 2 для мини-игр
- установим мини-игры Murder Mystery и SkyBlock
- создадим первого игрового персонажа, который будет перенаправлять нас из лобби на сервер с мини-игрой
- настроим права к плагинам и командам сервера
Не переключайтесь!