Core 模块

Core层包含OrionLauncher的核心业务逻辑和功能实现,采用模块化设计,包括:

  • 仓库模块: 配置管理、路径管理和常量定义

  • 请求模块: 网络请求和文件下载功能

  • 版本模块: Minecraft版本信息管理

  • 用户模块: 用户账户管理和认证

  • 游戏模块: 本地游戏版本管理和进程控制

  • 安装模块: Minecraft安装调度和管理

  • 启动器库: 内置的minecraft_launcher_lib

核心模块概述

Core核心模块。

该模块包含OrionLauncher的核心业务逻辑和功能实现,包括:

  • 请求模块:网络请求和下载功能

  • 仓库模块:配置和路径管理

  • 版本模块:Minecraft版本管理

  • 用户模块:用户账户管理

  • 安装模块:Minecraft安装调度和管理

  • 游戏模块:本地游戏版本管理

子模块:

Repository: 仓库管理模块 request: 网络请求模块 version: 版本管理模块 user: 用户管理模块 Installation: 安装调度模块 game: 游戏管理模块

仓库模块 (Repository)

仓库模块提供配置管理、路径管理等基础设施功能。

配置管理

class Core.Repository.Config.Config[源代码]

基类:Repository

__init__()[源代码]

初始化Repository实例。

class Core.Repository.Config.Constant[源代码]

基类:Repository

只读配置,用于存储一些固定不变的配置项

name: str = 'OrionLauncher'
organization: str = 'OrionLauncher'
repository: str = 'https://github.com/OrionLauncher/OrionLauncher'
license: str = 'GNU LGPL-2.1 license'
license_url: str = 'https://github.com/OrionLauncher/OrionLauncher/blob/main/LICENSE'
class Core.Repository.Config.Path[源代码]

基类:Repository

__init__()[源代码]

初始化Repository实例。

仓库基础

仓库管理模块。

该模块包含路径管理、文件仓库等功能。

请求模块 (request)

请求模块提供网络请求和文件下载功能,包含多种优化的下载器实现。

该模块针对Minecraft的下载场景进行了特别优化,包括:

  • 基础下载器: 提供通用的异步文件下载功能

  • Minecraft专用下载器: 针对Minecraft大量小文件下载场景优化

  • 优化下载器: 包含内存优化、连接池复用等高级功能

  • 下载缓存: 智能缓存机制,避免重复下载

基础下载器

文件下载器模块。

该模块提供异步文件下载功能,支持进度跟踪、速度监控和下载取消。

class Core.request.downloader.ConnectionPoolManager(max_connections_per_host: int = 20, max_keepalive_connections: int = 10)[源代码]

基类:object

HTTP连接池管理器

为不同的域名维护独立的连接池,优化大量小文件下载的性能。

__init__(max_connections_per_host: int = 20, max_keepalive_connections: int = 10)[源代码]

初始化连接池管理器

参数:
  • max_connections_per_host -- 每个主机的最大连接数

  • max_keepalive_connections -- 最大保持活跃的连接数

async get_client(url: str) AsyncClient[源代码]

获取指定URL对应的HTTP客户端

参数:

url -- 目标URL

返回:

HTTP客户端实例

async close_all()[源代码]

关闭所有HTTP客户端

async Core.request.downloader.get_connection_pool_manager() ConnectionPoolManager[源代码]

获取全局连接池管理器实例

class Core.request.downloader.FileDownloader(callback_group: IDownloadSingle)[源代码]

基类:object

异步文件下载器。

提供异步文件下载功能,支持进度跟踪和下载取消。 使用回调组模式统一管理下载事件(开始、进度、速度、完成、错误)。 适用于需要长时间下载大文件的场景。

_is_cancelled

标记当前下载是否被取消

Type:

bool

_callback_group

回调组,用于处理下载事件

Type:

IDownloadSingle

参数:

callback_group -- 实现 IDownloadSingle 接口的回调组对象,用于处理下载过程中的各种事件

示例

基本使用方法:

# 创建实现 IDownloadSingle 的回调组
callback_group = MyDownloadCallbacks()

# 创建下载器
downloader = FileDownloader(callback_group)

# 开始下载
await downloader.download_file(
    "https://example.com/file.zip",
    "/path/to/save/file.zip"
)

备注

  • 回调组必须实现 IDownloadSingle 接口的所有方法

  • 下载过程中会自动调用相应的回调方法

  • 支持下载取消和错误处理

__init__(callback_group: IDownloadSingle)[源代码]

初始化下载器实例。

参数:

callback_group -- 实现 IDownloadSingle 接口的回调组对象

async download_file(file: DownloadFile) str[源代码]

异步下载文件。

从 DownloadFile 对象中获取下载信息并下载文件到指定路径, 通过回调组报告下载状态、进度和速度。 支持大文件分块下载,避免内存占用过多。

参数:

file -- DownloadFile 对象,包含以下字段: - url (str): 要下载的文件URL(必需) - path (str): 文件保存的本地路径(可选) - size (int): 文件大小(字节)(可选) - sha1 (str): 文件SHA1校验和(可选)

返回:

下载成功的消息字符串

抛出:

备注

  • 下载过程中会定期检查取消状态

  • 根据文件大小动态调整分块大小

  • 每秒更新一次下载速度

  • 如果无法获取文件大小,进度回调不会被调用

  • 使用回调组统一管理所有下载事件

  • 如果 file 对象中未提供 size,将尝试从响应头获取

  • 使用连接池优化网络连接复用

cancel() None[源代码]

取消当前正在进行的下载。

设置取消标志,使下载循环在下一次迭代时抛出CancelledError异常。

备注

  • 取消操作是异步的,不会立即停止下载

  • 下载器会在下一个数据块处理时检查取消状态

  • 已下载的部分文件会保留在磁盘上

示例

在另一个协程中取消下载:

# 启动下载
download_task = asyncio.create_task(
    downloader.download_file(url, path)
)

# 3秒后取消
await asyncio.sleep(3)
downloader.cancel()

try:
    await download_task
except asyncio.CancelledError:
    print("下载已取消")
class Core.request.downloader.DownloadManager(callback_group: IDownloadMultiThread, tasks: List[DownloadFile], concurrent_count: int | None = None, max_retries: int = 3)[源代码]

基类:object

并发下载管理器

作为多个 FileDownloader 的聚合器,将单个文件下载的回调信号 重新封装为整体并发下载的回调信号,提供给上层使用。

支持自动重试机制:当单个任务失败时,会自动重试指定次数, 重试时会清零该任务的进度并重新开始下载。

主要职责: 1. 管理多个文件的并发下载 2. 聚合各个文件的下载状态 3. 计算总体进度和速度 4. 向上层提供统一的并发下载回调 5. 处理下载失败的自动重试

__init__(callback_group: IDownloadMultiThread, tasks: List[DownloadFile], concurrent_count: int | None = None, max_retries: int = 3)[源代码]
参数:
  • callback_group -- 上层回调组,接收聚合后的并发下载事件

  • tasks -- 下载任务列表

  • concurrent_count -- 并发数量,如果为None则自动计算最优值

  • max_retries -- 单个任务的最大重试次数,默认为3次

async schedule() None[源代码]

调度执行所有下载任务

cancel()[源代码]

取消所有下载

class Core.request.downloader.BatchDownloadManager(callback_group: IDownloadMultiThread, tasks: List[DownloadFile], concurrent_count: int | None = None, max_retries: int = 3, batch_size: int = 10)[源代码]

基类:DownloadManager

批量下载管理器

专门针对大量小文件下载场景优化的下载管理器。 通过批量处理、连接复用等技术提升下载性能。

__init__(callback_group: IDownloadMultiThread, tasks: List[DownloadFile], concurrent_count: int | None = None, max_retries: int = 3, batch_size: int = 10)[源代码]
参数:
  • callback_group -- 上层回调组,接收聚合后的并发下载事件

  • tasks -- 下载任务列表

  • concurrent_count -- 并发数量,如果为None则自动计算最优值

  • max_retries -- 单个任务的最大重试次数,默认为3次

  • batch_size -- 批处理大小,每批处理的文件数量

async schedule() None[源代码]

调度执行所有下载任务(批量优化版本)

Minecraft专用下载器

Minecraft专用优化下载器。

专门针对Minecraft大量小文件下载场景优化的下载器, 整合了连接池、内存优化、批量处理等优化功能。 利用Minecraft文件本身的复用机制,跳过已存在的文件。

class Core.request.minecraft_downloader.MinecraftDownloadManager(callback_group: IDownloadMultiThread, tasks: List[DownloadFile], minecraft_directory: str, concurrent_count: int | None = None, max_retries: int = 3)[源代码]

基类:object

Minecraft专用下载管理器

专门针对Minecraft下载场景优化的下载管理器: 1. 智能连接池管理 2. 文件存在性检查(利用Minecraft自身复用机制) 3. 内存优化 4. 智能并发控制

__init__(callback_group: IDownloadMultiThread, tasks: List[DownloadFile], minecraft_directory: str, concurrent_count: int | None = None, max_retries: int = 3)[源代码]

初始化Minecraft下载管理器

参数:
  • callback_group -- 回调组接口

  • tasks -- 下载任务列表

  • minecraft_directory -- Minecraft安装目录

  • concurrent_count -- 并发数量,None表示自动计算

  • max_retries -- 最大重试次数

async download_minecraft_files() bool[源代码]

下载Minecraft文件

返回:

下载是否成功

cancel()[源代码]

取消下载

优化下载器

优化的文件下载器模块。

专门针对Minecraft大量小文件下载场景优化的下载器实现。 包含内存优化、连接池复用、智能缓存等功能。

class Core.request.optimized_downloader.MemoryOptimizedDownloader(callback_group: IDownloadSingle)[源代码]

基类:object

内存优化的文件下载器

专门针对大量小文件下载场景优化,包含以下特性: 1. 智能内存管理 2. 文件校验缓存 3. 连接池复用 4. 动态分块大小

__init__(callback_group: IDownloadSingle)[源代码]

