Зеркало переделанного лаунчера sashok724's Launcher v15.4
НОВЫЙ САЙТ С ДОКУМЕНТАЦИЕЙ* Официальным разработчиком лаунчера является sashok724
Лаунчер написан на Java 8 с использованием технологии JavaFX, за счёт чего обладает широкими возможностями кастомизации, безупречной производительностью. С помощью умной обвязки, Вы можете скачать клиенты и настроить сервера всего в несколько команд, не компилируя исходники и не меняя классы клиента!
Новый функционал можно добавить через JS API, возможно так же добавление функционала в стандартную конфигурацию по запросу.
А теперь, когда вы обратили внимание, стоит запомнить:
Запустите скрипт установки в удобной для Вас директории (для работы скрипта нужен curl):
curl -s https://mirror.keeperjerry.ru/launcher/v1/setup.sh | sh
Запустите лаунчсервер как любое другое Java-приложение:
java -Xmx512M -jar LaunchServer.jar
До этого я рекомендовал MineSocial.NET - мой сайт эмуляции сервисов Mojang. Вопреки всем ожиданиям, сервис начал набирать актуальность. Однако мне пришлось его увести на тех.работы (уйти от PHP, закончить realms и т.д.). Когда сервис будет готов - я оглашу это публично.
Я постарался, чтобы данный сервис максимально облегчил процесс установки серверов. Вручную привязать к сервису можно абсолютно любое ядро! (достаточно скачать authlib-injector). Далее, нужно просто положить его в папку с игровым сервером (допустим это будет paper.jar) и запустить следующую команду:
java -javaagent:authlib-injector.jar=minesocial.net -jar paper.jar [Временно отключен]
Так же, по такому же принципу можно привязать сервера к сервису Ely.By:
java -javaagent:authlib-injector.jar=ely.by -jar paper.jar
Данная система не должна вызвать каких-либо затруднений в привязке к системе. Authlib-injector автоматически пропатчит ваше ядро для указанного сайта. Стоит учитывать, что данный патч работает только на таких проектах, как MineSocial.NET или Ely.by
При первом запуске Вас попросят указать адрес VDS (IP или домен), на котором находится лаунчсервер - лаунчеры будут подключаться именно по этому адресу. После этого будет создан основной файл конфигурации - LaunchServer.cfg - в нём настраивается авторизация, обработка UUID, система скинов и сборка EXE-файла через Launch4J. Вы можете использовать локальный адрес для тестирования (localhost):
address: "localhost"; # Адрес VDS (IP или домен)
bindAddress: "0.0.0.0"; # На какой интерфейс идет обращение (0.0.0.0 - Все)
port: 7240; # Порт лаунчсервера
Данная опция будет уведомлять вас о выходе новой версии лаунчера. При желании ее можно отключить.
# Проверять обновления с сайта разработчика?
checkServerUpdate: true;
В свете последних событий, сашок уже не один раз забил на web-сервер своего лаунчера. Поэтому было принято решение добавить в лаунчер выбор и возможность поднять свое зеркало. Чтобы его поднять - необходимо создать директории assets и clients в целевой папке. До версии 1.7.0.0+ можно было указать только одну ссылку!
# Ссылки на действущие зеркала
mirrors: [
"https://mirror.keeperjerry.ru/launcher/v1/" # Указывайте зеркала через запятую! Example: "url_1", "url_2"
# "https://mirror.jocat.ru/keeperjerry/" - Прекратил поддержку зеркала с 30.04.2021
];
Так же, вы можете найти прочие (неофициальные) зеркала на нашем дискорд канале. Учтите, что разработчик данного форка не несет ответственность за другие зеркала! Проверяйте внимательно чужие зеркала/ссылки и сборки серверов!
Данная функция частично разгружает сервер авторизации, защищая его от подбора паролей. С версии 1.7.3.0 данный функционал был переписан под управления IP. Пока что основной функционал работает только после перезагрузки LaunchServer'a.
# Лимит на авторизацию / защита от брутфорса
authLimit: true; # Включение системы лимита
authLimitConfig: {
# Основные настройки
authRateLimit: 5; # Кол-во попыток авторизации
authRateLimitMilis: 8000; # Пауза после попыток авторизации 8 сек.
useAllowIp: true; # Включить белый список
useBlockIp: true; # Включить черный список
# Сообщения клиентам
authRejectString: "Превышен лимит авторизаций, подождите некоторое время!";
authNotWhitelistString: "Вашего IP нет в белом списке!"; # Показывает только при включенном onlyAllowIp
authBannedString: "Ваш IP заблокирован!"; # Сообщение о блокировке (работает при blockOnConnect: false)
# Дополнительные настройки
blockOnConnect: true; # Отключает любые подключения к LaunchServer заблокированным IP
onlyAllowIp: false; # Разрешить подключение только доверенным IP адресам
};
Так же, стоит отметить, что с версии 1.7.4.0 в лаунчере присутствует файл ListIpConnection.json, который хранит в себе белый список (allowIp) и черный список (blockIp). Выглядит он так:
{
"allowIp": [
"127.0.0.1",
"172.18.0.1"
],
"blockIp": [
"1.2.3.4",
"4.3.2.1"
]
}
Белый список (allowIp) предназначен для игровых серверов, чтобы не попадать под проверку (authRateLimit) и не ждать окончания лимита. Черный список (blockIp) предназначен для блоировки IP нежелательных пользователей.
В новой системе динамической подгрузки были добавлены команды для операциями с IP адресами:
# Белый список
allowip add 127.0.0.1 # Добавить IP в Белый список
allowip del 127.0.0.1 # Убрать IP из Белого списка
# Черный список
blockip add 127.0.0.1 # Добавить IP в Черный список
blockip del 127.0.0.1 # Убрать IP из Черного списка
P.S. НЕ НАДО РУКАМИ СТАВИТЬ IP АДРЕСА БЕЗ ПЕРЕЗАГРУЗКИ И ГОВОРИТЬ МНЕ, ЧТО ОНО НЕ РАБОТАЕТ
Параметр blockOnConnect позволяет управлять подключением с заблокированными IP адресами: если установлено значение false - клиенты увидят сообщение о том, что их IP забанен, если установлено значение true - заблокированные адреса не смогут вовсе подключится к вашему LaunchServer'у, просто отклоняя любое соединение с указанными IP.
Параметр onlyAllowIp позволяет настроить подключение только для IP, которые указанны в белом списке (allowIp), так что не забудьте включить его!
По умолчанию используется способ авторизации accept, который принимает любые пары логин-пароль за верные, и имя пользователя соответствует логину. Такой способ хорошо подходит для тестирования, но для использования в production рекомендуется сменить его на один из других: reject, file, request, или mysql. В отличие от accept, все эти способы требуют дополнительной конфигурации в блоке authProviderConfig:
authProvider: "accept"; # Название способа авторизации
authProviderConfig: {
# Конфигурация способа авторизации не тебуется
};
Этот способ авторизации - полная противоположность accept - он принимает любые пары логин-пароль за неверные. Этот способ можно использовать во время проведения технических работ. Пример конфигурации:
authProvider: "reject"; # Название способа авторизации
authProviderConfig: {
# Конфигурация способа авторизации
message: "Технические работы, приходите позже!"; # Сообщение, которое будет использовано в качестве ошибки
};
Для того, чтобы авторизовать пользователя, LaunchServer берет данные с официального сервера Mojang. Пример конфигурации:
authProvider: "mojang";
authProviderConfig: {
# Конфигурация способа авторизации не тебуется
};
Этот способ рекомендуется для приватных серверов с небольшим количеством игроков. Пример конфигурации:
authProvider: "minesocial";
authProviderConfig: {
# Конфигурация способа авторизации не тебуется
};
Я хз нужно ли вообще кому нидубь кроме TLauncher'a, но раз попросили сделать из коробки - значит нужен. Пример конфигурации:
authProvider: "elyby";
authProviderConfig: {
# Конфигурация способа авторизации не тебуется
};
Чтобы пользоваться данной авторизацией, необходимо зарегестрироваться на сайте Ely.by! Я не уверен, сливают они данные или нет, поэтому сделал свой сервис.
Способ аналогичен Mojang, за исключением того, что все запросы LaunchServer берет из вашего эмулятора MojangAPI. Документация: authUrl. Пример конфигурации:
authProvider: "authlib";
authProviderConfig: {
authUrl: "https://authserver.mojang.com/authenticate";
};
Для проверки правильности логина и пароля, этот способ обращается к указанному файлу. Пример конфигурации:
authProvider: "file"; # Название способа авторизации
authProviderConfig: {
file: "users.cfg"; # Имя файла, в котором будут приведенные ниже данные
digest: "plain"; # Алгоритм хеширования пароля. Поддерживаются plain, MD5, SHA-1, SHA-224, SHA-256, SHA-512
};
Пример демонстрационного файла users.cfg в формате plain (без хеша)
# Алгоритм plain
Test: {
username: "Test";
password: "12345";
};
KeeperJerry: {
username: "KeeperJerry";
password: "12345";
};
# и т.д.
Пример демонстрационного файла users.cfg в формате MD5
# Алгоритм MD5
Test: {
username: "Test";
password: "827ccb0eea8a706c4c34a16891f84e7b"; # 12345
};
KeeperJerry: {
username: "KeeperJerry";
password: "827ccb0eea8a706c4c34a16891f84e7b"; # 12345
};
# и т.д.
Я надеюсь как применять остальные хеши обьяснять не надо.
ДА НЕ ИСПОЛЬЗУЙТЕ ВЫ ЕГО ДЛЯ DLE! ХВАТИТ СЛУШАТЬ ДОЛБАЕБОВ С ЮТУБА! ИСПОЛЬЗУЙТЕ ГОТОВЫЙ СПОСОБ mysql-bcrypt
Для проверки правильности логина и пароля, этот способ обращается к указанному URL. Этот способ рекомендуется для больших проектов с CMS, которые используют нестандартные алгоритмы хеширования. Пример конфигурации:
authProvider: "request"; # Название способа авторизации
authProviderConfig: {
url: "https://myserver.tld/auth.php?login=%login%&password=%password%"; # URL, к которому будет обращаться лаунчсервер. %login% и %password% заменяются на указанные логин и пароль, соответственно
response: "OK:(?<username>.+)"; # Маска ответа успешной авторизации. В capture-группе <username> должно быть имя пользователя. В случае, если ответ отличается, он выводится в качестве ошибки
};
Вы можете загрузить уже готовые скрипты авторизации для DLE, WordPress, XenForo, IPB и PHPBB (Они должны находиться в корне сайта)
Для проверки правильности логина и пароля, этот способ обращается к MySQL-базе данных. Этот способ рекомендуется для больших проектов со стандартными алгоритмами хеширования. Пример конфигурации (DLE до 11.1):
authProvider: "mysql"; # Название способа авторизации
authProviderConfig: {
address: "localhost"; # Адрес MySQL-сервера
port: 3306; # Порт MySQL-сервера (по умолчанию 3306)
username: "root"; # Имя пользователя MySQL-сервера
password: "PSP1004"; # Пароль пользователя
database: "dle?serverTimezone=UTC"; # База данных (при mariadb не нужно указывать serverTimezone)
query: "SELECT name FROM dle_users WHERE (email=? OR name=?) AND password=MD5(MD5(?)) LIMIT 1"; # Запрос. Он должен быть SELECT и возвращать имя пользователя в правильном регистре. ? заменяются на параметры ниже:
queryParams: [ "%login%", "%login%", "%password%" ]; # Параметры к запросу. %login% и %password% заменяются на имя пользователя и пароль соответственно
};
Для проверки правильности логина и пароля, этот способ обращается к MySQL-базе данных. Этот способ рекомендуется для больших проектов со стандартными алгоритмами хеширования. Пример конфигурации (DLE до 11.1):
authProvider: "mysql-8"; # Название способа авторизации
authProviderConfig: {
address: "localhost"; # Адрес MySQL-сервера
port: 3306; # Порт MySQL-сервера (по умолчанию 3306)
username: "root"; # Имя пользователя MySQL-сервера
password: "PSP1004"; # Пароль пользователя
database: "dle?serverTimezone=UTC"; # База данных
timezone: "UTC";
useSSL: false; # Используется ли защищенное соединение
query: "SELECT name FROM dle_users WHERE (email=? OR name=?) AND password=MD5(MD5(?)) LIMIT 1"; # Запрос. Он должен быть SELECT и возвращать имя пользователя в правильном регистре. ? заменяются на параметры ниже:
queryParams: [ "%login%", "%login%", "%password%" ]; # Параметры к запросу. %login% и %password% заменяются на имя пользователя и пароль соответственно
};
Для проверки правильности логина и пароля, этот способ обращается к MySQL-базе данных и сравнивает hash пароля. Этот способ рекомендуется для больших проектов с алгоритмом хеширования BCrypt. Пример конфигурации (DLE от 11.2):
authProvider: "mysql-bcrypt"; # Название способа авторизации
authProviderConfig: {
address: "localhost"; # Адрес MySQL-сервера
port: 3306; # Порт MySQL-сервера (по умолчанию 3306)
username: "root"; # Имя пользователя MySQL-сервера
password: "PSP1004"; # Пароль пользователя
database: "dle?serverTimezone=UTC"; # База данных (при mariadb не нужно указывать serverTimezone)
query: "SELECT password, name FROM dle_users WHERE (email=? OR name=?) LIMIT 1"; # Запрос. Он должен быть SELECT и возвращать имя пользователя в правильном регистре. ? заменяются на параметры ниже:
queryParams: [ "%login%", "%login%" ]; # Параметры к запросу. %login% заменяются на имя пользователя. Пароль передается в лаунчер и сравнивает hash
};
Для проверки правильности логина и пароля, этот способ обращается к MySQL-базе данных и сравнивает hash пароля. Этот способ рекомендуется для больших проектов с алгоритмом хеширования BCrypt. Пример конфигурации (DLE от 11.2):
authProvider: "mysql-8-bcrypt"; # Название способа авторизации
authProviderConfig: {
address: "localhost"; # Адрес MySQL-сервера
port: 3306; # Порт MySQL-сервера (по умолчанию 3306)
username: "root"; # Имя пользователя MySQL-сервера
password: "PSP1004"; # Пароль пользователя
database: "dle?serverTimezone=UTC"; # База данных
timezone: "UTC"; # Замена ?serverTimezone
useSSL: false; # Используется ли защищенное соединение
query: "SELECT password, name FROM dle_users WHERE (email=? OR name=?) LIMIT 1"; # Запрос. Он должен быть SELECT и возвращать имя пользователя в правильном регистре. ? заменяются на параметры ниже:
queryParams: [ "%login%", "%login%" ]; # Параметры к запросу. %login% заменяются на имя пользователя. Пароль передается в лаунчер и сравнивает hash
};
Для проверки правильности логина и пароля, этот способ обращается к SQLite-базе данных. Этот способ рекомендуется для администраторов с психическими отклонениями. Пример конфигурации:
authProvider: "sqlite"; # Название способа авторизации
authProviderConfig: {
path: "db.db"; # Путь до файла базы данных
query: "SELECT name FROM table_name WHERE (email=? OR name=?) AND password=?"; # Запрос. Он должен быть SELECT и возвращать имя пользователя в правильном регистре. ? заменяются на параметры ниже:
queryParams: ["%login%", "%login%", "%password%"]; # Параметры к запросу. %login% и %password% заменяются на имя пользователя и пароль соответственно
};
Для проверки правильности логина и пароля, этот способ обращается к PostgreSQL-базе данных. Этот способ рекомендуется для больших проектов. Пример конфигурации:
authProvider: "postgresql"; # Название способа авторизации
authProviderConfig: {
address: "localhost"; # Адрес PostgreSQL-сервера
port: 5432; # Порт PostgreSQL-сервера (по умолчанию 5432)
username: "root"; # Имя пользователя PostgreSQL-сервера
password: "PSP1004"; # Пароль пользователя
database: "dle"; # База данных
query: "SELECT name FROM dle_users WHERE (email=? OR name=?) AND password=MD5(MD5(?)) LIMIT 1"; # Запрос. Он должен быть SELECT и возвращать имя пользователя в правильном регистре. ? заменяются на параметры ниже:
queryParams: [ "%login%", "%login%", "%password%" ]; # Параметры к запросу. %login% и %password% заменяются на имя пользователя и пароль соответственно
};
Для проверки правильности логина и пароля, этот способ обращается по URL с передачей POST. Я вообще не рекомендую данный способ, если вы не используете headless cms.
Пример конфигурации:
authProvider: "json"; # Название способа авторизации
authProviderConfig: {
url: "https://myserver.tld/auth.php";
userKeyName: "login"; # Ключ POST запроса с именем пользователя (на стороне php $_POST['login'])
passKeyName: "password"; # Ключ POST запроса с паролем пользователя (на стороне php $_POST['password'])
ipKeyName: "ip"; # Ключ POST запроса с IP пользователя (на стороне php $_POST['ip'])
responseUserKeyName: "player"; # Ключ имени пользователя в JSON ответе серверного обработчика
responseErrorKeyName: "error"; # Ключ ошибки в JSON ответе серверного обработчика
};
Для тестирования и отладки можно использовать уже готовый скрипт.
Проверить авторизацию можно с помощью команды auth:
auth "username" "password"
Для управления авторизациями (joinServer, checkServer) и UUID игроков существуют несколько возможных обработчиков. Пока что их всего три, отличающихся только местом хранения: binaryFile, textFile и mysql.
Для того, чтобы получить необходимые данные пользователя, LaunchServer берет данные с официального сервера Mojang. Пример конфигурации:
authHandler: "mojang";
authHandlerConfig: {
# Конфигурация способа обработки UUID не тебуется
};
Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/mojang!
LaunchServer берет данные с сервера MineSocial.NET. Этот обработчик рекомендуется использовать небольшим проектам, т.к. весь процесс автоматизирован. Пример конфигурации:
authHandler: "minesocial";
authHandlerConfig: {
# Конфигурация способа обработки UUID не тебуется
};
Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/minesocial!
LaunchServer берет данные с сервера Ely.by. Пример конфигурации:
authHandler: "elyby";
authHandlerConfig: {
# Конфигурация способа обработки UUID не тебуется
};
Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/elyby!
Способ аналогичен Mojang, за исключением того, что все запросы LaunchServer берет из вашего эмулятора MojangAPI. Документация: joinUrl, hasJoinUrl (+1.7.3.2). Пример конфигурации:
authHandler: "authlib";
authHandlerConfig: {
joinUrl: "https://sessionserver.mojang.com/session/minecraft/join";
hasJoinUrl: "https://sessionserver.mojang.com/session/minecraft/hasJoined";
};
Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/authlib!
Этот обработчик хранит все данные об авторизациях в текстовом файле, генерирует случайные UUID, но есть опция для генерации UUID из MD5 имени пользователя. Пример конфигурации:
authHandler: "textFile";
authHandlerConfig: {
fileName: "authHandler.cfg"; # Имя файла, в котором будут сохранены данные об авторизациях
offlineUUIDs: true; # Использовать генерацию UUID из MD5 имени пользователя
};
Этот обработчик хранит все данные об авторизациях в бинарном файле, в остальном идентичен обработчику textFile. Этот обработчик существует для обратной совместимости и будет удалён в следующей версии.
Этот обработчик хранит все данные об авторизациях в MySQL-базе данных, использует UUID готовые. Этот обработчик рекомендуется использовать всем проектам по мере возможности. Пример конфигурации:
authHandler: "mysql";
authHandlerConfig: {
fetchAll: true; # Загрузить всю базу в кэш при запуске
address: "localhost"; # Адрес MySQL-сервера
port: 3306; # Порт MySQL-сервера (по умолчанию 3306)
username: "root"; # Имя пользователя MySQL-сервера
password: "PSP1004"; # Пароль пользователя
database: "minecraft?serverTimezone=UTC"; # База данных (при mariadb не нужно указывать serverTimezone)
table: "users"; # Таблица
uuidColumn: "uuid"; # Поле с UUID пользователей
usernameColumn: "username"; # Поле с именами пользователей
accessTokenColumn: "accessToken"; # Поле с accessToken
serverIDColumn: "serverID"; # Поле с serverID
};
Для того чтобы добавить недостающие поля и сгеренерировать UUID, можно использовать SQL-запрос:
-- Добавляет недостающие поля в таблицу
ALTER TABLE users
ADD COLUMN uuid CHAR(36) UNIQUE DEFAULT NULL,
ADD COLUMN accessToken CHAR(32) DEFAULT NULL,
ADD COLUMN serverID VARCHAR(41) DEFAULT NULL;
-- Создаёт триггер на генерацию UUID для новых пользователей
DELIMITER //
CREATE TRIGGER setUUID BEFORE INSERT ON users
FOR EACH ROW BEGIN
IF NEW.uuid IS NULL THEN
SET NEW.uuid = UUID();
END IF;
END; //
DELIMITER ;
-- Генерирует UUID для уже существующих пользователей
UPDATE users SET uuid=(SELECT UUID()) WHERE uuid IS NULL;
Этот обработчик хранит все данные об авторизациях в MySQL-базе данных, использует UUID готовые. Этот обработчик рекомендуется использовать всем проектам по мере возможности. Пример конфигурации:
authHandler: "mysql-8";
authHandlerConfig: {
address: "localhost"; # Адрес MySQL-сервера
port: 3306; # Порт MySQL-сервера (по умолчанию 3306)
username: "root"; # Имя пользователя MySQL-сервера
password: "PSP1004"; # Пароль пользователя
database: "minecraft"; # База данных
timezone: "UTC"; # Замена ?serverTimezone
useSSL: false; # Используется ли защищенное соединение
table: "users"; # Таблица
uuidColumn: "uuid"; # Поле с UUID пользователей
usernameColumn: "username"; # Поле с именами пользователей
accessTokenColumn: "accessToken"; # Поле с accessToken
serverIDColumn: "serverID"; # Поле с serverID
};
Этот обработчик хранит все данные об авторизациях в SQLite-базе данных, использует UUID готовые. Этот обработчик рекомендуется использовать администраторам проектов с психическими отклонениями. Пример конфигурации:
authHandler: "sqlite";
authHandlerConfig: {
table: "test"; # Таблица
uuidColumn: "uuid"; # Поле с UUID пользователей
usernameColumn: "username"; # Поле с именами пользователей
accessTokenColumn: "accessToken"; # Поле с accessToken
serverIDColumn: "serverID"; # Поле с serverID
path: "db.db"; # Путь до файла базы данных
};
Этот обработчик хранит все данные об авторизациях в PostgreSQL-базе данных, использует UUID готовые. Этот обработчик рекомендуется использовать всем проектам по мере возможности. Пример конфигурации:
authHandler: "postgresql";
authHandlerConfig: {
fetchAll: true; # Загрузить всю базу в кэш при запуске
address: "localhost"; # Адрес PostgreSQL-сервера
port: 5432; # Порт PostgreSQL-сервера (по умолчанию 5432)
username: "root"; # Имя пользователя PostgreSQL-сервера
password: "PSP1004"; # Пароль пользователя
database: "minecraft"; # База данных
table: "users"; # Таблица
uuidColumn: "uuid"; # Поле с UUID пользователей
usernameColumn: "username"; # Поле с именами пользователей
accessTokenColumn: "accessToken"; # Поле с accessToken
serverIDColumn: "serverID"; # Поле с serverID
};
Этот обработчик хранит все данные об авторизациях в указанной вами базе данных, к которой идет подключение
authHandler: "json";
authHandlerConfig: {
url: "https://myserver.tld/handler.php";
urlCheckServer: "https://myserver.tld/CheckServer.php";
urlUsernameToUUID: "https://myserver.tld/UsernameToUUID.php";
urlUUIDToUsername: "https://myserver.tld/UUIDToUsername.php";
userKeyName: "login";
serverIDKeyName: "serverID";
uuidKeyName: "uuid";
accessTokenKeyName: "accessToken";
responseUserKeyName: "username";
responseErrorKeyName: "error";
};
Сорян, но я это еще делаю...
Скины и плащи полностью отключены. Пример конфигурации:
textureProvider: "void";
textureProviderConfig: {
# Конфигурация не требуется для текстур Void
};
Скины и плащи LaunchServer берет с официального сервера Mojang. Пример конфигурации:
textureProvider: "mojang";
textureProviderConfig: {
# Конфигурация не требуется для текстур Mojang
};
Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/mojang и authHandler/mojang!
Скины и плащи LaunchServer берет с cервера MineSocial.NET. Пример конфигурации:
textureProvider: "minesocial";
textureProviderConfig: {
# Конфигурация не требуется для текстур MineSocial
};
Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/minesocial и authHandler/minesocial!
Скины и плащи LaunchServer берет с cервера Ely.by. Пример конфигурации:
textureProvider: "elyby";
textureProviderConfig: {
# Конфигурация не требуется для текстур Ely.by
};
Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/elyby и authHandler/elyby! Если вам нужен обработчик, который может работать с любым способом авторизации, то посмотрите обработчик request ниже.
Скины и плащи LaunchServer берет из вашего эмулятора MojangAPI. Документацию можно найти здесь: usersURL, profileURL. Пример конфигурации:
textureProvider: "authlib";
textureProviderConfig: {
usersURL: "https://api.mojang.com/users/profiles/minecraft/";
profileURL: "https://sessionserver.mojang.com/session/minecraft/profile/";
};
Для правильной работоспособности, данный способ необходимо использовать в связке с authProvider/authlib и authHandler/authlib!
Скины и плащи настраиваются всего двумя параметрами - маской URL на PNG-файл. Пример конфигурации:
textureProvider: "request";
textureProviderConfig: {
skinsURL: "http://skins.minecraft.net/MinecraftSkins/%username%.png"; # Маска URL скинов
cloaksURL: "http://skins.minecraft.net/MinecraftCloaks/%username%.png"; # Маска URL плащей
};
%username%, %uuid%, %hash% заменяются на имя пользователя, UUID и UUID без тире соответственно.
К примеру, если вам нужна упрощеная система скинов по никнейму от сервиса Ely.by, то вам нужно указать данные так:
textureProvider: "request";
textureProviderConfig: {
skinsURL: "http://skinsystem.ely.by/skins/%username%.png"; # Маска URL скинов
cloaksURL: "http://skinsystem.ely.by/cloaks/%username%.png"; # Маска URL плащей
};
Лаунчсервер так же может автоматически собирать EXE из JAR-файла - для этого требуется поставить параметр launch4J на true. Для того чтобы у EXE-файла была иконка, положите файл favicon.ico в корневую папку, где находится LaunchServer. Пример конфигурации:
launch4J: false; # Включить сборку EXE через Launch4J
launch4JConfig: {
productName: "LauncherSchool"; # Название продукта
fileDesc: "LauncherSchool by KeeperJerry"; # Описание файла
internalName: "Launcher"; # Офцициальное название файла
copyright: "© KeeperJerry"; # Авторские права (на дизайн лаунчера и т.д.)
trademarks: "This product is licensed under GNU v3.0"; # Лицензия
};
В случае возникновения ошибок на 64-битных системах, может помочь установка 32-битного пакета glibc (Debian: lib32z1 | CentOS: glibc.i686).
Клиенты, ресурсы и другие файлы для загрузки лаунчером хранятся в виде субдиректорий в директории updates, а профили, в которых указываются имя директорий, адрес сервера для автозахода, исключения при обновлении и другие сведения, необходимые для запуска клиента хранятся в директории profiles
Для загрузки ресурсов существует команда downloadAsset. Первым аргументом передаётся версия клиента, для которого загружаются ресурсы, вторым аргументом имя субдиректории в updates:
downloadAsset 1.7.10 "asset1.7.10"
Синхронизация (см. ниже) сделается автоматически, отдельно набирать команду не требуется
Для загрузки клиентов существует команда downloadClient. Первым аргументом передаётся версия клиента, вторым аргументом имя субдиректории в updates:
downloadClient 1.7.10 "HiTech"
В данном обновлении была измена функция скачки клиентов: теперь все .cfg файлы скачиваются с зеркала сайта. Так же, сборки разделены на категории через разделитель "-" (тире).
downloadClient 1.7.10 "Vanila" # Скачка чистых версии
downloadClient 1.12.2-forge "HiTech" # Скачка версии с forge
downloadClient 1.14.4-fabric "Fabric" # Скачка fabric версии (доступно с 1.14.х+)
Эти команды так же автоматически сделают файл профиля в директории profiles. Пример файла profile.cfg:
version: "x.x.x"; # Версия клиента
assetIndex: "x.x.x"; # Индекс ресурсов (имя файла в indexes), 1.7.10+
# Runtime-dependent params
dir: "XXXXX"; # Директория клиента
assetDir: "XXXXX"; # Директория ресурсов
# Client params
sortIndex: 0; # Индекс для сортировки профилей в списке
title: "XXXXX"; # Заголовок профиля в лаунчере
serverAddress: "server.tld"; # Имя сервера для автозахода
serverPort: 25565; # Порт сервера для автозахода
# Updater and client watch service
updateFastCheck: true; # Менее надёжная, но намного более быстрая проверка файлов
update: []; # Файлы и директории, которые будут обновлены, но не будут проверяться во время игры
updateVerify: [ # Файлы и директории, которые должны быть обязательно проверены. \\ Нужно для экранизации точки (Regexp)
"libraries",
"natives",
"mods",
"minecraft\\.jar",
"forge\\.jar"
];
updateExclusions: [ # Исключения из файлов и директорий выше
"mods/carpentersblocks",
"mods/ic2",
"mods/railcraft" # и т.д.
];
# Client launcher params
mainClass: "net.minecraft.launchwrapper.Launch"; # Главный класс клиента
classPath: [ "libraries", "minecraft.jar", "forge.jar" ]; # Classpath клиента
jvmArgs: [ # Дополнительные аргументы JVM
"-Dfml.ignorePatchDiscrepancies=true", # Игнорировать различия в патчах
"-Dfml.ignoreInvalidMinecraftCertificates=true", # Игнорировать отсутствие сертификатов
"-Dorg.lwjgl.opengl.Display.allowSoftwareOpenGL=true" # (Не)обладатели драйверов на видеокарту тоже смогут играть
];
clientArgs: [ # Дополнительные аргументы клиента
"--tweakClass", "cpw.mods.fml.common.launcher.FMLTweaker" # Если используете Forge
];
Синхронизация (см. ниже) сделается автоматически, отдельно набирать команду не требуется
Для обеспечения высокой производительности, лаунчсервер кэширует содержимое директорий updates и profiles. При внесении изменений в эти директории, лаунчсервер о них не осведомлён, и при следующем обновлении скорее всего будет ошибка. Для того чтобы синхронизировать содержимое этих директорий, существует две команды - syncUpdates и syncProfiles:
syncUpdates # Синхронизирует содержимое директории updates
syncProfiles # Синхронизирует содержимое директории profiles
syncAll # Синхронизировать обе директории (+1.3.0)
Эти команды надо обязательно выполнять после изменений! Иначе у Вас и Ваших игроков будут ошибки при обновлениях!
Перед сборкой рекомендуется настроить стандартный интерфейс лаунчера в файле runtime/config.js:
var config = {
dir: "kj-launcher", // Директория, в которой лаунчер будет хранить файлы (%user.home%/dir)
title: "KeeperJerry's Launcher", // Заголовок окна лаунчера
icons: [ "favicon.png" ], // Путь к иконкам лаунчера (относительно runtime)
// Настройка окна авторизации
newsURL: "http://launcher-sashok724.keeperjerry.ru/", // URL новостей, которые будут показаны в главном окне
linkText: "Ссылка на зеркало", // Текст ссылки под кнопкой "Авторизация"
linkURL: new java.net.URL("http://mirror.keeperjerry.ru/launcher/v1/"), // URL ссылки под кнопкой "Авторизация"
// Стандартные значения настроек
settingsMagic: 0xBEEF, // Древняя магия, не трогать
autoLoginDefault: false, // Автологин
fullScreenDefault: false, // Полный экран
ramDefault: 1024, // Количество памяти
// Имена директорий с JRE, если не знаете, зачем это нужно - не трогайте
jreMustdie32Dir: "jre-8u131-win32", jreMustdie64Dir: "jre-8u131-win64",
jreLinux32Dir: "jre-8u131-linux32", jreLinux64Dir: "jre-8u131-linux64",
jreMacOSXDir: "jre-8u131-macosx", jreUnknownDir: "jre-8u131-unknown"
}
Настройки находятся только в этой части файла, остальная часть используется самим лаунчером и менять её не нужно!
Для сборки лаунчера существует команда build. Она автоматически упакует runtime, запишет Launcher.jar, соберёт Launcher.exe (если включена интеграция с Launch4J), и автоматически их синхронизирует. Данная команда используется после модификации директории runtime:
build # Собирает Launcher.jar и Launcher.exe
Сразу после сборки, лаунчер можно отправлять игрокам. Если сайт и лаунчсервер на одной VDS, можно сделать symlink на лаунчер с сайта:
ln -s "/home/user/launchserver/Launcher.jar" "/var/www/html/Launcher.jar"
ln -s "/home/user/launchserver/Launcher.exe" "/var/www/html/Launcher.exe"
На данный момент поддерживаются 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 (1.8.9-1.12.2, #8d49424), его legacy-версия (1.7.2-1.8.9, #219819b), Waterfall (1.8.9-1.12.2, #4c87152), Waterfall-Old (1.7.2-1.9.4, #f62f290). Патчи на авторизацию в них уже добавлены, и всё, что Вам требуется сделать, это заменить Launcher.jar. Не забудьте включить ip-forwarding и bungeecord в файлах config.yml и spigot.yml, соответственно. На серверы, стоящие ЗА BungeeCord патчи НЕ ставятся и online-mode НЕ включается. Желательно поставить server-ip на localhost
A: Этот лаунчер - OpenSource проект, соответственно, Вы можете скачивать, использовать и распространять его бесплатно. Но техническую поддержку по вопросам установки и настройки лаунчера от разработчика можно написать автору зеркала. Напишите разработчику для получения всех необходимых инструкций. Приблизительное время работы техподдержки: 9:00-23:00 по московскому времени. VK: keeperjerry.
A: Есть достаточно много людей, которые за довольно скромную плату сверстают дизайн. Можно заказать вёрстку напрямую у разработчика, но стоить это будет дороже (в цену входит адаптация на последующие версии лаунчера, исправление недочётов и расширенная поддержка).
A: Возможно. Для того чтобы заказать нужный Вам функционал, напишите разработчику лаунчера. Разработка напрямую зависит от сложности добавляемого функционала.
A: Если на них можно запускать сторонние Java-приложения, то да, но найти такой Послотовый/Игровой/Shared-хостинг - большая удача. Лаунчер гарантированно поддерживает любые VDS и Dedicated-серверы с возможностью установки Java 8 и открытым 7240 портом.
A: Во-первых, нужно посмотреть что собственно за ошибка. Если ошибка в лаунчере, запустите его через cmd, там обязательно она будет. Может так же помочь JVM-опция -Dlauncher.debug=true, которая выведет более подробную информацию о действиях лаунчера. После сбора информации об ошибке, напишите в техподдержку. После этого ждите ответа и устранения ошибки.
* Версии: - По факту теперь все, но нужны сборки на зеркале...
* authHandler: - mysql-8 - mariadb - postgresql - json - sqlite
* authProvider: - sqlite - postgresql - json - mysql-bcrypt - mysql-8 - mysql-8-bcrypt - mariadb - mariadb-bcrypt
* Команды: - syncAll
* Улучшения: - Кастомные настройки Launch4J (сборка exe) - Лимит на авторизацию от брута - Настройка своего зеркала - Буферизация потоков (ускорение скачивания) - Можно ставить свое название файла лаунчера - Авто-проверка новых версии лаунчера - Автообновление новых версии профилей Minecraft / Выпилили проверку версии (by JCat) - Некоторые дополнения для нормальной работы под MacOS (by xmssss) - Новая встроенная Java (8u282) - Автодописывание команд на TAB как в Bash (by JCat)
(Приведенныениже ниже функции могут поменятся!)
* Улучшения: - Gradle (заебал, Захар, только отьебись от меня) - Кастомный Proguard (случайная кодировка классов под проект) - Свой API и патченые ядра серверов (Эмуляция mojang для ленивых, придется мне хранить uuid & sessions) - Реализация сокета (RSocket под вопросом) - Сбор статистики железа (аналог snooper для публичной статистики железа)
* authHandler: - mojang - authlib
* Улучшения: - Своя система API (аналог Mojang)
* Улучшения: - Gradle (захар уже даже пихает исходники 4 гравита, потому что его заебали просить портировать модули на сашка...) - Автообновление новых версии профилей Minecraft - Другая реализация сокета (WebSoket, RSocket или свой API?) - Другая реализация конфига (в JSON?) - Обновление дизайна (без WinFrame) - Опциональные моды - Новый дизайн - HWID (Отдельная репа)
* authProvider: - postgresql-argon2 - sqlite-argon2
* Улучшения: - Улучшенная система HWID (бесполезная система, больше проблем) - Автообновление на новые версии LaunchServer (не будем трогать древнее зло в продакшене у людей) - Модули (Я лучше пихну этот функционал в лаунчер напрямую) - Двухфакторная авторизация (вы это серьезно? в лаунчер... защиту...)