Как сделать лаунчер на c

Обновлено: 07.07.2024

Сайт с документацией переходит на другой домен!

Лаунчер написан на Java 8 с использованием технологии JavaFX, за счёт чего обладает широкими возможностями кастомизации, безупречной производительностью. С помощью умной обвязки, Вы можете скачать клиенты и настроить сервера всего в несколько команд, не компилируя исходники и не меняя классы клиента!

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

А теперь, когда вы обратили внимание, стоит запомнить:

    Для работы сервера лаунчера требуется OpenJDK 8 версии (не 9, не 10, не 11 и не даже 15, ТОЛЬКО 8)

Запустите скрипт установки в удобной для Вас директории (для работы скрипта нужен curl):

Запустите лаунчсервер как любое другое Java-приложение:

Особенности серверов (обновлено)

Я постарался, чтобы данный сервис максимально облегчил процесс установки серверов. Вручную привязать к сервису можно абсолютно любое ядро! (достаточно скачать authlib-injector). Далее, нужно просто положить его в папку с игровым сервером (допустим это будет paper.jar) и запустить следующую команду:

Так же, по такому же принципу можно привязать сервера к сервису Ely.By:

При первом запуске Вас попросят указать адрес VDS (IP или домен), на котором находится лаунчсервер - лаунчеры будут подключаться именно по этому адресу. После этого будет создан основной файл конфигурации - LaunchServer.cfg - в нём настраивается авторизация, обработка UUID, система скинов и сборка EXE-файла через Launch4J. Вы можете использовать локальный адрес для тестирования (localhost):

Проверка актуальных обновлений

Данная опция будет уведомлять вас о выходе новой версии лаунчера. При желании ее можно отключить.

Выбор зеркала

В свете последних событий, сашок уже не один раз забил на web-сервер своего лаунчера. Поэтому было принято решение добавить в лаунчер выбор и возможность поднять свое зеркало. Чтобы его поднять - необходимо создать директории assets и clients в целевой папке. До версии 1.7.0.0+ можно было указать только одну ссылку!

Так же, вы можете найти прочие (неофициальные) зеркала на нашем дискорд канале. Учтите, что разработчик данного форка не несет ответственность за другие зеркала! Проверяйте внимательно чужие зеркала/ссылки и сборки серверов!

Лимит на авторизацию и ограничения по IP (+1.7.4.0)

Данная функция частично разгружает сервер авторизации, защищая его от подбора паролей. С версии 1.7.3.0 данный функционал был переписан под управления IP. Пока что основной функционал работает только после перезагрузки LaunchServer'a.

Так же, стоит отметить, что с версии 1.7.4.0 в лаунчере присутствует файл ListIpConnection.json, который хранит в себе белый список (allowIp) и черный список (blockIp). Выглядит он так:

Белый список (allowIp) предназначен для игровых серверов, чтобы не попадать под проверку (authRateLimit) и не ждать окончания лимита. Черный список (blockIp) предназначен для блоировки IP нежелательных пользователей.

В новой системе динамической подгрузки были добавлены команды для операциями с IP адресами:

P.S. НЕ НАДО РУКАМИ СТАВИТЬ IP АДРЕСА БЕЗ ПЕРЕЗАГРУЗКИ И ГОВОРИТЬ МНЕ, ЧТО ОНО НЕ РАБОТАЕТ

Параметр onlyAllowIp позволяет настроить подключение только для IP, которые указанны в белом списке (allowIp), так что не забудьте включить его!

Способы авторизации (authProvider)

По умолчанию используется способ авторизации accept, который принимает любые пары логин-пароль за верные, и имя пользователя соответствует логину. Такой способ хорошо подходит для тестирования, но для использования в production рекомендуется сменить его на один из других: reject, file, request, или mysql. В отличие от accept, все эти способы требуют дополнительной конфигурации в блоке authProviderConfig:

Способ reject

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

Способ mojang

Для того, чтобы авторизовать пользователя, LaunchServer берет данные с официального сервера Mojang. Пример конфигурации:

Способ minesocial (+1.7.3.1) [Временно отключен]

Этот способ рекомендуется для приватных серверов с небольшим количеством игроков. Пример конфигурации:

