Иконка ресурса

Мануал Установка, настройка, основная информация по лаунчеру minecraft

AndragorAndragor верифицированный пользователь.

Любитель блендеров
БЛЕНДЕР ШРЕДИНГЕРА
Жид
1C Lead Developer
Драконавирус
Сисадмин
Альфа самец
Старожил II степени
Почетный знак Модератора (I степени)
Почетный знак Модератора (II степени)
Почетный знак Модератора (III степени)
Опора сообщества
Арбитр
Оратор
Мастер Архивов
Медаль Благодарности
Старожил I степени
Участник Новогоднего Фонда 2023
Победитель в номинации 2023
Победитель в номинации 2022
Победитель в номинации 2021
Участник Новогоднего Фонда 2021
Победитель в номинации 2020
Авторитет форума
Стратег Данных
Победитель в номинации 2019
За заслуги перед форумом
Уважаемый собеседник
Хранитель Пера
Куратор Данных
Знаток Dota 2
Веселый флудер
Сообщения
2 094
Розыгрыши
1
Решения
1
Репутация
2 995
Реакции
2 978
Баллы
2 258
Настройка и установка лаунчера, который я выкладывал Исходы лаунчера для Minecraft (Open Source)

Итак, приступим:
Установка на VDS
Запустите скрипт установки в удобной для Вас директории (для работы скрипта нужен curl):
curl -s https://launcher.sashok724.net/download/setup.sh | sh

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

Для работы лаунчера и лаунчсервера нужна Java 8 и выше

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

Способы авторизации (authProvider)
По умолчанию используется способ авторизации accept, который принимает любые пары логин-пароль за верные, и имя пользователя соответствует логину. Такой способ хорошо подходит для тестирования, но для использования в production рекомендуется сменить его на один из других: reject, file, request, или mysql. В отличие от accept, все эти способы требуют дополнительной конфигурации в блоке authProviderConfig:
Код:
authProvider: "accept"; # Название способа авторизации
authProviderConfig: {
# Конфигурация способа авторизации
};

Способ reject
Этот способ авторизации - полная противоположность accept - он принимает любые пары логин-пароль за неверные. Этот способ можно использовать во время проведения технических работ. Пример конфигурации:
Код:
message: "Технические работы, приходите позже!"; # Сообщение, которое будет использовано в качестве ошибки

Способ file
Для проверки правильности логина и пароля, этот способ обращается к указанному файлу. Этот способ рекомендуется для приватных серверов с небольшим количеством игроков. Пример конфигурации:
Код:
file: "users.txt"; # Имя файла, в котором будут пары "логин: пароль"
digest: "SHA-256"; # Алгоритм хеширования пароля. Поддерживаются plain, MD5, SHA-1, SHA-224, SHA-256, SHA-512

Способ request
Для проверки правильности логина и пароля, этот способ обращается к указанному URL. Этот способ рекомендуется для больших проектов с CMS, которые используют нестандартные алгоритмы хеширования. Пример конфигурации:
Код:
url: "https://myserver.tld/auth.php?login=%login%&password=%password%"; # URL, к которому будет обращаться лаунчсервер. %login% и %password% заменяются на указанные логин и пароль, соответственно
response: "OK:(?<username>.+)"; # Маска ответа успешной авторизации. В capture-группе <username> должно быть имя пользователя. В случае, если ответ отличается, он выводится в качестве ошибки

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

Способ mysql
Для проверки правильности логина и пароля, этот способ обращается к MySQL-базе данных. Этот способ рекомендуется для больших проектов со стандартными алгоритмами хеширования. Пример конфигурации (DLE):
Код:
address: "mysqlserver.tld"; # Адрес MySQL-сервера
port: 3306; # Порт MySQL-сервера (по умолчанию 3306)
username: "root"; # Имя пользователя MySQL-сервера
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% заменяются на имя
пользователя и пароль соответственно

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

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

Обработчик textFile
Этот обработчик хранит все данные об авторизациях в текстовом файле, генерирует случайные UUID, но есть опция для генерации UUID из MD5 имени пользователя. Этот обработчик рекомендуется использовать небольшим проектам. Пример конфигурации:
Код:
fileName: "authHandler.cfg"; # Имя файла, в котором будут сохранены данные об авторизациях
offlineUUIDs: false; # Использовать генерацию UUID из MD5 имени пользователя

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

Обработчик mysql
Этот обработчик хранит все данные об авторизациях в MySQL-базе данных, использует UUID готовые. Этот обработчик рекомендуется использовать всем проектам по мере возможности. Пример конфигурации:
Код:
fetchAll: true; # Загрузить всю базу в кэш при запуске

