Простой лаунчер для Minecraft сервера.
- Автоматическое обновление клиента
- Загрузка модов
- Запуск игры одной кнопкой
- C# .NET 8
- Windows Forms
- Single-file executable
Скачай последний релиз из Releases
Создать простой лаунчер для Minecraft сервера в виде одного .exe файла. Лаунчер должен автоматически загружать нужную версию игры и модов, проверять обновления и запускать клиент.
- Язык: C# (.NET 6 или выше)
- UI Framework: WinForms (простота реализации)
- Сборка: PublishSingleFile = true (один .exe файл)
- Целевая ОС: Windows 10/11
MinecraftLauncher/
├── MainForm.cs (главное окно)
├── GameUpdater.cs (проверка и загрузка обновлений)
├── MinecraftStarter.cs (запуск игры)
├── ConfigManager.cs (настройки лаунчера)
├── Models/
│ ├── ServerInfo.cs
│ └── GameProfile.cs
└── Resources/ (иконки, изображения)
- Размер: 400x300 пикселей, не изменяемый
- Элементы интерфейса:
- Label с названием сервера
- PictureBox для логотипа (опционально)
- ProgressBar для отображения прогресса загрузки
- Label для статуса ("Проверка версии...", "Загрузка модов...", "Готово к игре")
- Button "Играть" (при обновлении меняется на "Обновление...")
- Label с версией лаунчера (внизу)
- При запуске лаунчера отправлять GET запрос на
http://yourserver.com/api/version - Ожидаемый JSON ответ:
{
"minecraft_version": "1.20.1",
"mods_hash": "abc123def456",
"client_files": [
{
"name": "minecraft-1.20.1.jar",
"url": "http://yourserver.com/files/minecraft-1.20.1.jar",
"hash": "sha256_hash"
},
{
"name": "forge-installer.jar",
"url": "http://yourserver.com/files/forge-installer.jar",
"hash": "sha256_hash"
}
],
"mods": [
{
"name": "mod1.jar",
"url": "http://yourserver.com/mods/mod1.jar",
"hash": "sha256_hash"
}
]
}%APPDATA%/.minecraft_custom/
├── versions/
│ └── server-1.20.1/
├── mods/
├── launcher_profiles.json
└── launcher_version.txt
- Проверить существование локальных файлов
- Сравнить SHA256 хеши локальных файлов с серверными
- Если файл отсутствует или хеш не совпадает - загрузить
- Показывать прогресс загрузки в ProgressBar
- После успешного обновления - активировать кнопку "Играть"
- Параметры JVM:
java -Xmx4G -Xms2G
-Djava.library.path="%APPDATA%/.minecraft_custom/versions/server-1.20.1/natives"
-cp "%APPDATA%/.minecraft_custom/libraries/*;%APPDATA%/.minecraft_custom/versions/server-1.20.1/server-1.20.1.jar"
net.minecraft.client.main.Main
--username "Player"
--version "server-1.20.1"
--gameDir "%APPDATA%/.minecraft_custom"
--assetsDir "%APPDATA%/.minecraft_custom/assets"
--assetIndex "1.20"
--accessToken "dummy"- Отсутствие интернет соединения
- Недоступность сервера обновлений
- Ошибки при загрузке файлов
- Недостаток места на диске
- Отсутствие Java
- Время запуска лаунчера: не более 3 секунд
- Скорость загрузки: показывать прогресс, поддержка resume
- Потребление памяти: не более 100MB
- Проверка цифровых подписей загружаемых файлов (SHA256)
- Валидация URL для предотвращения path traversal
- Минималистичный дизайн
- Отзывчивый интерфейс (async операции)
- Информативные сообщения об ошибках
{
"server_name": "Мой Minecraft Сервер",
"update_server_url": "http://yourserver.com/api",
"minecraft_directory": "%APPDATA%/.minecraft_custom",
"java_path": "java",
"jvm_args": "-Xmx4G -Xms2G"
}public partial class MainForm : Form
{
private Button playButton;
private ProgressBar progressBar;
private Label statusLabel;
private GameUpdater updater;
// async void playButton_Click - проверка обновлений и запуск
// async Task CheckForUpdates() - основная логика
// void UpdateProgress(int percentage, string status) - обновление UI
}public class GameUpdater
{
private readonly HttpClient httpClient;
// async Task<ServerInfo> GetServerVersion()
// async Task DownloadFile(string url, string localPath, IProgress<int> progress)
// string CalculateFileHash(string filePath)
// async Task<bool> ValidateLocalFiles(ServerInfo serverInfo)
}- Создавать файл launcher.log с информацией о:
- Времени запуска
- Результатах проверки версий
- Ошибках загрузки
- Параметрах запуска игры
- Проверка версии самого лаунчера при запуске
- Возможность скачать новую версию (в будущем)
В итоге должен получиться один файл MinecraftLauncher.exe размером около 20-30MB, который можно просто скопировать на любой компьютер с Windows и запустить.
- Высокий: Базовый UI, проверка версий, загрузка файлов
- Средний: Обработка ошибок, логирование, конфигурация
- Низкий: Автообновление лаунчера, дополнительные настройки