Способ elyby (+1.7.4.0)

Я хз нужно ли вообще кому нидубь кроме TLauncher'a, но раз попросили сделать из коробки - значит нужен. Пример конфигурации:

Чтобы пользоваться данной авторизацией, необходимо зарегестрироваться на сайте Ely.by! Я не уверен, сливают они данные или нет, поэтому сделал свой сервис.

Способ authlib (+1.7.2.3)

Способ аналогичен Mojang, за исключением того, что все запросы LaunchServer берет из вашего эмулятора MojangAPI. Документация: authUrl. Пример конфигурации:

Способ file

Для проверки правильности логина и пароля, этот способ обращается к указанному файлу. Пример конфигурации:

Пример файла авторизации

Пример демонстрационного файла users.cfg в формате plain (без хеша)

Пример демонстрационного файла users.cfg в формате MD5

Я надеюсь как применять остальные хеши обьяснять не надо.

Способ request

ДА НЕ ИСПОЛЬЗУЙТЕ ВЫ ЕГО ДЛЯ DLE! ХВАТИТ СЛУШАТЬ ДОЛБАЕБОВ С ЮТУБА! ИСПОЛЬЗУЙТЕ ГОТОВЫЙ СПОСОБ mysql-bcrypt

Для проверки правильности логина и пароля, этот способ обращается к указанному URL. Этот способ рекомендуется для больших проектов с CMS, которые используют нестандартные алгоритмы хеширования. Пример конфигурации:

Вы можете загрузить уже готовые скрипты авторизации для DLE, WordPress, XenForo, IPB и PHPBB (Они должны находиться в корне сайта)

Способ mysql / mariadb (DLE ДО v11.1)

Для проверки правильности логина и пароля, этот способ обращается к MySQL-базе данных. Этот способ рекомендуется для больших проектов со стандартными алгоритмами хеширования. Пример конфигурации (DLE до 11.1):

Способ mysql-8 (DLE ДО v11.1) (+1.6.2.0)

Для проверки правильности логина и пароля, этот способ обращается к MySQL-базе данных. Этот способ рекомендуется для больших проектов со стандартными алгоритмами хеширования. Пример конфигурации (DLE до 11.1):

Способ mysql-bcrypt / mariadb-bcrypt (DLE ОТ 11.2) (+1.2.0.0)

Для проверки правильности логина и пароля, этот способ обращается к MySQL-базе данных и сравнивает hash пароля. Этот способ рекомендуется для больших проектов с алгоритмом хеширования BCrypt. Пример конфигурации (DLE от 11.2):

Для проверки правильности логина и пароля, этот способ обращается к MySQL-базе данных и сравнивает hash пароля. Этот способ рекомендуется для больших проектов с алгоритмом хеширования BCrypt. Пример конфигурации (DLE от 11.2):

Способ sqlite (+1.6.0.0)

Для проверки правильности логина и пароля, этот способ обращается к SQLite-базе данных. Этот способ рекомендуется для администраторов с психическими отклонениями. Пример конфигурации:

Способ postgresql (+1.5.0.0)

Для проверки правильности логина и пароля, этот способ обращается к PostgreSQL-базе данных. Этот способ рекомендуется для больших проектов. Пример конфигурации:

Способ json (+1.5.0.0)

Для проверки правильности логина и пароля, этот способ обращается по URL с передачей POST. Я вообще не рекомендую данный способ, если вы не используете headless cms.
Пример конфигурации:

Для тестирования и отладки можно использовать уже готовый скрипт.

Проверка авторизации

Проверить авторизацию можно с помощью команды auth:

Обработка UUID и авторизаций (authHandler)

Для управления авторизациями (joinServer, checkServer) и UUID игроков существуют несколько возможных обработчиков. Пока что их всего три, отличающихся только местом хранения: binaryFile, textFile и mysql.

Обработчик mojang (+1.7.3.1)

Для того, чтобы получить необходимые данные пользователя, LaunchServer берет данные с официального сервера Mojang. Пример конфигурации:

Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/mojang!

Обработчик minesocial (+1.7.3.1) [Временно отключен]

Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/minesocial!