初始化内存优化下载器

参数:

callback_group -- 回调组接口

async download_file(file: DownloadFile) str[源代码]

下载单个文件(内存优化版本)

参数:

file -- 下载文件信息

返回:

下载成功消息

cancel()[源代码]

取消下载

下载缓存

下载缓存管理模块。

提供智能缓存机制,避免重复下载已存在且校验正确的文件。 支持文件完整性验证、缓存索引管理等功能。

class Core.request.download_cache.CacheEntry(file_path: str, url: str, size: int, sha1: str, download_time: float, last_verified: float)[源代码]

基类:object

缓存条目

file_path: str
url: str
size: int
sha1: str
download_time: float
last_verified: float
to_dict() Dict[源代码]

转换为字典

classmethod from_dict(data: Dict) CacheEntry[源代码]

从字典创建

__init__(file_path: str, url: str, size: int, sha1: str, download_time: float, last_verified: float) None
class Core.request.download_cache.DownloadCache(cache_dir: str = '.download_cache')[源代码]

基类:object

下载缓存管理器

管理已下载文件的缓存信息,避免重复下载。 提供文件完整性验证、缓存清理等功能。

__init__(cache_dir: str = '.download_cache')[源代码]

初始化缓存管理器

参数:

cache_dir -- 缓存目录路径

is_file_cached(url: str, file_path: str, expected_size: int = 0, expected_sha1: str = '') bool[源代码]

检查文件是否已缓存且有效

参数:
  • url -- 文件URL

  • file_path -- 文件路径

  • expected_size -- 期望文件大小

  • expected_sha1 -- 期望SHA1值

返回:

文件是否已缓存且有效

add_to_cache(url: str, file_path: str, size: int, sha1: str = '')[源代码]

添加文件到缓存

参数:
  • url -- 文件URL

  • file_path -- 文件路径

  • size -- 文件大小

  • sha1 -- 文件SHA1值

get_cache_stats() Dict[源代码]

获取缓存统计信息

返回:

缓存统计信息

clear_cache()[源代码]

清空缓存

Core.request.download_cache.get_download_cache() DownloadCache[源代码]

获取全局下载缓存实例

请求模块基础

请求处理模块。

该模块包含网络请求相关的功能,包括文件下载、API调用等。

class Core.request.FileDownloader(callback_group: IDownloadSingle)[源代码]

基类:object

异步文件下载器。

提供异步文件下载功能,支持进度跟踪和下载取消。 使用回调组模式统一管理下载事件(开始、进度、速度、完成、错误)。 适用于需要长时间下载大文件的场景。

_is_cancelled

标记当前下载是否被取消

Type:

bool

_callback_group

回调组,用于处理下载事件

Type:

IDownloadSingle

参数:

callback_group -- 实现 IDownloadSingle 接口的回调组对象,用于处理下载过程中的各种事件

示例

基本使用方法:

# 创建实现 IDownloadSingle 的回调组
callback_group = MyDownloadCallbacks()

# 创建下载器
downloader = FileDownloader(callback_group)

# 开始下载
await downloader.download_file(
    "https://example.com/file.zip",
    "/path/to/save/file.zip"
)

备注

  • 回调组必须实现 IDownloadSingle 接口的所有方法

  • 下载过程中会自动调用相应的回调方法

  • 支持下载取消和错误处理

__init__(callback_group: IDownloadSingle)[源代码]

初始化下载器实例。

参数:

callback_group -- 实现 IDownloadSingle 接口的回调组对象

async download_file(file: DownloadFile) str[源代码]

异步下载文件。

从 DownloadFile 对象中获取下载信息并下载文件到指定路径, 通过回调组报告下载状态、进度和速度。 支持大文件分块下载,避免内存占用过多。

参数:

file -- DownloadFile 对象,包含以下字段: - url (str): 要下载的文件URL(必需) - path (str): 文件保存的本地路径(可选) - size (int): 文件大小(字节)(可选) - sha1 (str): 文件SHA1校验和(可选)

返回:

下载成功的消息字符串

抛出:

备注

  • 下载过程中会定期检查取消状态

  • 根据文件大小动态调整分块大小

  • 每秒更新一次下载速度

  • 如果无法获取文件大小,进度回调不会被调用

  • 使用回调组统一管理所有下载事件

  • 如果 file 对象中未提供 size,将尝试从响应头获取

  • 使用连接池优化网络连接复用

cancel() None[源代码]

取消当前正在进行的下载。

设置取消标志,使下载循环在下一次迭代时抛出CancelledError异常。

备注

  • 取消操作是异步的,不会立即停止下载

  • 下载器会在下一个数据块处理时检查取消状态

  • 已下载的部分文件会保留在磁盘上

示例

在另一个协程中取消下载:

# 启动下载
download_task = asyncio.create_task(
    downloader.download_file(url, path)
)

# 3秒后取消
await asyncio.sleep(3)
downloader.cancel()

try:
    await download_task
except asyncio.CancelledError:
    print("下载已取消")

版本模块 (version)

版本模块提供Minecraft版本信息的获取、解析和缓存功能。

Minecraft版本管理

Minecraft版本管理模块。

该模块提供Minecraft版本信息的获取、解析和缓存功能,支持多镜像源。

主要功能:
  • 从官方API或BMCLAPI获取版本清单

  • 解析和存储版本信息

  • 提供版本过滤和查询功能

  • 内置缓存机制提升性能

示例

获取最新的正式版本:

import asyncio
from Core.version.minecraft_version import get_versions

async def main():
    versions = await get_versions(["release"])
    print(f"最新正式版: {versions['latest']}")

asyncio.run(main())
class Core.version.minecraft_version.VersionRequestOfficial[源代码]

基类:object

Minecraft官方版本API请求器。

用于从Mojang官方API获取Minecraft版本清单信息。

host

API主机地址

Type:

str

path

API路径

Type:

str

__init__() None[源代码]

初始化官方API请求器。

async request(finnished: ~typing.Callable[[~typing.Dict[str, ~typing.Any]], None] | None = <function empty>, error: ~typing.Callable[[str], None] | None = <function empty>) Dict[str, Any] | List[Any] | None[源代码]

发送版本清单请求。

参数:
  • finnished -- 请求成功时的回调函数,接收响应数据作为参数

  • error -- 请求失败时的回调函数,接收错误信息作为参数

返回:

从API获取的版本清单数据,通常为包含版本信息的字典

抛出:
class Core.version.minecraft_version.VersionRequestBMCLAPI[源代码]

基类:VersionRequestOfficial

BMCLAPI版本请求器。

继承自VersionRequestOfficial,使用BMCLAPI镜像源获取版本信息。 BMCLAPI提供了Mojang官方API的国内镜像,可以提高访问速度。

__init__() None[源代码]

初始化BMCLAPI请求器。

Core.version.minecraft_version.mirror: Dict[str, VersionRequestOfficial] = {'BMCLAPI': <Core.version.minecraft_version.VersionRequestBMCLAPI object>, 'Official': <Core.version.minecraft_version.VersionRequestOfficial object>}

镜像源映射字典,包含所有可用的版本API镜像源

class Core.version.minecraft_version.MinecraftVersion(data: Dict[str, Any])[源代码]

基类:object

Minecraft版本信息解析器。

解析从API获取的版本清单数据,提供结构化的版本信息访问接口。

source

原始版本清单数据

Type:

Dict[str, Any]

latest

最新版本信息,包含release和snapshot

Type:

Dict[str, str]

versions

所有版本的详细信息字典

Type:

Dict[str, Dict[str, Union[str, int]]]

示例

解析版本数据:

data = {"latest": {"release": "1.21", "snapshot": "24w44a"}, "versions": [...]}
version = MinecraftVersion(data)
print(f"最新正式版: {version.latest['release']}")
print(f"版本总数: {len(version.versions)}")
__init__(data: Dict[str, Any]) None[源代码]

初始化版本解析器。

参数:

data -- 从API获取的原始版本清单数据,应包含latest和versions字段

load() None[源代码]

解析版本信息。

从原始数据中提取最新版本信息和所有版本详情, 构建便于访问的数据结构。

async Core.version.minecraft_version.load_versions(finnished: ~typing.Callable[[~typing.Dict[str, ~typing.Any]], None] | None = <function empty>, error: ~typing.Callable[[str], None] | None = <function empty>) MinecraftVersion[源代码]

加载Minecraft版本信息。

从配置的镜像源获取最新的版本清单数据,解析后存储到持久化缓存中。 该函数会自动选择配置的镜像源,如果镜像源不存在则回退到官方源。

参数:
  • finnished -- 请求成功时的回调函数,接收响应数据作为参数

  • error -- 请求失败时的回调函数,接收错误信息作为参数

返回:

解析后的MinecraftVersion实例,包含完整的版本信息

抛出:

备注

该函数会更新persistence中的版本缓存和更新时间戳。

async Core.version.minecraft_version.get_versions(types: ~typing.List[str] = None, finnished: ~typing.Callable[[~typing.Dict[str, ~typing.Any]], None] | None = <function empty>, error: ~typing.Callable[[str], None] | None = <function empty>) Dict[str, str | Dict[str, Dict[str, str | int]]][源代码]

获取指定类型的Minecraft版本信息。

根据指定的版本类型过滤版本列表,支持缓存机制以提高性能。 如果缓存过期(超过600秒)或不存在,会自动重新加载版本数据。

参数:
  • types -- 要获取的版本类型列表,默认为["release", "snapshot", "old_beta", "old_alpha"]。 可选值包括: - "release": 正式版 - "snapshot": 快照版 - "old_beta": 旧Beta版 - "old_alpha": 旧Alpha版

  • finnished -- 请求成功时的回调函数,接收响应数据作为参数

  • error -- 请求失败时的回调函数,接收错误信息作为参数

返回:

  • "latest" (str): 最新版本ID,优先返回release,其次snapshot

  • "versions" (Dict[str, Dict[str, Union[str, int]]]): 过滤后的版本详情字典

