Как создать клиент для minecraft

Всем доброго времени суток!
Предисловие:
Со своим товарищем решили в свободное время создать проект по Minecraft. Соответственно подготовили сервер и сайт.. Сейчас дело дошло до лаунчера для сервера. Разработка лаунчера производится на ElectronJS (в связке с vue).
Но сразу наткнулись на много подводных камней, вот одни из них (не буду писать всё в одном посте, т.к. нарушаю пункт правил):
1. Как запустить jar файл с флагами (точно не знаю как называется, буду называть так) типа «—username —uuid » и т.п. Т.е. програмным путём вставлять флаги в jar файл самого Minecraft.
2. Как подготовить клиент Minecraft? Т.е. из чего собирать? Допустим, я взял из готового лаунчера сборку клиента и хочу его использовать. То как нужно будет его хранить? Так как есть или по другому?

Заранее благодарю за хорошие ответы.

  • Вопрос задан более года назад
  • 1810 просмотров

А вообще гиблое дело т.к. подводных камней крайне много если не точишь лаунчер под конкретную сборку

Дмитрий Кузнецов, ну если не будет авторизации вообще впринципе и даже такой примитивной то будет засилье читеров и кучи багов т.к. придется отключать onlinemode и пускать игроков по white листу или без него. Естественно это приведет к тому что не будет скинов\плащей, можно будет с чистой совестью запустить игру с любым ником что приведет к тому что под твоим ником с админ правами может зайти абсолютно любой игрок просто вписав такой ник.
Выше приведенные ссылки к тому как работает оф ланучер и что нужно эмулировать, в примитивном и сокращенным видом это так выглядит:
1) Лаунчер отправляет логин+пароль или токен на оф сервер или твою эмуляцию. В ответ получает много инфы и в т.ч. временный токен_авторизации новый.
2) Лаунчер запускает игру и в аргументах среди прочего отправляет токен_авторизации и еще некоторые типа предопределенного языка и токена к примеру на твитч.
3) игра запускается и сверяет полученный токен с тем который хранится на оф сервере или твоей эмуляции. В некоторых случаях получает новый.
4) Коннект на сервер. При этом сначала сервер получает uuid по которому делает на оф\эмуляции пометку что такойто хочет на такой сервер. Клиент получает временный токен сервера и отправляет его на оф\эмуляцию для проверки, после если все ок игрок заходит на сервер, сервер отправляет на оф\эмуляцию что такой то прибыл и затирает токены\инвалидирует. (Этот пункт пишу по памяти но там достаточно тупая но в тоже время интересная 3х сторонняя проверка клиента\сервера\лаунчера)
5) Игроки и сервер получают по uuid скины\плащи и остальную информацию с оф\эмулирующего сервера.

Если этого не делать то будет так:
1) Лаунчер запускает игру с необходимыми аргументами где часть параметров просто пустышки но с конкретным никнеймом
2) На сервере отключен onlinemode и игрок может зайти на него с любым ником.
3) После входа срабатывает серверный плагин типа authme который блочит движения и действия игрока спамя в чат чтобы он написал пароль.
4)* Игрок пишет пароль и получает управление.
*Скины и плащи не работают, смогут работать только после ручных патчей клиента и сервера и то вроде как не последних версиях уже неканает это.

Так же добавлю что от версии к версии число и имена аргументов запуска меняется. К ним же еще прибавляются аргументы форджа\лайтлоадера. У форджа и лайтлоадера есть свои алгоритмы защиты и проверки «лицензионности», особенно у форджа.

Дмитрий Александров, очень большое вам спасибо за такой обширный и познавательный ответ.
Как я планировал делать:
1. В лаунчере есть авторизация, благодаря которому мы получаем username и «вшиваем» в запускатор клиента.
2. После подключению к одному из серверов — просим ввести пароль через команду (или как в дальнейшем планировалось — в специальном окне).
Но тут возникает вопрос можно ли легче сделать. По идеи можно передавать логин и пароль в аргументы запускатора, но тут возможно будут проблемы со стороны сервера, т.к. серверу необходимо передать этот пароль из клиента и произвести авторизацию. Так что скорей всего данная идея не закатит.

2. После подключению к одному из серверов — просим ввести пароль через команду (или как в дальнейшем планировалось — в специальном окне).

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

Вижу я, что вы много в этом разбираетесь

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Adblock
detector