Unlucky Launcher v0.0.1-alpha
CI / fmt (rustfmt --check) (push) Canceled after 0s
CI / clippy (ubuntu-latest) (push) Canceled after 0s
CI / clippy (windows-latest) (push) Canceled after 0s
CI / test (ubuntu-latest) (push) Canceled after 0s
CI / test (windows-latest) (push) Canceled after 0s
CI / build release (ubuntu-latest) (push) Canceled after 0s
CI / build release (windows-latest) (push) Canceled after 0s
Guards / core 零 UI 守门 (push) Canceled after 0s
Guards / 文件行数 ≤400 守门 (push) Canceled after 0s
Guards / 依赖许可与来源(cargo-deny) (push) Canceled after 0s
CI / fmt (rustfmt --check) (push) Canceled after 0s
CI / clippy (ubuntu-latest) (push) Canceled after 0s
CI / clippy (windows-latest) (push) Canceled after 0s
CI / test (ubuntu-latest) (push) Canceled after 0s
CI / test (windows-latest) (push) Canceled after 0s
CI / build release (ubuntu-latest) (push) Canceled after 0s
CI / build release (windows-latest) (push) Canceled after 0s
Guards / core 零 UI 守门 (push) Canceled after 0s
Guards / 文件行数 ≤400 守门 (push) Canceled after 0s
Guards / 依赖许可与来源(cargo-deny) (push) Canceled after 0s
Rust 原生单文件 Minecraft 启动器:CLI 完整可用(install/launch/accounts/java/diagnose/agent), MCP server 接入外部 Agent 工具,GUI 开发中。
This commit is contained in:
commit
bc41dfcf7d
517 files changed
+92844
No files matched your search
@@ -0,0 +1,252 @@
|
||||
//! 六维修复动作的参数类型(`fix_action.rs` 的载荷 + 几个小枚举)。
|
||||
//!
|
||||
//! 由 `rules.rs` 用 `#[path]` 声明并统一导出;文件拆分只为守 400 行上限。
|
||||
|
||||
use serde::Deserialize;
|
||||
|
||||
/// 建议的 JVM 实现。
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Deserialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum JavaVendor {
|
||||
/// 不限定(HotSpot 优先)。
|
||||
#[default]
|
||||
Any,
|
||||
/// 必须 HotSpot(OpenJ9 等不兼容实现的反面)。
|
||||
Hotspot,
|
||||
}
|
||||
|
||||
impl JavaVendor {
|
||||
/// 稳定字符串。
|
||||
#[must_use]
|
||||
pub const fn as_str(self) -> &'static str {
|
||||
match self {
|
||||
Self::Any => "any",
|
||||
Self::Hotspot => "hotspot",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 图形侧要修的那一类设置。
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Deserialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum GraphicsSetting {
|
||||
/// 不指定具体项,只表达「图形相关」。
|
||||
#[default]
|
||||
Any,
|
||||
/// 渲染器(OpenGL 核心/兼容、ANGLE、软渲染)。
|
||||
Renderer,
|
||||
/// 显卡驱动。
|
||||
Driver,
|
||||
/// 图形 API(MC 26.2+ 的「默认 / 优先 Vulkan / 优先 OpenGL」三选一)。
|
||||
GraphicsApi,
|
||||
/// 分辨率 / 资源包分辨率。
|
||||
Resolution,
|
||||
/// 覆盖层类软件(RTSS、Discord 等)。
|
||||
Overlay,
|
||||
/// 软件渲染兜底。
|
||||
SoftwareRenderer,
|
||||
}
|
||||
|
||||
impl GraphicsSetting {
|
||||
/// 稳定字符串。
|
||||
#[must_use]
|
||||
pub const fn as_str(self) -> &'static str {
|
||||
match self {
|
||||
Self::Any => "any",
|
||||
Self::Renderer => "renderer",
|
||||
Self::Driver => "driver",
|
||||
Self::GraphicsApi => "graphics_api",
|
||||
Self::Resolution => "resolution",
|
||||
Self::Overlay => "overlay",
|
||||
Self::SoftwareRenderer => "software_renderer",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 对 mod 的处理方式。
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Deserialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum ModAction {
|
||||
/// 移出 mods 目录。
|
||||
#[default]
|
||||
Remove,
|
||||
/// 暂时禁用(挪到 `.disabled`)。
|
||||
Disable,
|
||||
/// 换一个版本 / 换替代品。
|
||||
Replace,
|
||||
/// 升级到兼容版本。
|
||||
Upgrade,
|
||||
}
|
||||
|
||||
impl ModAction {
|
||||
/// 稳定字符串。
|
||||
#[must_use]
|
||||
pub const fn as_str(self) -> &'static str {
|
||||
match self {
|
||||
Self::Remove => "remove",
|
||||
Self::Disable => "disable",
|
||||
Self::Replace => "replace",
|
||||
Self::Upgrade => "upgrade",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 要重装/修复的组件。粒度对齐 download/game 侧的组件概念,便于 agent 直接调用。
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum ComponentKind {
|
||||
/// Java 运行时本身。
|
||||
Java,
|
||||
/// 游戏主 jar。
|
||||
GameJar,
|
||||
/// 版本清单(version JSON)。
|
||||
GameJson,
|
||||
/// 未指定具体 loader。
|
||||
Loader,
|
||||
/// Fabric loader。
|
||||
Fabric,
|
||||
/// Forge。
|
||||
Forge,
|
||||
/// NeoForge。
|
||||
#[serde(rename = "neoforge")]
|
||||
NeoForge,
|
||||
/// OptiFine。
|
||||
#[serde(rename = "optifine")]
|
||||
OptiFine,
|
||||
/// natives 原生库。
|
||||
Natives,
|
||||
/// mods 目录(含「jar 被解压成目录」的修复)。
|
||||
Mods,
|
||||
/// libraries 库文件。
|
||||
Libraries,
|
||||
/// assets 资源。
|
||||
Assets,
|
||||
/// MixinBootstrap 等前置。
|
||||
MixinBootstrap,
|
||||
}
|
||||
|
||||
impl ComponentKind {
|
||||
/// 稳定字符串。
|
||||
#[must_use]
|
||||
pub const fn as_str(self) -> &'static str {
|
||||
match self {
|
||||
Self::Java => "java",
|
||||
Self::GameJar => "game_jar",
|
||||
Self::GameJson => "game_json",
|
||||
Self::Loader => "loader",
|
||||
Self::Fabric => "fabric",
|
||||
Self::Forge => "forge",
|
||||
Self::NeoForge => "neoforge",
|
||||
Self::OptiFine => "optifine",
|
||||
Self::Natives => "natives",
|
||||
Self::Mods => "mods",
|
||||
Self::Libraries => "libraries",
|
||||
Self::Assets => "assets",
|
||||
Self::MixinBootstrap => "mixin_bootstrap",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 换 Java 的参数。
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct ChangeJava {
|
||||
/// 建议的大版本(17 / 21 …)。
|
||||
#[serde(default)]
|
||||
pub required_major: Option<u32>,
|
||||
/// 允许的最高大版本(老 Forge 只能用 Java 8 时给 `8`)。
|
||||
#[serde(default)]
|
||||
pub max_major: Option<u32>,
|
||||
/// 从该命名捕获组取 `class file version N`,按 `N - 44` 换算成 Java 大版本。
|
||||
#[serde(default)]
|
||||
pub class_file_version_group: Option<String>,
|
||||
/// JVM 实现偏好。
|
||||
#[serde(default)]
|
||||
pub vendor: JavaVendor,
|
||||
/// 给用户看的补充说明。
|
||||
#[serde(default)]
|
||||
pub note: Option<String>,
|
||||
}
|
||||
|
||||
/// 调内存的参数。
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct AdjustMemory {
|
||||
/// 建议的 `-Xmx`(MB);规则不确定时留空,由 UI 按物理内存算。
|
||||
#[serde(default)]
|
||||
pub suggested_xmx_mb: Option<u32>,
|
||||
/// `-Xmx` 的下限(MB)。
|
||||
#[serde(default)]
|
||||
pub min_xmx_mb: Option<u32>,
|
||||
/// 需要 32 位 → 64 位 Java(「Could not reserve enough space」类)。
|
||||
#[serde(default)]
|
||||
pub need_64bit_java: bool,
|
||||
/// 需要用户扩大系统虚拟内存 / 关掉占内存的程序。
|
||||
#[serde(default)]
|
||||
pub increase_system_swap: bool,
|
||||
/// 补充说明。
|
||||
#[serde(default)]
|
||||
pub note: Option<String>,
|
||||
}
|
||||
|
||||
/// 改图形设置的参数。
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct ChangeGraphics {
|
||||
/// 要改的设置类别。
|
||||
#[serde(default)]
|
||||
pub setting: GraphicsSetting,
|
||||
/// 建议更新显卡驱动。
|
||||
#[serde(default)]
|
||||
pub update_driver: bool,
|
||||
/// 建议的目标值(如 `854x480`、`OpenGL 兼容模式`)。
|
||||
#[serde(default)]
|
||||
pub suggested_value: Option<String>,
|
||||
/// 补充说明。
|
||||
#[serde(default)]
|
||||
pub note: Option<String>,
|
||||
}
|
||||
|
||||
/// 删/禁/换 mod 的参数。
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct RemoveMod {
|
||||
/// modid 列表,允许 `{group}` 模板(由规则命名捕获组代入)。
|
||||
#[serde(default)]
|
||||
pub mod_ids: Vec<String>,
|
||||
/// 处理方式。
|
||||
#[serde(default)]
|
||||
pub action: ModAction,
|
||||
/// 补充说明。
|
||||
#[serde(default)]
|
||||
pub note: Option<String>,
|
||||
}
|
||||
|
||||
/// 重装/修组件的参数。
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct Reinstall {
|
||||
/// 要修的组件。
|
||||
pub component: ComponentKind,
|
||||
/// 出问题的路径提示(来自规则捕获组或原文)。
|
||||
#[serde(default)]
|
||||
pub path_hint: Option<String>,
|
||||
/// 补充说明。
|
||||
#[serde(default)]
|
||||
pub note: Option<String>,
|
||||
}
|
||||
|
||||
/// 求助/上报的参数。
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
pub struct SeekHelp {
|
||||
/// 建议导出诊断包(日志 + 崩溃报告 + 清单 + 环境)。
|
||||
#[serde(default)]
|
||||
pub export_diagnostics: bool,
|
||||
/// 还需要用户补充什么(「把日志上限调到 20000 行再复现」)。
|
||||
#[serde(default)]
|
||||
pub needs_more_info: Vec<String>,
|
||||
/// 补充说明。
|
||||
#[serde(default)]
|
||||
pub note: Option<String>,
|
||||
}
|
||||
Reference in new issue
Block a user