address: "mysqlserver.tld"; # Адрес MySQL-сервера
port: 3306; # Порт MySQL-сервера (по умолчанию 3306)
username: "root"; # Имя пользователя MySQL-сервера
password: "PSP1004"; # Пароль пользователя
database: "minecraft"; # База данных

table: "users"; # Таблица
uuidColumn: "uuid"; # Поле с UUID пользователей
usernameColumn: "username"; # Поле с именами пользователей
accessTokenColumn: "accessToken"; # Поле с accessToken
serverIDColumn: "serverID"; # Поле с serverID

Для того чтобы добавить недостающие поля и сгеренерировать UUID, можно использовать SQL-запрос:
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;

Система скинов и плащей
Скины и плащи настраиваются всего двумя параметрами - маской URL на PNG-файл. Пример конфигурации:
Код:
skinsURL: "http://skins.minecraft.net/MinecraftSkins/%username%.png"; # Маска URL скинов
cloaksURL: "http://skins.minecraft.net/MinecraftCloaks/%username%.png"; # Маска URL плащей

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

Не забудьте поменять textureProvider с mojang на request

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

В случае возникновения ошибок на 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"

Эта команда так же автоматически создаст файл профиля в директории profiles. Пример файла profile.cfg:
JavaScript:
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: [ # Исключения из файлов и директорий выше
    # ...
];

# 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
Для обеспечения высокой производительности, лаунчсервер кэширует содержимое директорий updates и profiles. При внесении изменений в эти директории, лаунчсервер о них не осведомлён, и при следующем обновлении скорее всего будет ошибка. Для того чтобы синхронизировать содержимое этих директорий, существует две команды - syncUpdates и syncProfiles:
Код:
syncUpdates # Синхронизирует содержимое директории updates
syncProfiles # Синхронизирует содержимое директории profiles
Эти команды надо обязательно выполнять после изменений! Иначе у Вас и Ваших игроков будут ошибки при обновлениях!

Сборка и использование, настройка сервера
Перед сборкой рекомендуется настроить стандартный интерфейс лаунчера в файле runtime/config.js:
JavaScript:
var config = {
    dir: "sashok724", // Директория, в которой лаунчер будет хранить файлы (%user.home%/dir)
    title: "sashok724's Launcher", // Заголовок окна лаунчера
    icons: [ "favicon.png" ], // Путь к иконкам лаунчера (относительно runtime)

    // Настройка окна авторизации
    newsURL: "https://launcher.sashok724.net/", // URL новостей, которые будут показаны в главном окне
    linkText: "Бесплатные окна", // Текст ссылки под кнопкой "Авторизация"
    linkURL: new java.net.URL("http://bit.ly/1SP0Rl8"), // URL ссылки под кнопкой "Авторизация"

    // Стандартные значения настроек
    settingsMagic: 0xBEEF, // Древняя магия, не трогать
    autoLoginDefault: false, // Автологин
    fullScreenDefault: false, // Полный экран
    ramDefault: 1024, // Количество памяти

    // Имена директорий с JRE, если не знаете, зачем это нужно - не трогайте
    jreMustdie32Dir: "jre-8u202-win32", jreMustdie64Dir: "jre-8u202-win64",
    jreLinux32Dir: "jre-8u202-linux32", jreLinux64Dir: "jre-8u202-linux64",
    jreMacOSXDir: "jre-8u202-macosx", jreUnknownDir: "jre-8u202-unknown"
}
Настройки находятся только в этой части файла, остальная часть используется самим лаунчером и менять её не нужно!

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

Сразу после сборки, лаунчер можно отправлять игрокам. Если сайт и лаунчсервер на одной VDS, можно сделать symlink на лаунчер с сайта:
Код:
ln -s "/opt/launchserver/Launcher.jar" "/opt/webserver/Launcher.jar"
ln -s "/opt/launchserver/Launcher.exe" "/opt/webserver/Launcher.exe"

Топ часто встречающихся ошибок
  1. java.net.BindException: Address already in use - Вы пытаетесь запустить второй лаунчсервер на одном и том же порту.
  2. Key Modulus Mismatch - Вы поменяли ключи лаунчсервера (Файлы public.key и private.key).
  3. Serverside not accepted this connection - Смотрите вывод лаунчсервера для определения причины.
  4. Не видно скинов других игроков - Включите online-mode в server.properties
  5. Любая ошибка при обновлении клиента - см. Раздел "Синхронизация директорий updates и profiles".
 
  • Мне нравится
Реакции: kick

    kick

    Баллов: 25
    25

Назад
Сверху Снизу