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

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

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

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

  1. установим и настроим прокси сервер
  2. запустим еще 3 сервера, 1 для прокси и 2 для мини-игр
  3. установим мини-игры Murder Mystery и SkyBlock
  4. создадим первого игрового персонажа, который будет перенаправлять нас из лобби на сервер с мини-игрой
  5. настроим права к плагинам и командам сервера

Не переключайтесь!

Специально для сайта ITWORLD.UZ. Новость взята с сайта Хабр