返回类型:

包含版本信息的字典,结构如下

抛出:

示例

获取正式版本:

versions = await get_versions(["release"])
print(f"最新正式版: {versions['latest']}")
for version_id, version_info in versions['versions'].items():
    print(f"版本: {version_id}, 类型: {version_info['type']}")

备注

  • 缓存有效期为600秒(10分钟)

  • 版本数据存储在persistence["minecraft.version_manifest"]中

  • latest字段优先级:release > snapshot

版本模块基础

版本管理模块。

该模块提供Minecraft版本信息的获取、解析和缓存功能。

主要功能:
  • Minecraft版本信息的获取和解析

  • 多镜像源支持(官方源、BMCLAPI)

  • 版本过滤和查询

  • 缓存机制

Classes:

VersionRequestOfficial: 官方API请求器 VersionRequestBMCLAPI: BMCLAPI镜像请求器 MinecraftVersion: 版本信息解析器

Functions:

load_versions: 加载版本信息 get_versions: 获取指定类型的版本信息

Variables:

mirror: 镜像源映射字典

class Core.version.VersionRequestOfficial[源代码]

基类:object

Minecraft官方版本API请求器。

用于从Mojang官方API获取Minecraft版本清单信息。

host

API主机地址

Type:

str

path

API路径

Type:

str

__init__() None[源代码]

初始化官方API请求器。

async request(finnished: ~typing.Callable[[~typing.Dict[str, ~typing.Any]], None] | None = <function empty>, error: ~typing.Callable[[str], None] | None = <function empty>) Dict[str, Any] | List[Any] | None[源代码]

发送版本清单请求。

参数:
  • finnished -- 请求成功时的回调函数,接收响应数据作为参数

  • error -- 请求失败时的回调函数,接收错误信息作为参数

返回:

从API获取的版本清单数据,通常为包含版本信息的字典

抛出:
class Core.version.VersionRequestBMCLAPI[源代码]

基类:VersionRequestOfficial

BMCLAPI版本请求器。

继承自VersionRequestOfficial,使用BMCLAPI镜像源获取版本信息。 BMCLAPI提供了Mojang官方API的国内镜像,可以提高访问速度。

__init__() None[源代码]

初始化BMCLAPI请求器。

class Core.version.MinecraftVersion(data: Dict[str, Any])[源代码]

基类:object

Minecraft版本信息解析器。

解析从API获取的版本清单数据,提供结构化的版本信息访问接口。

source

原始版本清单数据

Type:

Dict[str, Any]

latest

最新版本信息,包含release和snapshot

Type:

Dict[str, str]

versions

所有版本的详细信息字典

Type:

Dict[str, Dict[str, Union[str, int]]]

示例

解析版本数据:

data = {"latest": {"release": "1.21", "snapshot": "24w44a"}, "versions": [...]}
version = MinecraftVersion(data)
print(f"最新正式版: {version.latest['release']}")
print(f"版本总数: {len(version.versions)}")
__init__(data: Dict[str, Any]) None[源代码]

初始化版本解析器。

参数:

data -- 从API获取的原始版本清单数据,应包含latest和versions字段

load() None[源代码]

解析版本信息。

从原始数据中提取最新版本信息和所有版本详情, 构建便于访问的数据结构。

async Core.version.load_versions(finnished: ~typing.Callable[[~typing.Dict[str, ~typing.Any]], None] | None = <function empty>, error: ~typing.Callable[[str], None] | None = <function empty>) MinecraftVersion[源代码]

加载Minecraft版本信息。

从配置的镜像源获取最新的版本清单数据,解析后存储到持久化缓存中。 该函数会自动选择配置的镜像源,如果镜像源不存在则回退到官方源。

参数:
  • finnished -- 请求成功时的回调函数,接收响应数据作为参数

  • error -- 请求失败时的回调函数,接收错误信息作为参数

返回:

解析后的MinecraftVersion实例,包含完整的版本信息

抛出:

备注

该函数会更新persistence中的版本缓存和更新时间戳。

async Core.version.get_versions(types: ~typing.List[str] = None, finnished: ~typing.Callable[[~typing.Dict[str, ~typing.Any]], None] | None = <function empty>, error: ~typing.Callable[[str], None] | None = <function empty>) Dict[str, str | Dict[str, Dict[str, str | int]]][源代码]

获取指定类型的Minecraft版本信息。

根据指定的版本类型过滤版本列表,支持缓存机制以提高性能。 如果缓存过期(超过600秒)或不存在,会自动重新加载版本数据。

参数:
  • types -- 要获取的版本类型列表,默认为["release", "snapshot", "old_beta", "old_alpha"]。 可选值包括: - "release": 正式版 - "snapshot": 快照版 - "old_beta": 旧Beta版 - "old_alpha": 旧Alpha版

  • finnished -- 请求成功时的回调函数,接收响应数据作为参数

  • error -- 请求失败时的回调函数,接收错误信息作为参数

返回:

  • "latest" (str): 最新版本ID,优先返回release,其次snapshot

  • "versions" (Dict[str, Dict[str, Union[str, int]]]): 过滤后的版本详情字典

返回类型:

包含版本信息的字典,结构如下

抛出:

示例

获取正式版本:

versions = await get_versions(["release"])
print(f"最新正式版: {versions['latest']}")
for version_id, version_info in versions['versions'].items():
    print(f"版本: {version_id}, 类型: {version_info['type']}")

备注

  • 缓存有效期为600秒(10分钟)

  • 版本数据存储在persistence["minecraft.version_manifest"]中

  • latest字段优先级:release > snapshot

用户模块 (user)

用户模块提供用户账户管理和认证功能。

用户管理模块。

该模块包含用户账户管理、认证等功能。

class Core.user.OfflineUser[源代码]

基类:object

static create(name: str) UserInfo[源代码]

游戏模块 (game)

游戏模块提供本地游戏版本管理和游戏进程控制功能。

该模块负责管理已安装的Minecraft版本和游戏运行时的进程控制:

  • 本地版本管理: 扫描和管理本地已安装的Minecraft版本

  • 游戏进程管理: 启动和监控Minecraft游戏进程

本地版本管理

本地Minecraft版本管理模块。

该模块提供本地已安装Minecraft版本的检测、解析和管理功能。

主要功能:
  • 扫描指定目录下的已安装Minecraft版本

  • 解析版本配置文件获取详细信息

  • 提供版本信息的结构化访问接口

  • 支持多种版本类型(原版、Forge、Fabric等)

示例

获取本地已安装版本:

from Core.game.local_versions import get_local_minecraft_versions

minecraft_dir = "/path/to/.minecraft"
versions = get_local_minecraft_versions(minecraft_dir)

for version in versions:
    print(f"版本: {version['id']}")
    print(f"类型: {version['type']}")
    print(f"发布时间: {version['releaseTime']}")
class Core.game.local_versions.LocalVersionInfo(version_data: Dict[str, Any], version_path: Path)[源代码]

基类:object

本地Minecraft版本信息类。

封装本地已安装版本的详细信息,包括版本ID、类型、配置等。

id

版本ID

Type:

str

type

版本类型(release、snapshot、old_beta、old_alpha等)

Type:

str

releaseTime

发布时间

Type:

datetime

complianceLevel

合规级别

Type:

int

mainClass

主类名

Type:

str

minecraftArguments

Minecraft启动参数(旧格式)

Type:

str

arguments

启动参数(新格式)

Type:

Dict

libraries

依赖库列表

Type:

List

assets

资源版本

Type:

str

javaVersion

Java版本要求

Type:

Dict

inheritsFrom

继承的版本ID

Type:

Optional[str]

jar

JAR文件名

Type:

Optional[str]

custom_data

自定义数据

Type:

Dict

__init__(version_data: Dict[str, Any], version_path: Path)[源代码]

初始化版本信息。

参数:
  • version_data -- 从版本JSON文件解析的数据

  • version_path -- 版本目录路径

to_dict() Dict[str, Any][源代码]

转换为字典格式。

返回:

包含版本信息的字典

is_modded() bool[源代码]

检查是否为模组版本。

返回:

是否为模组版本

get_mod_loader() str | None[源代码]

获取模组加载器类型。

返回:

模组加载器类型(forge、fabric、quilt等),如果不是模组版本则返回None

Core.game.local_versions.get_local_minecraft_versions(minecraft_directory: str | Path) List[LocalVersionInfo][源代码]

获取指定目录下的本地Minecraft版本列表。

扫描Minecraft目录下的versions文件夹,解析每个版本的配置文件, 返回包含详细信息的版本列表。

参数:

minecraft_directory -- Minecraft目录路径

返回:

本地版本信息列表,按发布时间倒序排列

抛出:

示例

获取本地版本:

versions = get_local_minecraft_versions("/path/to/.minecraft")
for version in versions:
    print(f"版本: {version.id}, 类型: {version.type}")
Core.game.local_versions.get_local_minecraft_versions_dict(minecraft_directory: str | Path) List[Dict[str, Any]][源代码]

获取本地Minecraft版本列表(字典格式)。

这是get_local_minecraft_versions的便捷版本,直接返回字典列表。

参数:

minecraft_directory -- Minecraft目录路径

返回:

版本信息字典列表

Core.game.local_versions.find_version_by_id(minecraft_directory: str | Path, version_id: str) LocalVersionInfo | None[源代码]

根据版本ID查找本地版本。

参数:
  • minecraft_directory -- Minecraft目录路径

  • version_id -- 要查找的版本ID

返回:

找到的版本信息,未找到时返回None

Core.game.local_versions.get_version_types_summary(minecraft_directory: str | Path) Dict[str, int][源代码]

获取版本类型统计。

参数:

minecraft_directory -- Minecraft目录路径

返回:

版本类型统计字典,键为版本类型,值为数量

游戏进程管理

启动 Minecraft JVM,管理游戏进程的全生命周期

class Core.game.daemon.GameProcess(command: list[str], directory: str)[源代码]

基类:object

游戏进程管理类

__init__(command: list[str], directory: str)[源代码]

