Пиратские сервера в Minecrat: Java Edition

Когда у тебя и всех игроков, которые будут играть на твоём сервере, есть лицензия Minecraft, настройка сервера сводится буквально к запуску официального ядра и принятию Minecraft EULA. После этого ты можешь спокойно использовать сервер, имея по умолчанию рабочие вайт-лист, систему скинов, авторизацию и пр.

Пиратские же сервера лишены всех этих преимуществ. Их настройка с нуля требует больше времени и усилий. В этой статье разберём, почему так, и как создать безопасный и полноценный сервер для игроков без лицензии Minecraft: Java Edition.

Онлайн-режим

«Пиратским» сервер становится, когда администратор в файле server.properties выключает параметр online-mode, устанавливая его значение в false. Но что это за онлайн-режим?

По умолчанию Minecraft сервер авторизует всех подключающихся к нему игроков через сервисы Mojang. Схема авторизации гарантирует, что если игрок смог зайти на сервер, то у него есть лицензия игры, и что он вошёл в аккаунт Microsoft в лаунчере. При этом от серверов Mojang твой сервер получает информацию о скине и плаще игрока, его актуальный никнейм и уникальный идентификатор UUID.

Особенности пиратских серверов

Безопасность

На пиратском сервере для идентификации игроков можно использовать только никнейм. Например, если ты выдаёшь права оператора кому-либо, они будут привязаны к этому никнейму. Если другой игрок введёт в лаунчере тот же ник, на который ты выдал права, зайдя на сервер он также получит эти права.

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

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

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

На серверах со включенным онлайн-режимом для идентификации используется UUID. Если игрок зашёл на сервер, гарантируется, что он реальный владелец этого UUID и подтвердил это, войдя в свой аккаунт Microsoft в лаунчере.

Данные игроков

Когда ты используешь онлайн-режим, UUID каждому игроку выдают Mojang. Этот UUID далее используется для хранения всех данных игрока на сервере: инвентаря, его прав, места последнего входа и т.п.

Преимущество такой системы в том, что если игрок решит поменять свой никнейм, сервер продолжит его узнавать, и все данные останутся на месте, т.к. UUID при этом не меняется.

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

Скины

На пиратских серверах по умолчанию не будут загружаться скины игроков. Эта проблема решается установкой плагинов типа SkinsRestorer. Они по никнейму находят профиль игрока в сервисах Mojang и получают его текущий скин. За счёт этого на пиратских серверах можно использовать скины, которые используют игроки с лицензией игры.

Плагины на скины также позволяют менять скин прямо в игре. Игроки могут ввести никнейм другого игрока, у которого есть лицензия, и использовать его скин.

Можно использовать даже собственные скины в формате .png. Для этого плагины используют сервис MineSkin, который временно загружает выбранный скин на специальный аккаунт с лицензией и получает подпись от Mojang. После этого твой скин можно свободно использовать на любом сервере.

Белый список, баны, /op

Есть известная проблема, что при использовании ванильных команд /whitelist, /ban, /op и подобных пиратский сервер иногда добавляет не тот UUID, который на самом деле будет у указанного игрока. Чтобы добавился корректный UUID, игрок обязательно должен зайти на сервер перед тем, как будет выполнена команда. Из-за этого использовать ванильные вайт-лист и баны на пиратских серверах не рекомендуется.

Обычно на пиратские сервера устанавливают плагины, которые не опираются на UUID, а вместо этого смотрят только на никнейм. Например, популярный плагин для банов по никнейму — AdvancedBan.

Резюмируем

Чтобы отключить проверку лицензии, нужно изменить значение online-mode в server.properties.

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

# Проблема Примеры плагинов
1. Безопасность AuthMe
2. Данные игроков Нельзя исправить с помощью плагинов, так как UUID генерируется из никнейма.
3. Скины SkinsRestorer
4. Баны и вайтлист AdvancedBan, EasyWhitelist