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
- class Core.Repository.Config.Constant[源代码]
基类:
Repository
只读配置,用于存储一些固定不变的配置项
- class Core.Repository.Config.Path[源代码]
基类:
Repository
仓库基础
仓库管理模块。
该模块包含路径管理、文件仓库等功能。
请求模块 (request)
请求模块提供网络请求和文件下载功能,包含多种优化的下载器实现。
该模块针对Minecraft的下载场景进行了特别优化,包括:
基础下载器: 提供通用的异步文件下载功能
Minecraft专用下载器: 针对Minecraft大量小文件下载场景优化
优化下载器: 包含内存优化、连接池复用等高级功能
下载缓存: 智能缓存机制,避免重复下载
基础下载器
文件下载器模块。
该模块提供异步文件下载功能,支持进度跟踪、速度监控和下载取消。
- class Core.request.downloader.ConnectionPoolManager(max_connections_per_host: int = 20, max_keepalive_connections: int = 10)[源代码]
基类:
object
HTTP连接池管理器
为不同的域名维护独立的连接池,优化大量小文件下载的性能。
- async Core.request.downloader.get_connection_pool_manager() ConnectionPoolManager [源代码]
获取全局连接池管理器实例
- class Core.request.downloader.FileDownloader(callback_group: IDownloadSingle)[源代码]
基类:
object
异步文件下载器。
提供异步文件下载功能,支持进度跟踪和下载取消。 使用回调组模式统一管理下载事件(开始、进度、速度、完成、错误)。 适用于需要长时间下载大文件的场景。
- _callback_group
回调组,用于处理下载事件
- Type:
- 参数:
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校验和(可选)
- 返回:
下载成功的消息字符串
- 抛出:
DownloadException -- 下载相关错误
NetworkException -- 网络连接错误
FileSystemException -- 文件系统错误
备注
下载过程中会定期检查取消状态
根据文件大小动态调整分块大小
每秒更新一次下载速度
如果无法获取文件大小,进度回调不会被调用
使用回调组统一管理所有下载事件
如果 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. 处理下载失败的自动重试
- class Core.request.downloader.BatchDownloadManager(callback_group: IDownloadMultiThread, tasks: List[DownloadFile], concurrent_count: int | None = None, max_retries: int = 3, batch_size: int = 10)[源代码]
-
批量下载管理器
专门针对大量小文件下载场景优化的下载管理器。 通过批量处理、连接复用等技术提升下载性能。
- __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 -- 批处理大小,每批处理的文件数量
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 -- 最大重试次数
优化下载器
优化的文件下载器模块。
专门针对Minecraft大量小文件下载场景优化的下载器实现。 包含内存优化、连接池复用、智能缓存等功能。
- class Core.request.optimized_downloader.MemoryOptimizedDownloader(callback_group: IDownloadSingle)[源代码]
基类:
object
内存优化的文件下载器
专门针对大量小文件下载场景优化,包含以下特性: 1. 智能内存管理 2. 文件校验缓存 3. 连接池复用 4. 动态分块大小
- __init__(callback_group: IDownloadSingle)[源代码]
初始化内存优化下载器
- 参数:
callback_group -- 回调组接口
下载缓存
下载缓存管理模块。
提供智能缓存机制,避免重复下载已存在且校验正确的文件。 支持文件完整性验证、缓存索引管理等功能。
- class Core.request.download_cache.CacheEntry(file_path: str, url: str, size: int, sha1: str, download_time: float, last_verified: float)[源代码]
基类:
object
缓存条目
- classmethod from_dict(data: Dict) CacheEntry [源代码]
从字典创建
- class Core.request.download_cache.DownloadCache(cache_dir: str = '.download_cache')[源代码]
基类:
object
下载缓存管理器
管理已下载文件的缓存信息,避免重复下载。 提供文件完整性验证、缓存清理等功能。
- 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值
- 返回:
文件是否已缓存且有效
- Core.request.download_cache.get_download_cache() DownloadCache [源代码]
获取全局下载缓存实例
请求模块基础
请求处理模块。
该模块包含网络请求相关的功能,包括文件下载、API调用等。
- class Core.request.FileDownloader(callback_group: IDownloadSingle)[源代码]
基类:
object
异步文件下载器。
提供异步文件下载功能,支持进度跟踪和下载取消。 使用回调组模式统一管理下载事件(开始、进度、速度、完成、错误)。 适用于需要长时间下载大文件的场景。
- _callback_group
回调组,用于处理下载事件
- Type:
- 参数:
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校验和(可选)
- 返回:
下载成功的消息字符串
- 抛出:
DownloadException -- 下载相关错误
NetworkException -- 网络连接错误
FileSystemException -- 文件系统错误
备注
下载过程中会定期检查取消状态
根据文件大小动态调整分块大小
每秒更新一次下载速度
如果无法获取文件大小,进度回调不会被调用
使用回调组统一管理所有下载事件
如果 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版本清单信息。
- 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获取的版本清单数据,通常为包含版本信息的字典
- 抛出:
ApiException -- API调用失败时抛出
NetworkException -- 网络请求失败时抛出
WrappedSystemException -- 其他系统异常时抛出
- class Core.version.minecraft_version.VersionRequestBMCLAPI[源代码]
-
BMCLAPI版本请求器。
继承自VersionRequestOfficial,使用BMCLAPI镜像源获取版本信息。 BMCLAPI提供了Mojang官方API的国内镜像,可以提高访问速度。
- 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获取的版本清单数据,提供结构化的版本信息访问接口。
示例
解析版本数据:
data = {"latest": {"release": "1.21", "snapshot": "24w44a"}, "versions": [...]} version = MinecraftVersion(data) print(f"最新正式版: {version.latest['release']}") print(f"版本总数: {len(version.versions)}")
- 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实例,包含完整的版本信息
- 抛出:
ApiException -- API调用失败时抛出
NetworkException -- 网络请求失败时抛出
WrappedSystemException -- 其他系统异常时抛出
备注
该函数会更新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]]]): 过滤后的版本详情字典
- 返回类型:
包含版本信息的字典,结构如下
- 抛出:
ApiException -- API调用失败时抛出
NetworkException -- 网络请求失败时抛出
WrappedSystemException -- 其他系统异常时抛出
示例
获取正式版本:
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版本清单信息。
- 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获取的版本清单数据,通常为包含版本信息的字典
- 抛出:
ApiException -- API调用失败时抛出
NetworkException -- 网络请求失败时抛出
WrappedSystemException -- 其他系统异常时抛出
- class Core.version.VersionRequestBMCLAPI[源代码]
-
BMCLAPI版本请求器。
继承自VersionRequestOfficial,使用BMCLAPI镜像源获取版本信息。 BMCLAPI提供了Mojang官方API的国内镜像,可以提高访问速度。
- class Core.version.MinecraftVersion(data: Dict[str, Any])[源代码]
基类:
object
Minecraft版本信息解析器。
解析从API获取的版本清单数据,提供结构化的版本信息访问接口。
示例
解析版本数据:
data = {"latest": {"release": "1.21", "snapshot": "24w44a"}, "versions": [...]} version = MinecraftVersion(data) print(f"最新正式版: {version.latest['release']}") print(f"版本总数: {len(version.versions)}")
- 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实例,包含完整的版本信息
- 抛出:
ApiException -- API调用失败时抛出
NetworkException -- 网络请求失败时抛出
WrappedSystemException -- 其他系统异常时抛出
备注
该函数会更新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]]]): 过滤后的版本详情字典
- 返回类型:
包含版本信息的字典,结构如下
- 抛出:
ApiException -- API调用失败时抛出
NetworkException -- 网络请求失败时抛出
WrappedSystemException -- 其他系统异常时抛出
示例
获取正式版本:
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)
用户模块提供用户账户管理和认证功能。
用户管理模块。
该模块包含用户账户管理、认证等功能。
游戏模块 (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、类型、配置等。
- releaseTime
发布时间
- Type:
datetime
- arguments
启动参数(新格式)
- Type:
Dict
- libraries
依赖库列表
- Type:
List
- javaVersion
Java版本要求
- Type:
Dict
- custom_data
自定义数据
- Type:
Dict
- Core.game.local_versions.get_local_minecraft_versions(minecraft_directory: str | Path) List[LocalVersionInfo] [源代码]
获取指定目录下的本地Minecraft版本列表。
扫描Minecraft目录下的versions文件夹,解析每个版本的配置文件, 返回包含详细信息的版本列表。
- 参数:
minecraft_directory -- Minecraft目录路径
- 返回:
本地版本信息列表,按发布时间倒序排列
- 抛出:
FileNotFoundError -- 指定目录不存在
PermissionError -- 没有读取权限
示例
获取本地版本:
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目录路径
- 返回:
版本信息字典列表
游戏进程管理
启动 Minecraft JVM,管理游戏进程的全生命周期
游戏模块基础
游戏管理模块。
该模块提供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、类型、配置等。
- releaseTime
发布时间
- Type:
datetime
- arguments
启动参数(新格式)
- Type:
Dict
- libraries
依赖库列表
- Type:
List
- javaVersion
Java版本要求
- Type:
Dict
- custom_data
自定义数据
- Type:
Dict
- Core.game.get_local_minecraft_versions(minecraft_directory: str | Path) List[LocalVersionInfo] [源代码]
获取指定目录下的本地Minecraft版本列表。
扫描Minecraft目录下的versions文件夹,解析每个版本的配置文件, 返回包含详细信息的版本列表。
- 参数:
minecraft_directory -- Minecraft目录路径
- 返回:
本地版本信息列表,按发布时间倒序排列
- 抛出:
FileNotFoundError -- 指定目录不存在
PermissionError -- 没有读取权限
示例
获取本地版本:
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目录路径
- 返回:
版本信息字典列表
安装模块 (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
任务执行结果数据类。
包含任务执行的详细结果信息。
- result
任务执行结果。
- Type:
Optional[Any]
- 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
调度器配置数据类。
包含调度器的各种配置参数。
- class Core.Installation.scheduler.InstallationScheduler(callback_group: InstallationCallbackGroup, config: SchedulerConfig | None = None)[源代码]
基类:
object
安装调度器。
负责管理和调度安装任务,兼容 InstallationCallbackGroup 接口。 支持任务队列、依赖解析、并发执行和状态管理。
调度器采用生产者-消费者模式,使用优先级队列管理任务, 支持任务依赖检查、失败重试和并发控制。
- callback_group
回调组实例。
- config
调度器配置。
- Type:
- status
当前调度器状态。
- Type:
- logger
日志记录器实例。
- Type:
- __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 -- 任务列表
- 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] [源代码]
获取失败任务
- 返回:
失败任务列表
安装适配器
安装适配器模块
本模块定义了安装适配器接口和具体实现,用于与底层安装库(如 minecraft_launcher_lib)解耦。 通过适配器模式,可以轻松切换不同的底层实现,便于后期重构。
适配器接口: - InstallationAdapter: 安装适配器基类 - VanillaInstallationAdapter: 原版游戏安装适配器 - ForgeInstallationAdapter: Forge 安装适配器 - FabricInstallationAdapter: Fabric 安装适配器 - QuiltInstallationAdapter: Quilt 安装适配器
- class Core.Installation.adapter.InstallationAdapter(minecraft_directory: str | Path)[源代码]
基类:
ABC
安装适配器基类。
定义了安装适配器的通用接口,所有具体的安装适配器都应该继承此类。 通过适配器模式,实现与底层安装库的解耦,便于后期重构和扩展。
- logger
日志记录器实例。
- Type:
- __init__(minecraft_directory: str | Path) None [源代码]
初始化安装适配器。
- 参数:
minecraft_directory -- Minecraft 安装目录路径。
- abstract install(version_id: str, callback: CallbackDict, **kwargs) bool [源代码]
执行安装操作。
- 参数:
version_id -- 要安装的版本 ID。
callback -- 回调函数字典,用于报告安装进度和状态。
**kwargs -- 其他安装参数。
- 返回:
安装是否成功。
- 返回类型:
- 抛出:
VersionNotFound -- 当指定版本不存在时抛出。
UnsupportedVersion -- 当版本不受支持时抛出。
- class Core.Installation.adapter.VanillaInstallationAdapter(minecraft_directory: str | Path)[源代码]
-
原版 Minecraft 安装适配器。
负责原版 Minecraft 的安装,包括游戏文件、资源文件、库文件等。 使用 minecraft_launcher_lib 库进行实际的安装操作。
- install(version_id: str, callback: CallbackDict, **kwargs) bool [源代码]
安装原版 Minecraft。
- 参数:
version_id -- 要安装的 Minecraft 版本 ID。
callback -- 回调函数字典,用于报告安装进度。
**kwargs -- 其他安装参数。
- 返回:
安装成功返回 True,失败返回 False。
- 返回类型:
- 抛出:
VersionNotFound -- 当指定版本不存在时抛出。
- class Core.Installation.adapter.ForgeInstallationAdapter(minecraft_directory: str | Path)[源代码]
-
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。
- 返回类型:
- 抛出:
VersionNotFound -- 当指定 Forge 版本不存在时抛出。
- class Core.Installation.adapter.FabricInstallationAdapter(minecraft_directory: str | Path)[源代码]
-
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。
- 返回类型:
- 抛出:
VersionNotFound -- 当指定 Minecraft 版本不存在时抛出。
UnsupportedVersion -- 当 Minecraft 版本不支持 Fabric 时抛出。
- class Core.Installation.adapter.QuiltInstallationAdapter(minecraft_directory: str | Path)[源代码]
-
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。
- 返回类型:
- 抛出:
VersionNotFound -- 当指定 Minecraft 版本不存在时抛出。
UnsupportedVersion -- 当 Minecraft 版本不支持 Quilt 时抛出。
安装任务
安装任务模块
本模块定义了安装任务的抽象类和具体实现,包括游戏安装、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
安装任务抽象基类。
定义了安装任务的通用接口和生命周期管理。 所有具体的安装任务都应该继承此类并实现抽象方法。
- priority
任务优先级。
- Type:
- status
当前任务状态。
- Type:
- result
任务执行结果。
- Type:
Optional[Any]
- logger
日志记录器实例。
- Type:
- __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。
- 返回类型:
- abstract validate(**kwargs) bool [源代码]
验证任务执行条件。
子类必须实现此方法来验证任务是否可以执行。
- 参数:
**kwargs -- 验证参数。
- 返回:
验证通过返回 True,否则返回 False。
- 返回类型:
- abstract get_estimated_duration() int [源代码]
获取任务预估执行时间。
子类必须实现此方法来提供任务的预估执行时间。
- 返回:
预估执行时间(秒)。
- 返回类型:
- can_execute(completed_tasks: List[str]) bool [源代码]
检查任务是否可以执行(依赖是否满足)。
- 参数:
completed_tasks -- 已完成的任务 ID 列表。
- 返回:
如果所有依赖都已完成返回 True,否则返回 False。
- 返回类型:
- 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)[源代码]
-
游戏安装任务。
负责安装指定版本的 Minecraft 游戏,包括下载游戏文件、 资源文件和依赖库等。
- adapter
用于执行安装的适配器实例。
- Type:
- __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 -- 任务执行参数
- 返回:
执行是否成功
- 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)[源代码]
-
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 -- 任务执行参数
- 返回:
执行是否成功
- 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)[源代码]
-
资源验证任务
负责验证游戏资源文件的完整性。
- __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 -- 任务执行参数
- 返回:
执行是否成功
- class Core.Installation.tasks.CompositeInstallationTask(task_id: str, name: str, subtasks: List[InstallationTask], description: str = '', priority: TaskPriority = TaskPriority.NORMAL, parallel: bool = False)[源代码]
-
复合安装任务
由多个子任务组成的复合任务,可以按顺序或并行执行子任务。
- __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 -- 任务执行参数
- 返回:
执行是否成功
回调转换器
回调转换器模块
本模块提供了回调转换器,用于将 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
回调组实例。
- logger
日志记录器实例。
- Type:
- __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
- class Core.Installation.callback_converter.MultiTaskCallbackConverter(callback_group: InstallationCallbackGroup)[源代码]
-
多任务回调转换器。
支持多个任务的回调转换,可以跟踪多个任务的状态并提供统一的回调接口。 该转换器能够计算多个任务的总体进度,并在所有任务完成时触发完成回调。
- _task_states
任务状态跟踪字典。
- Type:
Dict[InstallationTaskType, Dict[str, Any]]
- __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
安装模块基础
安装调度模块
本模块提供了一个兼容 InstallationCallbackGroup 的 Model 层安装调度工具, 实现了与 minecraft_launcher_lib 的解耦,支持多种安装任务的调度和管理。
主要组件: - InstallationScheduler: 核心调度器,负责任务调度和状态管理 - InstallationAdapter: 适配器接口,实现与底层库的解耦 - InstallationTask: 安装任务抽象类和具体实现 - CallbackConverter: 回调转换器,处理不同回调接口的转换
- class Core.Installation.InstallationScheduler(callback_group: InstallationCallbackGroup, config: SchedulerConfig | None = None)[源代码]
基类:
object
安装调度器。
负责管理和调度安装任务,兼容 InstallationCallbackGroup 接口。 支持任务队列、依赖解析、并发执行和状态管理。
调度器采用生产者-消费者模式,使用优先级队列管理任务, 支持任务依赖检查、失败重试和并发控制。
- callback_group
回调组实例。
- config
调度器配置。
- Type:
- status
当前调度器状态。
- Type:
- logger
日志记录器实例。
- Type:
- __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 -- 任务列表
- 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] [源代码]
获取失败任务
- 返回:
失败任务列表
- class Core.Installation.InstallationAdapter(minecraft_directory: str | Path)[源代码]
基类:
ABC
安装适配器基类。
定义了安装适配器的通用接口,所有具体的安装适配器都应该继承此类。 通过适配器模式,实现与底层安装库的解耦,便于后期重构和扩展。
- logger
日志记录器实例。
- Type:
- __init__(minecraft_directory: str | Path) None [源代码]
初始化安装适配器。
- 参数:
minecraft_directory -- Minecraft 安装目录路径。
- abstract install(version_id: str, callback: CallbackDict, **kwargs) bool [源代码]
执行安装操作。
- 参数:
version_id -- 要安装的版本 ID。
callback -- 回调函数字典,用于报告安装进度和状态。
**kwargs -- 其他安装参数。
- 返回:
安装是否成功。
- 返回类型:
- 抛出:
VersionNotFound -- 当指定版本不存在时抛出。
UnsupportedVersion -- 当版本不受支持时抛出。
- class Core.Installation.VanillaInstallationAdapter(minecraft_directory: str | Path)[源代码]
-
原版 Minecraft 安装适配器。
负责原版 Minecraft 的安装,包括游戏文件、资源文件、库文件等。 使用 minecraft_launcher_lib 库进行实际的安装操作。
- install(version_id: str, callback: CallbackDict, **kwargs) bool [源代码]
安装原版 Minecraft。
- 参数:
version_id -- 要安装的 Minecraft 版本 ID。
callback -- 回调函数字典,用于报告安装进度。
**kwargs -- 其他安装参数。
- 返回:
安装成功返回 True,失败返回 False。
- 返回类型:
- 抛出:
VersionNotFound -- 当指定版本不存在时抛出。
- class Core.Installation.ForgeInstallationAdapter(minecraft_directory: str | Path)[源代码]
-
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。
- 返回类型:
- 抛出:
VersionNotFound -- 当指定 Forge 版本不存在时抛出。
- class Core.Installation.FabricInstallationAdapter(minecraft_directory: str | Path)[源代码]
-
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。
- 返回类型:
- 抛出:
VersionNotFound -- 当指定 Minecraft 版本不存在时抛出。
UnsupportedVersion -- 当 Minecraft 版本不支持 Fabric 时抛出。
- class Core.Installation.QuiltInstallationAdapter(minecraft_directory: str | Path)[源代码]
-
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。
- 返回类型:
- 抛出:
VersionNotFound -- 当指定 Minecraft 版本不存在时抛出。
UnsupportedVersion -- 当 Minecraft 版本不支持 Quilt 时抛出。
- class Core.Installation.InstallationTask(task_id: str, name: str, description: str = '', priority: TaskPriority = TaskPriority.NORMAL, dependencies: List[str] | None = None)[源代码]
基类:
ABC
安装任务抽象基类。
定义了安装任务的通用接口和生命周期管理。 所有具体的安装任务都应该继承此类并实现抽象方法。
- priority
任务优先级。
- Type:
- status
当前任务状态。
- Type:
- result
任务执行结果。
- Type:
Optional[Any]
- logger
日志记录器实例。
- Type:
- __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。
- 返回类型:
- abstract validate(**kwargs) bool [源代码]
验证任务执行条件。
子类必须实现此方法来验证任务是否可以执行。
- 参数:
**kwargs -- 验证参数。
- 返回:
验证通过返回 True,否则返回 False。
- 返回类型:
- abstract get_estimated_duration() int [源代码]
获取任务预估执行时间。
子类必须实现此方法来提供任务的预估执行时间。
- 返回:
预估执行时间(秒)。
- 返回类型:
- can_execute(completed_tasks: List[str]) bool [源代码]
检查任务是否可以执行(依赖是否满足)。
- 参数:
completed_tasks -- 已完成的任务 ID 列表。
- 返回:
如果所有依赖都已完成返回 True,否则返回 False。
- 返回类型:
- 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)[源代码]
-
游戏安装任务。
负责安装指定版本的 Minecraft 游戏,包括下载游戏文件、 资源文件和依赖库等。
- adapter
用于执行安装的适配器实例。
- Type:
- __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 -- 任务执行参数
- 返回:
执行是否成功
- 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)[源代码]
-
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 -- 任务执行参数
- 返回:
执行是否成功
- 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)[源代码]
-
资源验证任务
负责验证游戏资源文件的完整性。
- __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 -- 任务执行参数
- 返回:
执行是否成功
- class Core.Installation.CallbackConverter(callback_group: InstallationCallbackGroup)[源代码]
基类:
object
回调转换器。
将 InstallationCallbackGroup 的回调接口转换为 minecraft_launcher_lib 所需的 CallbackDict 格式,实现不同回调系统之间的适配。
该转换器负责将底层库的回调事件转换为上层应用可以理解的回调格式, 支持多种安装任务类型的回调处理。
- callback_group
回调组实例。
- logger
日志记录器实例。
- Type:
- __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
Minecraft启动器库 (minecraft_launcher_lib)
内置的minecraft_launcher_lib库,提供Minecraft启动和管理的底层功能。
备注
这是一个内置的第三方库,提供Minecraft的安装、启动等底层功能。 详细文档请参考 minecraft-launcher-lib官方文档。