游戏模块基础

游戏管理模块。

该模块提供Minecraft游戏相关的管理功能,包括本地版本检测、 游戏配置管理等功能。

主要功能:
  • 本地已安装版本的检测和管理

  • 版本配置文件的解析

  • 游戏目录结构的管理

子模块:

local_versions: 本地版本管理模块

Classes:

LocalVersionInfo: 本地版本信息类

Functions:

get_local_minecraft_versions: 获取本地版本列表 get_local_minecraft_versions_dict: 获取本地版本列表(字典格式) find_version_by_id: 根据ID查找版本 get_version_types_summary: 获取版本类型统计

class Core.game.LocalVersionInfo(version_data: Dict[str, Any], version_path: Path)[源代码]

基类:object

本地Minecraft版本信息类。

封装本地已安装版本的详细信息,包括版本ID、类型、配置等。

id

版本ID

Type:

str

type

版本类型(release、snapshot、old_beta、old_alpha等)

Type:

str

releaseTime

发布时间

Type:

datetime

complianceLevel

合规级别

Type:

int

mainClass

主类名

Type:

str

minecraftArguments

Minecraft启动参数(旧格式)

Type:

str

arguments

启动参数(新格式)

Type:

Dict

libraries

依赖库列表

Type:

List

assets

资源版本

Type:

str

javaVersion

Java版本要求

Type:

Dict

inheritsFrom

继承的版本ID

Type:

Optional[str]

jar

JAR文件名

Type:

Optional[str]

custom_data

自定义数据

Type:

Dict

__init__(version_data: Dict[str, Any], version_path: Path)[源代码]

初始化版本信息。

参数:
  • version_data -- 从版本JSON文件解析的数据

  • version_path -- 版本目录路径

to_dict() Dict[str, Any][源代码]

转换为字典格式。

返回:

包含版本信息的字典

is_modded() bool[源代码]

检查是否为模组版本。

返回:

是否为模组版本

get_mod_loader() str | None[源代码]

获取模组加载器类型。

返回:

模组加载器类型(forge、fabric、quilt等),如果不是模组版本则返回None

Core.game.get_local_minecraft_versions(minecraft_directory: str | Path) List[LocalVersionInfo][源代码]

获取指定目录下的本地Minecraft版本列表。

扫描Minecraft目录下的versions文件夹,解析每个版本的配置文件, 返回包含详细信息的版本列表。

参数:

minecraft_directory -- Minecraft目录路径

返回:

本地版本信息列表,按发布时间倒序排列

抛出:

示例

获取本地版本:

versions = get_local_minecraft_versions("/path/to/.minecraft")
for version in versions:
    print(f"版本: {version.id}, 类型: {version.type}")
Core.game.get_local_minecraft_versions_dict(minecraft_directory: str | Path) List[Dict[str, Any]][源代码]

获取本地Minecraft版本列表(字典格式)。

这是get_local_minecraft_versions的便捷版本,直接返回字典列表。

参数:

minecraft_directory -- Minecraft目录路径

返回:

版本信息字典列表

Core.game.find_version_by_id(minecraft_directory: str | Path, version_id: str) LocalVersionInfo | None[源代码]

根据版本ID查找本地版本。

参数:
  • minecraft_directory -- Minecraft目录路径

  • version_id -- 要查找的版本ID

返回:

找到的版本信息,未找到时返回None

Core.game.get_version_types_summary(minecraft_directory: str | Path) Dict[str, int][源代码]

获取版本类型统计。

参数:

minecraft_directory -- Minecraft目录路径

返回:

版本类型统计字典,键为版本类型,值为数量

安装模块 (Installation)

Core.Installation 模块提供了一个兼容 InstallationCallbackGroup 的 Model 层安装调度工具, 实现了与 minecraft_launcher_lib 的解耦,支持多种安装任务的调度和管理。

该模块采用适配器模式和任务调度模式,提供了灵活的安装架构:

  • 安装调度器: 核心调度器,负责任务调度和状态管理

  • 安装适配器: 适配器接口,实现与底层库的解耦

  • 安装任务: 安装任务抽象类和具体实现

  • 回调转换器: 处理不同回调接口的转换

安装调度器

安装调度器模块

本模块实现了安装调度器的核心逻辑,负责管理安装任务的队列、调度和执行。 调度器兼容 InstallationCallbackGroup 接口,提供统一的回调管理。

主要功能: - 任务队列管理 - 任务依赖解析 - 任务调度和执行 - 状态跟踪和进度报告 - 错误处理和重试机制

class Core.Installation.scheduler.SchedulerStatus(value, names=None, *values, module=None, qualname=None, type=None, start=1, boundary=None)[源代码]

基类:Enum

调度器状态枚举。

定义了调度器可能的运行状态。

IDLE = 'idle'
RUNNING = 'running'
PAUSED = 'paused'
STOPPING = 'stopping'
STOPPED = 'stopped'
ERROR = 'error'
class Core.Installation.scheduler.TaskExecutionResult(task_id: str, success: bool, error_message: str | None = None, result: Any | None = None, execution_time: float = 0.0)[源代码]

基类:object

任务执行结果数据类。

包含任务执行的详细结果信息。

task_id

任务 ID。

Type:

str

success

执行是否成功。

Type:

bool

error_message

错误消息,仅在失败时设置。

Type:

Optional[str]

result

任务执行结果。

Type:

Optional[Any]

execution_time

执行耗时(秒)。

Type:

float

task_id: str
success: bool
error_message: str | None = None
result: Any | None = None
execution_time: float = 0.0
__init__(task_id: str, success: bool, error_message: str | None = None, result: Any | None = None, execution_time: float = 0.0) None
class Core.Installation.scheduler.SchedulerConfig(max_concurrent_tasks: int = 3, max_retries: int = 3, retry_delay: float = 5.0, task_timeout: float = 3600.0, enable_dependency_check: bool = True, enable_task_validation: bool = True)[源代码]

基类:object

调度器配置数据类。

包含调度器的各种配置参数。

max_concurrent_tasks

最大并发任务数,默认为 3。

Type:

int

max_retries

任务失败时的最大重试次数,默认为 3。

Type:

int

retry_delay

重试延迟时间(秒),默认为 5.0。

Type:

float

task_timeout

任务超时时间(秒),默认为 3600.0(1小时)。

Type:

float

enable_dependency_check

是否启用依赖检查,默认为 True。

Type:

bool

enable_task_validation

是否启用任务验证,默认为 True。

Type:

bool

max_concurrent_tasks: int = 3
max_retries: int = 3
retry_delay: float = 5.0
task_timeout: float = 3600.0
enable_dependency_check: bool = True
enable_task_validation: bool = True
__init__(max_concurrent_tasks: int = 3, max_retries: int = 3, retry_delay: float = 5.0, task_timeout: float = 3600.0, enable_dependency_check: bool = True, enable_task_validation: bool = True) None
class Core.Installation.scheduler.InstallationScheduler(callback_group: InstallationCallbackGroup, config: SchedulerConfig | None = None)[源代码]

基类:object

安装调度器。

负责管理和调度安装任务,兼容 InstallationCallbackGroup 接口。 支持任务队列、依赖解析、并发执行和状态管理。

调度器采用生产者-消费者模式,使用优先级队列管理任务, 支持任务依赖检查、失败重试和并发控制。

callback_group

回调组实例。

Type:

InstallationCallbackGroup

config

调度器配置。

Type:

SchedulerConfig

status

当前调度器状态。

Type:

SchedulerStatus

logger

日志记录器实例。

Type:

logging.Logger

__init__(callback_group: InstallationCallbackGroup, config: SchedulerConfig | None = None) None[源代码]

初始化安装调度器。

参数:
  • callback_group -- 回调组实例,用于处理安装过程中的回调。

  • config -- 调度器配置,如果为 None 则使用默认配置。

add_task(task: InstallationTask) None[源代码]

添加任务到调度器

参数:

task -- 安装任务实例

add_tasks(tasks: List[InstallationTask]) None[源代码]

批量添加任务

参数:

tasks -- 任务列表

remove_task(task_id: str) bool[源代码]

移除任务

参数:

task_id -- 任务 ID

返回:

是否成功移除

get_task(task_id: str) InstallationTask | None[源代码]

获取任务

参数:

task_id -- 任务 ID

返回:

任务实例或 None

get_all_tasks() List[InstallationTask][源代码]

获取所有任务

返回:

任务列表

get_pending_tasks() List[InstallationTask][源代码]

获取待执行任务

返回:

待执行任务列表

get_running_tasks() List[InstallationTask][源代码]

获取正在运行的任务

返回:

正在运行的任务列表

get_completed_tasks() List[InstallationTask][源代码]

获取已完成任务

返回:

已完成任务列表

get_failed_tasks() List[InstallationTask][源代码]

获取失败任务

返回:

失败任务列表

start() None[源代码]

启动调度器

stop(wait: bool = True) None[源代码]

停止调度器

参数:

wait -- 是否等待所有任务完成

pause() None[源代码]

暂停调度器

resume() None[源代码]

恢复调度器

get_progress() Dict[str, Any][源代码]

获取调度器进度信息

返回:

进度信息字典

clear() None[源代码]

清空调度器

__enter__()[源代码]

上下文管理器入口

__exit__(exc_type, exc_val, exc_tb)[源代码]

上下文管理器出口

安装适配器

安装适配器模块

本模块定义了安装适配器接口和具体实现,用于与底层安装库(如 minecraft_launcher_lib)解耦。 通过适配器模式,可以轻松切换不同的底层实现,便于后期重构。

适配器接口: - InstallationAdapter: 安装适配器基类 - VanillaInstallationAdapter: 原版游戏安装适配器 - ForgeInstallationAdapter: Forge 安装适配器 - FabricInstallationAdapter: Fabric 安装适配器 - QuiltInstallationAdapter: Quilt 安装适配器

class Core.Installation.adapter.InstallationAdapter(minecraft_directory: str | Path)[源代码]

基类:ABC