Обработчик elyby (+1.7.5.0)

LaunchServer берет данные с сервера Ely.by. Пример конфигурации:

Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/elyby!

Обработчик authlib (+1.7.3.1)

Способ аналогичен Mojang, за исключением того, что все запросы LaunchServer берет из вашего эмулятора MojangAPI. Документация: joinUrl, hasJoinUrl (+1.7.3.2). Пример конфигурации:

Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/authlib!

Обработчик textFile

Этот обработчик хранит все данные об авторизациях в текстовом файле, генерирует случайные UUID, но есть опция для генерации UUID из MD5 имени пользователя. Пример конфигурации:

Обработчик binaryFile

Этот обработчик хранит все данные об авторизациях в бинарном файле, в остальном идентичен обработчику textFile. Этот обработчик существует для обратной совместимости и будет удалён в следующей версии.

Обработчик mysql / mariadb

Этот обработчик хранит все данные об авторизациях в MySQL-базе данных, использует UUID готовые. Этот обработчик рекомендуется использовать всем проектам по мере возможности. Пример конфигурации:

Для того чтобы добавить недостающие поля и сгеренерировать UUID, можно использовать SQL-запрос:

Обработчик mysql-8 (+1.6.2.0)

Этот обработчик хранит все данные об авторизациях в MySQL-базе данных, использует UUID готовые. Этот обработчик рекомендуется использовать всем проектам по мере возможности. Пример конфигурации:

Обработчик sqlite (+1.6.0.0)

Этот обработчик хранит все данные об авторизациях в SQLite-базе данных, использует UUID готовые. Этот обработчик рекомендуется использовать администраторам проектов с психическими отклонениями. Пример конфигурации:

Обработчик postgresql (+1.5.0.0)

Этот обработчик хранит все данные об авторизациях в PostgreSQL-базе данных, использует UUID готовые. Этот обработчик рекомендуется использовать всем проектам по мере возможности. Пример конфигурации:

Способ json (+1.5.0.0)

Этот обработчик хранит все данные об авторизациях в указанной вами базе данных, к которой идет подключение

Сорян, но я это еще делаю.

Система скинов и плащей

Обработчик void

Скины и плащи полностью отключены. Пример конфигурации:

Обработчик mojang

Скины и плащи LaunchServer берет с официального сервера Mojang. Пример конфигурации:

Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/mojang и authHandler/mojang!

Обработчик minesocial (+1.7.3.1) [Временно отключен]

Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/minesocial и authHandler/minesocial!

Обработчик elyby (+1.7.5.0)

Скины и плащи LaunchServer берет с cервера Ely.by. Пример конфигурации:

Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/elyby и authHandler/elyby! Если вам нужен обработчик, который может работать с любым способом авторизации, то посмотрите обработчик request ниже.

Обработчик authlib (+1.7.2.3)

Скины и плащи LaunchServer берет из вашего эмулятора MojangAPI. Документацию можно найти здесь: usersURL, profileURL. Пример конфигурации:

Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/authlib и authHandler/authlib!

Обработчик request

Скины и плащи настраиваются всего двумя параметрами - маской URL на PNG-файл. Пример конфигурации:

%username%, %uuid%, %hash% заменяются на имя пользователя, UUID и UUID без тире соответственно.

К примеру, если вам нужна упрощеная система скинов по никнейму от сервиса Ely.by, то вам нужно указать данные так:

Сборка EXE с помощью Launch4J (+1.6.1.0)

Лаунчсервер так же может автоматически собирать EXE из JAR-файла - для этого требуется поставить параметр launch4J на true. Для того чтобы у EXE-файла была иконка, положите файл favicon.ico в корневую папку, где находится LaunchServer. Пример конфигурации:

В случае возникновения ошибок на 64-битных системах, может помочь установка 32-битного пакета glibc (Debian: lib32z1 | CentOS: glibc.i686).

Клиенты, ресурсы и другие файлы для загрузки лаунчером хранятся в виде субдиректорий в директории updates, а профили, в которых указываются имя директорий, адрес сервера для автозахода, исключения при обновлении и другие сведения, необходимые для запуска клиента хранятся в директории profiles

Загрузка ресурсов

