2 заметки с тегом

Майнкрафт

Как создать сервер Майнкрафт. Часть 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 и начать его настройку.

 51   2016   Майнкрафт

Как создать сервер Майнкрафт. Часть 1

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

Технически сервер Майнкрафт — это программа, написанная на java. Базовая функциональность сервера довольно скудная, поэтому ее расширяют с помощью дополнительных модулей.

Базовый вариант сервера — «ванильный» — не поддерживает дополнительные модули (насколько я понял, но я могу ошибаться), поэтому энтузиасты выпустили свои версии сервера с возможностью подключения дополнительного функционала. По способу подключения различают моды и плагины. И версий серверов также имеется несколько: одна поддерживает только моды, вторая — только плагины. И есть версия, которая умеет взаимодействовать как с модами, так и с плагинами.

В конце сентября я нашел интересную сборку на базе Spigot, основанном на CraftBukkit сервере, поддерживающем плагины, установил ее на компьютер с Windows 10, подключенный к интернету и направил туда домен mc.fourcraft.ru.

Примечание. Потом я прочитал о сложной системе отношений разработчиков и о том, что самым перспективным проектом вроде как является Spout. Но это все равно нужно проверять, так что пока наш сервер работает на Spigot, про который я знаю, что он потребляет в два раза меньше памяти, чем его родитель CraftBukkit.

Современное состояние странички сервера

Для продвижения сервера я сделал промо-страничку http://fourcraft.ru, на которой разместил форму подписки на рассылку.

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

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

Зато я понял, что в многочисленных конфигах русские строки написаны совершенно не в той кодировке, в которой работает сервер. Причем ни один мой текстовый редактор не смог опознать эту кодировку, так что даже пришлось пользоваться Декодером от студии Артемия Лебедева. Я же перекодировал сервер и запустил его с кодировкой UTF-8. И поначалу — из-за кривой кодировки в конфигах — совершенно не понимал, чего он там пишет.

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

Я сделал запускающий командный файл для сервака, в котором прописал кодировку консоли UTF-8. Делается это командой

chcp 65001

В кмдшнике сделал что-то типа отказоустойчивости: если нет флага остановки, то сервер автоматически перезапускается. Для виндового сервака ничего лучше не удалось придумать. Я с тоской вспоминал суперский скрипт, которым у меня запускался майнкрафт на линуксе... Потом его приведу, в отдельной заметке.

В общем, вот кмдшник целиком.

@echo off
title fourCraft server

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

if not exist stop_server.flg goto :loo

del stop_server.flg

Но прежде чем запускать этот командный файл, нужно сделать первоначальную настройку сервера. Она начинается с файла server.properties и продолжается настройкой прав групп и пользователей в плагине PermissionEx. Но и это далеко не все.

Думаю, для части первой написал достаточно. Не написал только, откуда я скачал сборку. Исправляю это упущение:

http://rubukkit.org/threads/survival-pvp-clans-sborka-servera-ot-lockjaw35-spigot-1-7-1-8-v2-0.98071/

Продолжение следует.

 42   2016   Майнкрафт