安装适配器基类。

定义了安装适配器的通用接口,所有具体的安装适配器都应该继承此类。 通过适配器模式,实现与底层安装库的解耦,便于后期重构和扩展。

minecraft_directory

Minecraft 安装目录路径。

Type:

str

logger

日志记录器实例。

Type:

logging.Logger

__init__(minecraft_directory: str | Path) None[源代码]

初始化安装适配器。

参数:

minecraft_directory -- Minecraft 安装目录路径。

abstract install(version_id: str, callback: CallbackDict, **kwargs) bool[源代码]

执行安装操作。

参数:
  • version_id -- 要安装的版本 ID。

  • callback -- 回调函数字典,用于报告安装进度和状态。

  • **kwargs -- 其他安装参数。

返回:

安装是否成功。

返回类型:

bool

抛出:
  • VersionNotFound -- 当指定版本不存在时抛出。

  • UnsupportedVersion -- 当版本不受支持时抛出。

abstract is_installed(version_id: str) bool[源代码]

检查指定版本是否已安装。

参数:

version_id -- 要检查的版本 ID。

返回:

如果版本已安装返回 True,否则返回 False。

返回类型:

bool

abstract get_available_versions() List[str][源代码]

获取可用版本列表。

返回:

可用版本 ID 列表。

返回类型:

List[str]

validate_version(version_id: str) bool[源代码]

验证版本 ID 是否有效。

参数:

version_id -- 要验证的版本 ID。

返回:

如果版本有效返回 True,否则返回 False。

返回类型:

bool

class Core.Installation.adapter.VanillaInstallationAdapter(minecraft_directory: str | Path)[源代码]

基类:InstallationAdapter

原版 Minecraft 安装适配器。

负责原版 Minecraft 的安装,包括游戏文件、资源文件、库文件等。 使用 minecraft_launcher_lib 库进行实际的安装操作。

install(version_id: str, callback: CallbackDict, **kwargs) bool[源代码]

安装原版 Minecraft。

参数:
  • version_id -- 要安装的 Minecraft 版本 ID。

  • callback -- 回调函数字典,用于报告安装进度。

  • **kwargs -- 其他安装参数。

返回:

安装成功返回 True,失败返回 False。

返回类型:

bool

抛出:

VersionNotFound -- 当指定版本不存在时抛出。

is_installed(version_id: str) bool[源代码]

检查 Minecraft 版本是否已安装。

通过检查版本目录中的 JSON 文件和 JAR 文件是否存在来判断。

参数:

version_id -- 要检查的 Minecraft 版本 ID。

返回:

如果版本已安装返回 True,否则返回 False。

返回类型:

bool

get_available_versions() List[str][源代码]

获取可用的 Minecraft 版本列表。

从 Mojang 官方 API 获取版本清单。

返回:

可用版本 ID 列表,如果获取失败返回空列表。

返回类型:

List[str]

class Core.Installation.adapter.ForgeInstallationAdapter(minecraft_directory: str | Path)[源代码]

基类:InstallationAdapter

Forge 安装适配器。

负责 Forge 模组加载器的安装。Forge 是最流行的 Minecraft 模组加载器之一, 支持大量的模组和插件。

install(version_id: str, callback: CallbackDict, **kwargs) bool[源代码]

安装 Forge 模组加载器。

参数:
  • version_id -- 要安装的 Forge 版本 ID。

  • callback -- 回调函数字典,用于报告安装进度。

  • **kwargs -- 其他安装参数。可选参数包括: - java_path (str): Java 可执行文件路径。

返回:

安装成功返回 True,失败返回 False。

返回类型:

bool

抛出:

VersionNotFound -- 当指定 Forge 版本不存在时抛出。

is_installed(version_id: str) bool[源代码]

检查 Forge 版本是否已安装。

通过检查 Forge 安装后创建的版本目录来判断是否已安装。

参数:

version_id -- 要检查的 Forge 版本 ID。

返回:

如果 Forge 版本已安装返回 True,否则返回 False。

返回类型:

bool

get_available_versions() List[str][源代码]

获取可用的 Forge 版本列表。

从 Forge 官方源获取可用版本列表。

返回:

可用 Forge 版本 ID 列表,如果获取失败返回空列表。

返回类型:

List[str]

class Core.Installation.adapter.FabricInstallationAdapter(minecraft_directory: str | Path)[源代码]

基类:InstallationAdapter

Fabric 安装适配器。

负责 Fabric 模组加载器的安装。Fabric 是一个轻量级的模组加载器, 专注于快速更新和现代化的模组开发体验。

install(version_id: str, callback: CallbackDict, **kwargs) bool[源代码]

安装 Fabric 模组加载器。

参数:
  • version_id -- 要安装 Fabric 的 Minecraft 版本 ID。

  • callback -- 回调函数字典,用于报告安装进度。

  • **kwargs -- 其他安装参数。可选参数包括: - loader_version (str): Fabric Loader 版本。 - java_path (str): Java 可执行文件路径。

返回:

安装成功返回 True,失败返回 False。

返回类型:

bool

抛出:
  • VersionNotFound -- 当指定 Minecraft 版本不存在时抛出。

  • UnsupportedVersion -- 当 Minecraft 版本不支持 Fabric 时抛出。

is_installed(version_id: str) bool[源代码]

检查 Fabric 版本是否已安装。

通过检查是否存在以 fabric-loader 开头且包含指定 Minecraft 版本的目录来判断。

参数:

version_id -- 要检查的 Minecraft 版本 ID。

返回:

如果 Fabric 已安装返回 True,否则返回 False。

返回类型:

bool

get_available_versions() List[str][源代码]

获取支持 Fabric 的 Minecraft 版本列表。

从 Fabric 官方 API 获取支持的 Minecraft 版本列表。

返回:

支持 Fabric 的 Minecraft 版本 ID 列表,如果获取失败返回空列表。

返回类型:

List[str]

class Core.Installation.adapter.QuiltInstallationAdapter(minecraft_directory: str | Path)[源代码]

基类:InstallationAdapter

Quilt 安装适配器。

负责 Quilt 模组加载器的安装。Quilt 是 Fabric 的一个分支, 提供了更多的功能和改进,同时保持与 Fabric 模组的兼容性。

install(version_id: str, callback: CallbackDict, **kwargs) bool[源代码]

安装 Quilt 模组加载器。

参数:
  • version_id -- 要安装 Quilt 的 Minecraft 版本 ID。

  • callback -- 回调函数字典,用于报告安装进度。

  • **kwargs -- 其他安装参数。可选参数包括: - loader_version (str): Quilt Loader 版本。 - java_path (str): Java 可执行文件路径。

返回:

安装成功返回 True,失败返回 False。

返回类型:

bool

抛出:
  • VersionNotFound -- 当指定 Minecraft 版本不存在时抛出。

  • UnsupportedVersion -- 当 Minecraft 版本不支持 Quilt 时抛出。

is_installed(version_id: str) bool[源代码]

检查 Quilt 版本是否已安装。

通过检查是否存在以 quilt-loader 开头且包含指定 Minecraft 版本的目录来判断。

参数:

version_id -- 要检查的 Minecraft 版本 ID。

返回:

如果 Quilt 已安装返回 True,否则返回 False。

返回类型:

bool

get_available_versions() List[str][源代码]

获取支持 Quilt 的 Minecraft 版本列表。

从 Quilt 官方 API 获取支持的 Minecraft 版本列表。

返回:

支持 Quilt 的 Minecraft 版本 ID 列表,如果获取失败返回空列表。

返回类型:

List[str]

安装任务

安装任务模块

本模块定义了安装任务的抽象类和具体实现,包括游戏安装、Mod 加载器安装、资源验证等任务。 每个任务都有自己的生命周期和状态管理,可以独立执行或作为复合任务的一部分。

任务类型: - InstallationTask: 安装任务抽象基类 - GameInstallationTask: 游戏安装任务 - ModLoaderInstallationTask: Mod 加载器安装任务 - AssetVerificationTask: 资源验证任务

class Core.Installation.tasks.TaskStatus(value, names=None, *values, module=None, qualname=None, type=None, start=1, boundary=None)[源代码]

基类:Enum

任务状态枚举

PENDING = 'pending'
RUNNING = 'running'
COMPLETED = 'completed'
FAILED = 'failed'
CANCELLED = 'cancelled'
class Core.Installation.tasks.TaskPriority(value, names=None, *values, module=None, qualname=None, type=None, start=1, boundary=None)[源代码]

基类:Enum

任务优先级枚举

LOW = 1
NORMAL = 2
HIGH = 3
CRITICAL = 4
class Core.Installation.tasks.InstallationTask(task_id: str, name: str, description: str = '', priority: TaskPriority = TaskPriority.NORMAL, dependencies: List[str] | None = None)[源代码]

基类:ABC

安装任务抽象基类。

定义了安装任务的通用接口和生命周期管理。 所有具体的安装任务都应该继承此类并实现抽象方法。

task_id

任务唯一标识符。

Type:

str

name

任务名称。

Type:

str

description

任务描述。

Type:

str

priority

任务优先级。

Type:

TaskPriority

dependencies

依赖的任务 ID 列表。

Type:

List[str]

status

当前任务状态。

Type:

TaskStatus

progress

任务进度百分比 (0-100)。

Type:

int

error_message

错误消息,仅在任务失败时设置。

Type:

Optional[str]

result

任务执行结果。

Type:

Optional[Any]

logger

日志记录器实例。

Type:

logging.Logger

__init__(task_id: str, name: str, description: str = '', priority: TaskPriority = TaskPriority.NORMAL, dependencies: List[str] | None = None) None[源代码]

初始化安装任务。

参数:
  • task_id -- 任务唯一标识符。

  • name -- 任务名称。

  • description -- 任务描述。

  • priority -- 任务优先级,默认为 NORMAL。

  • dependencies -- 依赖的任务 ID 列表,默认为空列表。

abstract execute(callback_converter: CallbackConverter, **kwargs) bool[源代码]

