adding startup progress and style fix
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
#pragma once
|
||||
|
||||
#include <QJsonArray>
|
||||
#include <QList>
|
||||
#include <QSet>
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
|
||||
// Одна библиотека из client.json уже с разрешёнными правилами.
|
||||
struct MinecraftLibrary
|
||||
{
|
||||
QString name; // Maven-координаты: org.lwjgl:lwjgl:3.3.1:natives-windows
|
||||
QString path; // Путь относительно .minecraft/libraries
|
||||
QString url; // Откуда качать, если файла нет (может быть пустым)
|
||||
QString sha1;
|
||||
qint64 size = 0;
|
||||
bool native = false; // Распаковывается в natives, а не кладётся в classpath
|
||||
QStringList extractExclude; // Префиксы, которые не распаковываем
|
||||
};
|
||||
|
||||
// client.json, «схлопнутый» по всей цепочке inheritsFrom.
|
||||
struct MinecraftVersion
|
||||
{
|
||||
QString id; // Имя папки в versions, оно же --version
|
||||
QString mainClass;
|
||||
QString type; // release / snapshot / modified — идёт в --versionType
|
||||
QString assetIndexId; // --assetIndex
|
||||
QString assetsKind; // Поле "assets": legacy, pre-1.6 либо тот же id
|
||||
QString clientJarPath; // Абсолютный путь к <id>.jar (может лежать у родителя)
|
||||
int javaMajor = 8;
|
||||
|
||||
QStringList jvmArgs; // Ещё с неподставленными ${...}
|
||||
QStringList gameArgs;
|
||||
QList<MinecraftLibrary> libraries;
|
||||
|
||||
QString loggingArgument; // -Dlog4j.configurationFile=${path}
|
||||
QString loggingConfigPath; // Абсолютный путь к xml, пустой если конфига нет
|
||||
|
||||
bool supportsQuickPlay = false; // 1.20+ понимает --quickPlayMultiplayer
|
||||
bool hasCustomResolutionArgs = false;
|
||||
|
||||
bool isValid() const { return !id.isEmpty() && !mainClass.isEmpty(); }
|
||||
};
|
||||
|
||||
namespace VersionLoader {
|
||||
|
||||
// Версии, реально установленные в <gameDir>/versions (есть папка и <id>.json).
|
||||
QStringList installedVersions(const QString &gameDir);
|
||||
|
||||
// Читает и разворачивает версию. При ошибке возвращает невалидный объект и пишет error.
|
||||
MinecraftVersion load(const QString &gameDir,
|
||||
const QString &versionId,
|
||||
const QSet<QString> &features,
|
||||
QString *error);
|
||||
|
||||
// Стандартный алгоритм Mojang: правила применяются по порядку, побеждает последнее совпавшее.
|
||||
bool rulesAllow(const QJsonArray &rules, const QSet<QString> &features = {});
|
||||
|
||||
// natives-windows / natives-macos-arm64 / natives-linux ... для текущей машины.
|
||||
QString nativeClassifier();
|
||||
|
||||
QString osName();
|
||||
QString osArch();
|
||||
|
||||
} // namespace VersionLoader
|
||||
Reference in New Issue
Block a user