Как создать сервер Майнкрафт. Часть 2. Собираем и запускаем Spigot

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

Вчера я прочитал, что разработчики Баккита и прочих форков перессорились между собой и дошло даже до того, что кто-то из них написал жалобу в суд на нарушение DMCA — акта об авторских правах в цифровую эпоху. В результате стало почти невозможно найти нормальную версию сервера кроме ванильного.

Часть разработчиков откололась и начала с нуля разрабатывать свою версию сервера под названием Spout. Но в итоге никакого спаута я не нашел. В поиске выдается какой-то спаут плагин. В итоге выбор сервера предопределен, потому что единственное путное место, где есть подробная документация и актуальные новости от октября 2016 года, это Сайт SpigotMC.

Вот что они сами пишут про себя

What is it?
Simply put, Spigot is it. Spigot is the most widely-used modded Minecraft server software in the world. It powers many of the top Minecraft server networks around to ensure they can cope with their huge player base and ensure the satisfaction of their players. Spigot works by reducing and eliminating many causes of lag, as well as adding in handy features and settings that help make your job of server administration easier. The end result is that your server becomes a cut above the competition and you no longer have to spend time tearing your hair out over players complaining of lag.

It must also be added that Spigot is perfect for smaller servers too, especially due to features like cutting idle CPU usage, saving power, and other resources when only a few or no players are online.

How does it work?
Spigot started as a modification of the original CraftBukkit project, just made more efficient. Now, Spigot is an implementation and continuation of the Bukkit API which has been the leading API for Minecraft servers since 2010. Fortunately for you, this also means most plugins originally developed for CraftBukkit are reverse-compatible with Spigot! It is a huge collection of various tweaks to help increase performance, and make it more flexible as server software. Additionally, several important zero-day patches in Minecraft are implemented inside of Spigot before they are applied to the vanilla Minecraft software by Mojang.

То есть получается, что Спигот — самый популярный в мире сервер Майнкрафт с модами. Он оптимизирован по производительности и поддерживает все плагины от Баккит сервера.

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

BuildTools.jar

— программу для сборки нужной версии сервера из исходников с Git.

Для работы BuildTools нужно, чтобы на компьютере была установлена Java для разработчиков и клиент Git.

Клиент Git у меня был установлен. Скачал и поставил яву, запустил Git bash, перешел в папку BuildTools и запустил ее. Она много писала в консоль, довольно долго что-то скачивала, декомпилировала и компилировала, потом в папке появился готовые серверы Spigot и CraftBukkit последней версии.

Чтобы собрать другую версию серверов, от 1.8 до последней, нужно указать в командной строке ключ —rev:

java -jar BuildTools.jar --rev 1.8

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

На сайте Спигота предлагается использовать следующий командный файл для запуска

@echo off

:restart
java -Xms512M -Xmx1G -XX:MaxPermSize=128M -XX:+UseConcMarkSweepGC -jar spigot.jar

goto restart

Поясню параметры

-Xms512M — количество минимально выделяемой памяти под сервер
-Xmx1G — количество максимальной выделяемой памяти под сервер
-XX:MaxPermSize=128M — количество памяти под PermGen Space — не работает на Java 8, соответственно, мне и не нужно
-XX:+UseConcMarkSweepGC — включает сборщик мусора, который использует мощь нескольких процессоров. На Java 8 использовать следует Garbage One GC (G1GC).

С учетом того, что я использую Java 8, мой файл для запуска сервера выглядит вот так:

@echo off
title fourCraft server

:loo
chcp 65001
java -d64 -Dfile.encoding=UTF-8 -Xms4G -Xmx6G -XX:+UseG1GC -jar spigot.jar

if not exist stop_server.flg goto :loo
del stop_server.flg

Я хочу, чтобы мой сервер мог использовать до 6 Гб оперативной памяти, поэтому явно указываю использование 64-битной версии Java с помощью ключа -d64.

Параметр -Dfile.encoding=UTF-8 указывает необходимость использования кодировки UTF-8.

Параметр -XX:+UseG1GC включает новый сборщик мусора для Java 8.

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

После завершения работы сервера, например, после краша или перезапуска, командный файл проверяет, был ли выставлен флаг остановки сервера stop_server.flg, и если флага нет, снова запускает сервер. Если же файл имеется, удаляет его и завершает работу.

Запускаю сервер первый раз, и он начинает останавливаться и завершать работу по причине непринятия EULA — пользовательского соглашения.

Active code page: 65001
Loading libraries, please wait...
[11:46:38 INFO]: Starting minecraft server version 1.8
[11:46:38 INFO]: Loading properties
[11:46:38 WARN]: server.properties does not exist
[11:46:38 INFO]: Generating new properties file
[11:46:38 WARN]: Failed to load eula.txt
[11:46:38 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
[11:46:38 INFO]: Stopping server

Смотрю — действительно, в папке сервера появился файл eula.txt с таким вот содержимым:

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Tue Nov 08 11:46:43 SAMT 2016
eula=false

Меняю false на true, и тогда сервер запускается и начинает создавать мир.

В папке с сервером появилось несколько папок и файлов.

banned-ips.json — список игроков, забаненых по IP
banned-players.json — список забаненых игроков
bukkit.yml — дополнительные настройки сервера Баккит
commands.yml — пока не знаю, для чего этот файл
eula.txt — то самое пользовательское соглашение
help.yml — что-то типа справки, но пока не понимаю, про что это и как работает
ops.json — список операторов сервера
permissions.yml — права игроков сервера
server.properties — настройка сервера
spigot-1.8.jar — сам сервер
spigot.yml — дополнительный настройки сервера Спигот
start_mine.cmd — запускающий файл сервера
stop_flag.cmd — командник, создающий стоп-флаг для остановки сервера
usercache.json — кэш пользователей. Пока я не знаю, для чего этот файл
whitelist.json — белый список — игроки, которым по-любому разрешен доступ к серверу

Теперь все готово для того, чтобы открыть в текстовом редакторе файл server.properties и начать его настройку.

Поделиться
Отправить
 30   2016   Майнкрафт
Популярное