执行任务。

子类必须实现此方法来定义具体的任务执行逻辑。

参数:
  • callback_converter -- 回调转换器,用于处理进度和状态回调。

  • **kwargs -- 任务执行参数。

返回:

执行成功返回 True,失败返回 False。

返回类型:

bool

abstract validate(**kwargs) bool[源代码]

验证任务执行条件。

子类必须实现此方法来验证任务是否可以执行。

参数:

**kwargs -- 验证参数。

返回:

验证通过返回 True,否则返回 False。

返回类型:

bool

abstract get_estimated_duration() int[源代码]

获取任务预估执行时间。

子类必须实现此方法来提供任务的预估执行时间。

返回:

预估执行时间(秒)。

返回类型:

int

can_execute(completed_tasks: List[str]) bool[源代码]

检查任务是否可以执行(依赖是否满足)。

参数:

completed_tasks -- 已完成的任务 ID 列表。

返回:

如果所有依赖都已完成返回 True,否则返回 False。

返回类型:

bool

set_status(status: TaskStatus, error_message: str | None = None) None[源代码]

设置任务状态。

参数:
  • status -- 新的任务状态。

  • error_message -- 错误消息,仅在状态为失败时设置。

set_progress(progress: int) None[源代码]

设置任务进度。

参数:

progress -- 进度百分比,范围为 0-100。

class Core.Installation.tasks.GameInstallationTask(task_id: str, version_id: str, minecraft_directory: str | Path, adapter: InstallationAdapter, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.HIGH)[源代码]

基类:InstallationTask

游戏安装任务。

负责安装指定版本的 Minecraft 游戏,包括下载游戏文件、 资源文件和依赖库等。

version_id

要安装的游戏版本 ID。

Type:

str

minecraft_directory

Minecraft 安装目录路径。

Type:

str

adapter

用于执行安装的适配器实例。

Type:

InstallationAdapter

__init__(task_id: str, version_id: str, minecraft_directory: str | Path, adapter: InstallationAdapter, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.HIGH) None[源代码]

初始化游戏安装任务。

参数:
  • task_id -- 任务唯一标识符。

  • version_id -- 要安装的游戏版本 ID。

  • minecraft_directory -- Minecraft 安装目录路径。

  • adapter -- 用于执行安装的适配器实例。

  • name -- 任务名称,如果为 None 则自动生成。

  • description -- 任务描述,如果为 None 则自动生成。

  • priority -- 任务优先级,默认为 HIGH。

execute(callback_converter: CallbackConverter, **kwargs) bool[源代码]

执行游戏安装任务

参数:
  • callback_converter -- 回调转换器

  • **kwargs -- 任务执行参数

返回:

执行是否成功

validate(**kwargs) bool[源代码]

验证游戏安装任务执行条件

参数:

**kwargs -- 验证参数

返回:

验证是否通过

get_estimated_duration() int[源代码]

获取游戏安装任务预估执行时间

返回:

预估执行时间(秒)

class Core.Installation.tasks.ModLoaderInstallationTask(task_id: str, mod_loader_type: str, version_id: str, minecraft_directory: str | Path, adapter: InstallationAdapter, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.NORMAL, dependencies: List[str] | None = None, **loader_kwargs)[源代码]

基类:InstallationTask

Mod 加载器安装任务

负责安装指定的 Mod 加载器(如 Forge、Fabric、Quilt 等)。

__init__(task_id: str, mod_loader_type: str, version_id: str, minecraft_directory: str | Path, adapter: InstallationAdapter, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.NORMAL, dependencies: List[str] | None = None, **loader_kwargs)[源代码]

初始化 Mod 加载器安装任务

参数:
  • task_id -- 任务唯一标识符

  • mod_loader_type -- Mod 加载器类型 (forge, fabric, quilt)

  • version_id -- 版本 ID

  • minecraft_directory -- Minecraft 安装目录

  • adapter -- 安装适配器

  • name -- 任务名称(可选)

  • description -- 任务描述(可选)

  • priority -- 任务优先级

  • dependencies -- 依赖的任务 ID 列表

  • **loader_kwargs -- Mod 加载器特定参数

execute(callback_converter: CallbackConverter, **kwargs) bool[源代码]

执行 Mod 加载器安装任务

参数:
  • callback_converter -- 回调转换器

  • **kwargs -- 任务执行参数

返回:

执行是否成功

validate(**kwargs) bool[源代码]

验证 Mod 加载器安装任务执行条件

参数:

**kwargs -- 验证参数

返回:

验证是否通过

get_estimated_duration() int[源代码]

获取 Mod 加载器安装任务预估执行时间

返回:

预估执行时间(秒)

class Core.Installation.tasks.AssetVerificationTask(task_id: str, version_id: str, minecraft_directory: str | Path, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.LOW, dependencies: List[str] | None = None)[源代码]

基类:InstallationTask

资源验证任务

负责验证游戏资源文件的完整性。

__init__(task_id: str, version_id: str, minecraft_directory: str | Path, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.LOW, dependencies: List[str] | None = None)[源代码]

初始化资源验证任务

参数:
  • task_id -- 任务唯一标识符

  • version_id -- 游戏版本 ID

  • minecraft_directory -- Minecraft 安装目录

  • name -- 任务名称(可选)

  • description -- 任务描述(可选)

  • priority -- 任务优先级

  • dependencies -- 依赖的任务 ID 列表

execute(callback_converter: CallbackConverter, **kwargs) bool[源代码]

执行资源验证任务

参数:
  • callback_converter -- 回调转换器

  • **kwargs -- 任务执行参数

返回:

执行是否成功

validate(**kwargs) bool[源代码]

验证资源验证任务执行条件

参数:

**kwargs -- 验证参数

返回:

验证是否通过

get_estimated_duration() int[源代码]

获取资源验证任务预估执行时间

返回:

预估执行时间(秒)

class Core.Installation.tasks.CompositeInstallationTask(task_id: str, name: str, subtasks: List[InstallationTask], description: str = '', priority: TaskPriority = TaskPriority.NORMAL, parallel: bool = False)[源代码]

基类:InstallationTask

复合安装任务

由多个子任务组成的复合任务,可以按顺序或并行执行子任务。

__init__(task_id: str, name: str, subtasks: List[InstallationTask], description: str = '', priority: TaskPriority = TaskPriority.NORMAL, parallel: bool = False)[源代码]

初始化复合安装任务

参数:
  • task_id -- 任务唯一标识符

  • name -- 任务名称

  • subtasks -- 子任务列表

  • description -- 任务描述

  • priority -- 任务优先级

  • parallel -- 是否并行执行子任务

execute(callback_converter: CallbackConverter, **kwargs) bool[源代码]

执行复合安装任务

参数:
  • callback_converter -- 回调转换器

  • **kwargs -- 任务执行参数

返回:

执行是否成功

validate(**kwargs) bool[源代码]

验证复合安装任务执行条件

参数:

**kwargs -- 验证参数

返回:

验证是否通过

get_estimated_duration() int[源代码]

获取复合安装任务预估执行时间

返回:

预估执行时间(秒)

回调转换器

回调转换器模块

本模块提供了回调转换器,用于将 InstallationCallbackGroup 转换为 minecraft_launcher_lib 所需的 CallbackDict 格式,实现不同回调接口之间的适配。

主要功能: - 将 InstallationCallbackGroup 的回调接口转换为 minecraft_launcher_lib 的回调格式 - 支持多种安装任务类型的回调转换 - 提供统一的回调管理和转换机制

class Core.Installation.callback_converter.InstallationTaskType(value, names=None, *values, module=None, qualname=None, type=None, start=1, boundary=None)[源代码]

基类:Enum

安装任务类型枚举。

定义了支持的各种安装任务类型,用于回调转换器识别不同的任务。

DOWNLOAD = 'download'
INSTALL_GAME = 'install_game'
INSTALL_FORGE = 'install_forge'
INSTALL_NEOFORGE = 'install_neoforge'
INSTALL_FABRIC = 'install_fabric'
INSTALL_QUILT = 'install_quilt'
INSTALL_LITELOADER = 'install_liteloader'
VERIFY = 'verify'
class Core.Installation.callback_converter.CallbackConverter(callback_group: InstallationCallbackGroup)[源代码]

基类:object

回调转换器。

将 InstallationCallbackGroup 的回调接口转换为 minecraft_launcher_lib 所需的 CallbackDict 格式,实现不同回调系统之间的适配。

该转换器负责将底层库的回调事件转换为上层应用可以理解的回调格式, 支持多种安装任务类型的回调处理。

callback_group

回调组实例。

Type:

InstallationCallbackGroup

logger

日志记录器实例。

Type:

logging.Logger

__init__(callback_group: InstallationCallbackGroup) None[源代码]

初始化回调转换器。

参数:

callback_group -- InstallationCallbackGroup 实例,用于处理转换后的回调。

get_callback_dict(task_type: InstallationTaskType) CallbackDict[源代码]

获取指定任务类型的 CallbackDict。

根据任务类型创建相应的回调字典,用于与 minecraft_launcher_lib 交互。

参数:

task_type -- 安装任务类型。

返回:

转换后的回调字典,包含 setStatus、setProgress 和 setMax 回调。

返回类型:

CallbackDict

on_task_error(error: Exception) None[源代码]

处理任务错误回调

参数:

error -- 发生的错误

reset() None[源代码]

重置转换器状态

class Core.Installation.callback_converter.MultiTaskCallbackConverter(callback_group: InstallationCallbackGroup)[源代码]

基类:CallbackConverter

多任务回调转换器。

支持多个任务的回调转换,可以跟踪多个任务的状态并提供统一的回调接口。 该转换器能够计算多个任务的总体进度,并在所有任务完成时触发完成回调。

_task_states

任务状态跟踪字典。

Type:

Dict[InstallationTaskType, Dict[str, Any]]

_total_tasks

总任务数。

Type:

int

_completed_tasks

已完成任务数。

Type:

int

__init__(callback_group: InstallationCallbackGroup) None[源代码]

初始化多任务回调转换器。

参数:

callback_group -- InstallationCallbackGroup 实例,用于处理转换后的回调。

add_task(task_type: InstallationTaskType, weight: float = 1.0) None[源代码]

添加任务到多任务转换器。

参数:
  • task_type -- 要添加的任务类型。

  • weight -- 任务权重,用于计算总体进度,默认为 1.0。

get_callback_dict(task_type: InstallationTaskType) CallbackDict[源代码]

获取指定任务类型的 CallbackDict

参数:

task_type -- 安装任务类型

返回:

转换后的 CallbackDict

reset() None[源代码]

重置多任务转换器状态

安装模块基础

安装调度模块

本模块提供了一个兼容 InstallationCallbackGroup 的 Model 层安装调度工具, 实现了与 minecraft_launcher_lib 的解耦,支持多种安装任务的调度和管理。

主要组件: - InstallationScheduler: 核心调度器,负责任务调度和状态管理 - InstallationAdapter: 适配器接口,实现与底层库的解耦 - InstallationTask: 安装任务抽象类和具体实现 - CallbackConverter: 回调转换器,处理不同回调接口的转换

class Core.Installation.InstallationScheduler(callback_group: InstallationCallbackGroup, config: SchedulerConfig | None = None)[源代码]

基类:object

安装调度器。

负责管理和调度安装任务,兼容 InstallationCallbackGroup 接口。 支持任务队列、依赖解析、并发执行和状态管理。

调度器采用生产者-消费者模式,使用优先级队列管理任务, 支持任务依赖检查、失败重试和并发控制。

callback_group

回调组实例。

Type:

InstallationCallbackGroup

config

调度器配置。

Type:

SchedulerConfig

status

当前调度器状态。

Type:

SchedulerStatus

logger

日志记录器实例。

Type:

logging.Logger

__init__(callback_group: InstallationCallbackGroup, config: SchedulerConfig | None = None) None[源代码]

初始化安装调度器。

参数:
  • callback_group -- 回调组实例,用于处理安装过程中的回调。

  • config -- 调度器配置,如果为 None 则使用默认配置。

add_task(task: InstallationTask) None[源代码]

添加任务到调度器

参数:

task -- 安装任务实例

add_tasks(tasks: List[InstallationTask]) None[源代码]

批量添加任务

参数:

tasks -- 任务列表

remove_task(task_id: str) bool[源代码]

移除任务

参数:

task_id -- 任务 ID

返回:

是否成功移除

get_task(task_id: str) InstallationTask | None[源代码]

获取任务

参数:

task_id -- 任务 ID

返回:

任务实例或 None

get_all_tasks() List[InstallationTask][源代码]

获取所有任务

返回:

任务列表

get_pending_tasks() List[InstallationTask][源代码]

获取待执行任务

返回:

待执行任务列表

get_running_tasks() List[InstallationTask][源代码]

获取正在运行的任务

返回:

正在运行的任务列表

get_completed_tasks() List[InstallationTask][源代码]

获取已完成任务

返回:

已完成任务列表

get_failed_tasks() List[InstallationTask][源代码]

获取失败任务

返回:

失败任务列表

start() None[源代码]

启动调度器

stop(wait: bool = True) None[源代码]

停止调度器

参数:

wait -- 是否等待所有任务完成

pause() None[源代码]

暂停调度器

resume() None[源代码]

恢复调度器

get_progress() Dict[str, Any][源代码]

获取调度器进度信息

返回:

进度信息字典

clear() None[源代码]

清空调度器

__enter__()[源代码]

上下文管理器入口

__exit__(exc_type, exc_val, exc_tb)[源代码]

上下文管理器出口

class Core.Installation.InstallationAdapter(minecraft_directory: str | Path)[源代码]

基类:ABC

安装适配器基类。

定义了安装适配器的通用接口,所有具体的安装适配器都应该继承此类。 通过适配器模式,实现与底层安装库的解耦,便于后期重构和扩展。

minecraft_directory

Minecraft 安装目录路径。

Type:

str

logger

日志记录器实例。

Type:

logging.Logger

__init__(minecraft_directory: str | Path) None[源代码]

初始化安装适配器。

参数:

minecraft_directory -- Minecraft 安装目录路径。

abstract install(version_id: str, callback: CallbackDict, **kwargs) bool[源代码]

执行安装操作。

参数:
  • version_id -- 要安装的版本 ID。

  • callback -- 回调函数字典,用于报告安装进度和状态。

  • **kwargs -- 其他安装参数。

返回:

安装是否成功。

返回类型:

bool

抛出:
  • VersionNotFound -- 当指定版本不存在时抛出。

  • UnsupportedVersion -- 当版本不受支持时抛出。

abstract is_installed(version_id: str) bool[源代码]

检查指定版本是否已安装。

参数:

version_id -- 要检查的版本 ID。

返回:

如果版本已安装返回 True,否则返回 False。

返回类型:

bool

abstract get_available_versions() List[str][源代码]

获取可用版本列表。

返回:

可用版本 ID 列表。

返回类型:

List[str]

validate_version(version_id: str) bool[源代码]

验证版本 ID 是否有效。

参数:

version_id -- 要验证的版本 ID。

返回:

如果版本有效返回 True,否则返回 False。

返回类型:

bool

class Core.Installation.VanillaInstallationAdapter(minecraft_directory: str | Path)[源代码]

基类:InstallationAdapter

原版 Minecraft 安装适配器。

负责原版 Minecraft 的安装,包括游戏文件、资源文件、库文件等。 使用 minecraft_launcher_lib 库进行实际的安装操作。

install(version_id: str, callback: CallbackDict, **kwargs) bool[源代码]

安装原版 Minecraft。

参数:
  • version_id -- 要安装的 Minecraft 版本 ID。

  • callback -- 回调函数字典,用于报告安装进度。

  • **kwargs -- 其他安装参数。

返回:

安装成功返回 True,失败返回 False。

返回类型:

bool

抛出:

VersionNotFound -- 当指定版本不存在时抛出。

is_installed(version_id: str) bool[源代码]

检查 Minecraft 版本是否已安装。

通过检查版本目录中的 JSON 文件和 JAR 文件是否存在来判断。

参数:

version_id -- 要检查的 Minecraft 版本 ID。

返回:

如果版本已安装返回 True,否则返回 False。

返回类型:

bool

get_available_versions() List[str][源代码]

获取可用的 Minecraft 版本列表。

从 Mojang 官方 API 获取版本清单。

返回:

可用版本 ID 列表,如果获取失败返回空列表。

返回类型:

List[str]

class Core.Installation.ForgeInstallationAdapter(minecraft_directory: str | Path)[源代码]

基类:InstallationAdapter

Forge 安装适配器。

负责 Forge 模组加载器的安装。Forge 是最流行的 Minecraft 模组加载器之一, 支持大量的模组和插件。

install(version_id: str, callback: CallbackDict, **kwargs) bool[源代码]

安装 Forge 模组加载器。

参数:
  • version_id -- 要安装的 Forge 版本 ID。

  • callback -- 回调函数字典,用于报告安装进度。

  • **kwargs -- 其他安装参数。可选参数包括: - java_path (str): Java 可执行文件路径。

返回:

安装成功返回 True,失败返回 False。

返回类型:

bool

抛出:

VersionNotFound -- 当指定 Forge 版本不存在时抛出。

is_installed(version_id: str) bool[源代码]

检查 Forge 版本是否已安装。

通过检查 Forge 安装后创建的版本目录来判断是否已安装。

参数:

version_id -- 要检查的 Forge 版本 ID。

返回:

如果 Forge 版本已安装返回 True,否则返回 False。

返回类型:

bool

get_available_versions() List[str][源代码]

获取可用的 Forge 版本列表。

从 Forge 官方源获取可用版本列表。

返回:

可用 Forge 版本 ID 列表,如果获取失败返回空列表。

返回类型:

List[str]

class Core.Installation.FabricInstallationAdapter(minecraft_directory: str | Path)[源代码]

基类:InstallationAdapter

Fabric 安装适配器。

负责 Fabric 模组加载器的安装。Fabric 是一个轻量级的模组加载器, 专注于快速更新和现代化的模组开发体验。

install(version_id: str, callback: CallbackDict, **kwargs) bool[源代码]

安装 Fabric 模组加载器。

参数:
  • version_id -- 要安装 Fabric 的 Minecraft 版本 ID。

  • callback -- 回调函数字典,用于报告安装进度。

  • **kwargs -- 其他安装参数。可选参数包括: - loader_version (str): Fabric Loader 版本。 - java_path (str): Java 可执行文件路径。

返回:

安装成功返回 True,失败返回 False。

返回类型:

bool

抛出:
  • VersionNotFound -- 当指定 Minecraft 版本不存在时抛出。

  • UnsupportedVersion -- 当 Minecraft 版本不支持 Fabric 时抛出。

is_installed(version_id: str) bool[源代码]

检查 Fabric 版本是否已安装。

通过检查是否存在以 fabric-loader 开头且包含指定 Minecraft 版本的目录来判断。

参数:

version_id -- 要检查的 Minecraft 版本 ID。

返回:

如果 Fabric 已安装返回 True,否则返回 False。

返回类型:

bool

get_available_versions() List[str][源代码]

获取支持 Fabric 的 Minecraft 版本列表。

从 Fabric 官方 API 获取支持的 Minecraft 版本列表。

返回:

支持 Fabric 的 Minecraft 版本 ID 列表,如果获取失败返回空列表。

返回类型:

List[str]

class Core.Installation.QuiltInstallationAdapter(minecraft_directory: str | Path)[源代码]

基类:InstallationAdapter

Quilt 安装适配器。

负责 Quilt 模组加载器的安装。Quilt 是 Fabric 的一个分支, 提供了更多的功能和改进,同时保持与 Fabric 模组的兼容性。

install(version_id: str, callback: CallbackDict, **kwargs) bool[源代码]

安装 Quilt 模组加载器。

参数:
  • version_id -- 要安装 Quilt 的 Minecraft 版本 ID。

  • callback -- 回调函数字典,用于报告安装进度。

  • **kwargs -- 其他安装参数。可选参数包括: - loader_version (str): Quilt Loader 版本。 - java_path (str): Java 可执行文件路径。

返回:

安装成功返回 True,失败返回 False。

返回类型:

bool

抛出:
  • VersionNotFound -- 当指定 Minecraft 版本不存在时抛出。

  • UnsupportedVersion -- 当 Minecraft 版本不支持 Quilt 时抛出。

is_installed(version_id: str) bool[源代码]

检查 Quilt 版本是否已安装。

通过检查是否存在以 quilt-loader 开头且包含指定 Minecraft 版本的目录来判断。

参数:

version_id -- 要检查的 Minecraft 版本 ID。

返回:

如果 Quilt 已安装返回 True,否则返回 False。

返回类型:

bool

get_available_versions() List[str][源代码]

获取支持 Quilt 的 Minecraft 版本列表。

从 Quilt 官方 API 获取支持的 Minecraft 版本列表。

返回:

支持 Quilt 的 Minecraft 版本 ID 列表,如果获取失败返回空列表。

返回类型:

List[str]

class Core.Installation.InstallationTask(task_id: str, name: str, description: str = '', priority: TaskPriority = TaskPriority.NORMAL, dependencies: List[str] | None = None)[源代码]

基类:ABC

安装任务抽象基类。

定义了安装任务的通用接口和生命周期管理。 所有具体的安装任务都应该继承此类并实现抽象方法。

task_id

任务唯一标识符。

Type:

str

name

任务名称。

Type:

str

description

任务描述。

Type:

str

priority

任务优先级。

Type:

TaskPriority

dependencies

依赖的任务 ID 列表。

Type:

List[str]

status

当前任务状态。

Type:

TaskStatus

progress

任务进度百分比 (0-100)。

Type:

int

error_message

错误消息,仅在任务失败时设置。

Type:

Optional[str]

result

任务执行结果。

Type:

Optional[Any]

logger

日志记录器实例。

Type:

logging.Logger

__init__(task_id: str, name: str, description: str = '', priority: TaskPriority = TaskPriority.NORMAL, dependencies: List[str] | None = None) None[源代码]

初始化安装任务。

参数:
  • task_id -- 任务唯一标识符。

  • name -- 任务名称。

  • description -- 任务描述。

  • priority -- 任务优先级,默认为 NORMAL。

  • dependencies -- 依赖的任务 ID 列表,默认为空列表。

abstract execute(callback_converter: CallbackConverter, **kwargs) bool[源代码]

执行任务。

子类必须实现此方法来定义具体的任务执行逻辑。

参数:
  • callback_converter -- 回调转换器,用于处理进度和状态回调。

  • **kwargs -- 任务执行参数。

返回:

执行成功返回 True,失败返回 False。

返回类型:

bool

abstract validate(**kwargs) bool[源代码]

验证任务执行条件。

子类必须实现此方法来验证任务是否可以执行。

参数:

**kwargs -- 验证参数。

返回:

验证通过返回 True,否则返回 False。

返回类型:

bool

abstract get_estimated_duration() int[源代码]

获取任务预估执行时间。

子类必须实现此方法来提供任务的预估执行时间。

返回:

预估执行时间(秒)。

返回类型:

int

can_execute(completed_tasks: List[str]) bool[源代码]

检查任务是否可以执行(依赖是否满足)。

参数:

completed_tasks -- 已完成的任务 ID 列表。

返回:

如果所有依赖都已完成返回 True,否则返回 False。

返回类型:

bool

set_status(status: TaskStatus, error_message: str | None = None) None[源代码]

设置任务状态。

参数:
  • status -- 新的任务状态。

  • error_message -- 错误消息,仅在状态为失败时设置。

set_progress(progress: int) None[源代码]

设置任务进度。

参数:

progress -- 进度百分比,范围为 0-100。

class Core.Installation.GameInstallationTask(task_id: str, version_id: str, minecraft_directory: str | Path, adapter: InstallationAdapter, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.HIGH)[源代码]

基类:InstallationTask

游戏安装任务。

负责安装指定版本的 Minecraft 游戏,包括下载游戏文件、 资源文件和依赖库等。

version_id

要安装的游戏版本 ID。

Type:

str

minecraft_directory

Minecraft 安装目录路径。

Type:

str

adapter

用于执行安装的适配器实例。

Type:

InstallationAdapter

__init__(task_id: str, version_id: str, minecraft_directory: str | Path, adapter: InstallationAdapter, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.HIGH) None[源代码]

初始化游戏安装任务。

参数:
  • task_id -- 任务唯一标识符。

  • version_id -- 要安装的游戏版本 ID。

  • minecraft_directory -- Minecraft 安装目录路径。

  • adapter -- 用于执行安装的适配器实例。

  • name -- 任务名称,如果为 None 则自动生成。

  • description -- 任务描述,如果为 None 则自动生成。

  • priority -- 任务优先级,默认为 HIGH。

execute(callback_converter: CallbackConverter, **kwargs) bool[源代码]

执行游戏安装任务

参数:
  • callback_converter -- 回调转换器

  • **kwargs -- 任务执行参数

返回:

执行是否成功

validate(**kwargs) bool[源代码]

验证游戏安装任务执行条件

参数:

**kwargs -- 验证参数

返回:

验证是否通过

get_estimated_duration() int[源代码]

获取游戏安装任务预估执行时间

返回:

预估执行时间(秒)

class Core.Installation.ModLoaderInstallationTask(task_id: str, mod_loader_type: str, version_id: str, minecraft_directory: str | Path, adapter: InstallationAdapter, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.NORMAL, dependencies: List[str] | None = None, **loader_kwargs)[源代码]

基类:InstallationTask

Mod 加载器安装任务

负责安装指定的 Mod 加载器(如 Forge、Fabric、Quilt 等)。

__init__(task_id: str, mod_loader_type: str, version_id: str, minecraft_directory: str | Path, adapter: InstallationAdapter, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.NORMAL, dependencies: List[str] | None = None, **loader_kwargs)[源代码]

初始化 Mod 加载器安装任务

参数:
  • task_id -- 任务唯一标识符

  • mod_loader_type -- Mod 加载器类型 (forge, fabric, quilt)

  • version_id -- 版本 ID

  • minecraft_directory -- Minecraft 安装目录

  • adapter -- 安装适配器

  • name -- 任务名称(可选)

  • description -- 任务描述(可选)

  • priority -- 任务优先级

  • dependencies -- 依赖的任务 ID 列表

  • **loader_kwargs -- Mod 加载器特定参数

execute(callback_converter: CallbackConverter, **kwargs) bool[源代码]

执行 Mod 加载器安装任务

参数:
  • callback_converter -- 回调转换器

  • **kwargs -- 任务执行参数

返回:

执行是否成功

validate(**kwargs) bool[源代码]

验证 Mod 加载器安装任务执行条件

参数:

**kwargs -- 验证参数

返回:

验证是否通过

get_estimated_duration() int[源代码]

获取 Mod 加载器安装任务预估执行时间

返回:

预估执行时间(秒)

class Core.Installation.AssetVerificationTask(task_id: str, version_id: str, minecraft_directory: str | Path, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.LOW, dependencies: List[str] | None = None)[源代码]

基类:InstallationTask

资源验证任务

负责验证游戏资源文件的完整性。

__init__(task_id: str, version_id: str, minecraft_directory: str | Path, name: str | None = None, description: str | None = None, priority: TaskPriority = TaskPriority.LOW, dependencies: List[str] | None = None)[源代码]

初始化资源验证任务

参数:
  • task_id -- 任务唯一标识符

  • version_id -- 游戏版本 ID

  • minecraft_directory -- Minecraft 安装目录

  • name -- 任务名称(可选)

  • description -- 任务描述(可选)

  • priority -- 任务优先级

  • dependencies -- 依赖的任务 ID 列表

execute(callback_converter: CallbackConverter, **kwargs) bool[源代码]

执行资源验证任务

参数:
  • callback_converter -- 回调转换器

  • **kwargs -- 任务执行参数

返回:

执行是否成功

validate(**kwargs) bool[源代码]

验证资源验证任务执行条件

参数:

**kwargs -- 验证参数

返回:

验证是否通过

get_estimated_duration() int[源代码]

获取资源验证任务预估执行时间

返回:

预估执行时间(秒)

class Core.Installation.CallbackConverter(callback_group: InstallationCallbackGroup)[源代码]

基类:object

回调转换器。

将 InstallationCallbackGroup 的回调接口转换为 minecraft_launcher_lib 所需的 CallbackDict 格式,实现不同回调系统之间的适配。

该转换器负责将底层库的回调事件转换为上层应用可以理解的回调格式, 支持多种安装任务类型的回调处理。

callback_group

回调组实例。

Type:

InstallationCallbackGroup

logger

日志记录器实例。

Type:

logging.Logger

__init__(callback_group: InstallationCallbackGroup) None[源代码]

初始化回调转换器。

参数:

callback_group -- InstallationCallbackGroup 实例,用于处理转换后的回调。

get_callback_dict(task_type: InstallationTaskType) CallbackDict[源代码]

获取指定任务类型的 CallbackDict。

根据任务类型创建相应的回调字典,用于与 minecraft_launcher_lib 交互。

参数:

task_type -- 安装任务类型。

返回:

转换后的回调字典,包含 setStatus、setProgress 和 setMax 回调。

返回类型:

CallbackDict

on_task_error(error: Exception) None[源代码]

处理任务错误回调

参数:

error -- 发生的错误

reset() None[源代码]

重置转换器状态

Minecraft启动器库 (minecraft_launcher_lib)

内置的minecraft_launcher_lib库,提供Minecraft启动和管理的底层功能。

备注

这是一个内置的第三方库,提供Minecraft的安装、启动等底层功能。 详细文档请参考 minecraft-launcher-lib官方文档