Для загрузки ресурсов существует команда downloadAsset. Первым аргументом передаётся версия клиента, для которого загружаются ресурсы, вторым аргументом имя субдиректории в updates:

Синхронизация (см. ниже) сделается автоматически, отдельно набирать команду не требуется

Загрузка клиентов

Для загрузки клиентов существует команда downloadClient. Первым аргументом передаётся версия клиента, вторым аргументом имя субдиректории в updates:

Обновление 1.7.0.0+

В данном обновлении была измена функция скачки клиентов: теперь все .cfg файлы скачиваются с зеркала сайта. Так же, сборки разделены на категории через разделитель "-" (тире).

Эти команды так же автоматически сделают файл профиля в директории profiles. Пример файла profile.cfg:

Синхронизация (см. ниже) сделается автоматически, отдельно набирать команду не требуется

Синхронизация директорий updates и profiles

Для обеспечения высокой производительности, лаунчсервер кэширует содержимое директорий updates и profiles. При внесении изменений в эти директории, лаунчсервер о них не осведомлён, и при следующем обновлении скорее всего будет ошибка. Для того чтобы синхронизировать содержимое этих директорий, существует две команды - syncUpdates и syncProfiles:

Эти команды надо обязательно выполнять после изменений! Иначе у Вас и Ваших игроков будут ошибки при обновлениях!

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

Обработчик accept

Отключает данную систему и не ведет учет железа игроков

Перед сборкой рекомендуется настроить стандартный интерфейс лаунчера в файле runtime/config.js:

Настройки находятся только в этой части файла, остальная часть используется самим лаунчером и менять её не нужно!

Сборка лаунчера

Для сборки лаунчера существует команда build. Она автоматически упакует runtime, запишет Launcher.jar, соберёт Launcher.exe (если включена интеграция с Launch4J), и автоматически их синхронизирует. Данная команда используется после модификации директории runtime:

Сразу после сборки, лаунчер можно отправлять игрокам. Если сайт и лаунчсервер на одной VDS, можно сделать symlink на лаунчер с сайта:

Сборка сервера

На данный момент поддерживаются MCPC 1.5.2, Cauldron 1.6.4, Cauldron 1.7.2, KCauldron 1.7.10, Thermos 1.7.10, Spigot 1.8.8, Spigot 1.9.4, Spigot 1.10.2, Spigot 1.11.2, Spigot 1.12.2 и PaperSpigot 1.15.2. Патчи на авторизацию в них уже добавлены, и всё, что Вам требуется сделать, это заменить Launcher.jar. Если вы не можете найти нужное ядро - посмотрите на зеркале, возможно там вы найдете нужную сборку.

Сборка сервера BungeeCord

Q: Сколько стоит лаунчер? Как мне его купить? Будет ли техподдержка?

A: Этот лаунчер - OpenSource проект, соответственно, Вы можете скачивать, использовать и распространять его бесплатно. Но техническую поддержку по вопросам установки и настройки лаунчера от разработчика можно написать автору зеркала. Напишите разработчику для получения всех необходимых инструкций. Приблизительное время работы техподдержки: 9:00-23:00 по московскому времени. VK: keeperjerry.

Q: У кого можно заказать вёрстку дизайна?

A: Есть достаточно много людей, которые за довольно скромную плату сверстают дизайн. Можно заказать вёрстку напрямую у разработчика, но стоить это будет дороже (в цену входит адаптация на последующие версии лаунчера, исправление недочётов и расширенная поддержка).

Q: Возможно ли добавление недостающего функционала в лаунчер?

A: Возможно. Для того чтобы заказать нужный Вам функционал, напишите разработчику лаунчера. Разработка напрямую зависит от сложности добавляемого функционала.

Q: Поддерживаются ли Послотовые/Игровые/Shared-хостинги?

A: Если на них можно запускать сторонние Java-приложения, то да, но найти такой Послотовый/Игровой/Shared-хостинг - большая удача. Лаунчер гарантированно поддерживает любые VDS и Dedicated-серверы с возможностью установки Java 8 и открытым 7240 портом.

Ссылку меняем на ссылку к загрузке файлов lwjgl.jar, jinput.jar, lwjgl_util.jar, minecraft.jar и windows_natives.jar.lzma

Теперь находим LoginForm.java. 188 строка

Меняем на свою ссылку к регистрации…

И последний класс, это LauncherFrame.java
На 101 строке находим:

Тут меняем ссылку на auth.php файл

Готово…Жмём правой кнопкой по проекту>>Почистить и построить проект

Далее Выполнить…ВЫБИРАЕМ ГЛАВНЫЙ КЛАСС: Net.MinecraftLauncher.

Ваш лаунчер находится в папке dist вашего проекта!

Вроде всё готово..теперь надо сделать систему скинов + авторизацию…

2 ЧАСТЬ
Создаём на сайте папку cpanel
В неё заливаем систему скинов byxar’а
Залили, настраиваем файл connect.php

Там настраиваем…всё расписано понятно!

Дальше нам надо будет зайти в вашу БД
Зашли…Теперь надо залить файлы…
Жмём Import.В папке системы скинов byxar’а есть папка sql
Все файлы,которые имеются там, заливаем в БД.

3 ЧАСТЬ

Итак…У нас есть лаунчер….Теперь нам нужно отредактировать клиент, и сервер.
Начнём с Системы Скинов
Нам нужна программа InClassTranslator.
Извлекаем из minecraft.jar файлы(а не папки):

Редактируем в InClassTranslator’е эти файлы…
Ищем в классах строки, где есть ссылки на скины…Их и меняем на свои=)
Потом эти файлы обратно заливаем в minecraft.jar
С системой скинов закончили, Congratulations!

4 часть(вроде последняя)

1 часть второго Туториала.
Сейчас нам понадобится вот этот исходник.
Редактирование самого лаунчера такое же, как и в 1 туториале!
Компилируйте и делайте лаунчер, изменяя свои ссылки.

Теперь, в папку загрузки вашего клиента добавьте файл client.zip
А в этот архив залейте папки, файлы и прочие фигнистики, которые вы используете
То есть, этот файл будет распаковывать папки и файлы, которые вы указали!

Например, я в него залью папку saves и файл ModLoader.txt…
И эта папка и файл будет скачиваться в вашу папку!

Дополнения:
Убираем пароль в авторизации:
249 строка:

18update

Итак, для того чтобы нам сделать клиент с возможностью обновления, нам понадобится *.zip используя нормальну (среднюю) степень сжатия, затем измените разрешение файла на *.jar. О том как это сделать вы можете узнать здесь

7. Теперь в указанную вами директорию, поместите все файлы игры из папки bin и добавьте к ним ещё файлы из этого архива .

Конечный продукт

В своей самой основной форме, средство запуска — это приложение, которое выполняет следующие действия:

  • он представляет домашний экран устройства
  • он перечисляет и запускает приложения, которые установлены на устройстве

В этом уроке мы собираемся создать простой модуль запуска с базовым пользовательским интерфейсом. У него будет два экрана:

  • домашний экран, показывающий обои устройства
  • экран, показывающий значки и информацию о приложениях, установленных на устройстве

Кстати, если вы много работаете с Android, вы можете попробовать один из 1000+ шаблонов приложений Android на Envato Market. Есть огромное разнообразие, так что вы обязательно найдете что-то там, чтобы помочь вам с вашей работой. Или вы могли бы передать области, которые не являются вашей специальностью, наняв разработчика приложений или дизайнера в Envato Studio.

Шаблоны приложений для Android на Envato Market

1. Требования

На вашем компьютере разработки должно быть установлено и настроено следующее:

  • Android SDK и инструменты платформы
  • Eclipse IDE 3.7.2 или выше с плагином ADT
  • эмулятор или устройство Android под управлением Android 2.2 или выше

Вы можете скачать SDK и инструменты платформы на портале разработчиков Android .

2. Настройка проекта

Запустите Eclipse и создайте новый проект приложения для Android. Я называю приложение SimpleLauncher , но вы можете назвать его как угодно. Убедитесь, что вы используете уникальный пакет. Самая низкая версия SDK, которую поддерживает наша программа запуска, — это Froyo, а целевой SDK — Jelly Bean .


Читайте также: