Suite

架构概览

ArcartXSuite 整体架构图、宿主+模块设计理念与核心组件关系

架构概览

ArcartXSuite 是专为 ArcartX 客户端 MOD 生态构建的全场景核心套件。一个插件覆盖 29 个功能领域,统一 ArcartX UI 体验,模块间深度联动。

整体架构图

graph TB
    subgraph 宿主薄壳
        Plugin["ArcartXSuitePlugin<br/>Bukkit 插件主类"]
        Protection["ProtectedClassLoader<br/>保护层(静态注入)"]
    end
 
    subgraph 业务核心 SuiteCoreImpl
        ConfigDiag["ConfigDiagnosticEngine<br/>配置诊断引擎"]
        Guard["ClientPacketGuard<br/>客户端包守卫"]
        Bridges["BridgeLifecycleManager<br/>桥接生命周期"]
        Keybind["KeybindService<br/>全局按键"]
        CrossServer["CrossServerService<br/>跨服传输"]
        ClientEvent["ClientEventLifecycleManager<br/>客户端事件路由"]
        Storage["StorageManagerImpl<br/>统一存储层"]
        Scheduler["SchedulerServiceImpl<br/>统一调度"]
        Registry["ModuleRegistry<br/>模块注册表"]
    end
 
    subgraph 全局桥接 GlobalBridgeFactory
        ItemSrc["ItemSourceRegistry<br/>物品来源"]
        Currency["CurrencyBridgeManager<br/>货币池"]
        Attr["AttributeBridgeRegistry<br/>属性桥接"]
        Aria["AriaBridge<br/>脚本桥接"]
    end
 
    subgraph 模块层 modules/
        M1["Module 1"]
        M2["Module 2"]
        M3["... 29 个模块"]
    end
 
    subgraph 外部依赖
        ArcartX["ArcartX 客户端 MOD"]
        Redis["Redis"]
        Proxy["BungeeCord/Velocity"]
        DB["MySQL / SQLite"]
    end
 
    Plugin -->|"反射加载"| SuiteCoreImpl
    Protection --> Plugin
    SuiteCoreImpl --> Registry
    Registry --> GlobalBridgeFactory
    Registry --> M1
    Registry --> M2
    Registry --> M3
    Bridges --> ArcartX
    CrossServer --> Redis
    CrossServer --> Proxy
    Storage --> DB

宿主 + 模块设计理念

ArcartXSuite 采用 宿主薄壳 + 业务核心 + 可插拔模块 的三层架构:

层级职责特点
宿主薄壳 (ArcartXSuitePlugin)加载保护层、反射加载业务核心不引用任何加密业务类,可明文交付
业务核心 (SuiteCoreImpl)编排所有子系统:桥接、模块、安全、存储加密交付,运行时解密加载
模块层 (modules/*.jar)各功能领域独立实现仅依赖 axs-api 接口,核心实现可完全混淆

核心设计原则

  1. 接口隔离:模块仅通过 axs-api 中的接口与宿主通信,核心实现类可被 ProGuard 完全混淆,模块无法直接引用内部类。

  2. 桥接集中管理:所有 ArcartX 桥接由 BridgeLifecycleManager 统一创建、初始化和关闭,模块只通过 ModuleContext 获取 API 接口。

  3. ClassLoader 隔离:每个模块拥有独立的 ModuleClassLoader,模块之间默认隔离,通过 Capability 机制进行安全的跨模块通信。

  4. Capability 跨模块通信:模块通过 registerCapability / getCapability 发布和查找能力,实现松耦合的模块间协作。

核心组件关系

graph LR
    subgraph 生命周期管理
        BLM["BridgeLifecycleManager"]
        CELM["ClientEventLifecycleManager"]
    end
 
    subgraph 模块管理
        MR["ModuleRegistry"]
        MCL["ModuleClassLoader"]
        CR["CapabilityRegistry"]
        CPR["ClientPacketRouter"]
    end
 
    subgraph 全局桥接
        GBF["GlobalBridgeFactory"]
    end
 
    subgraph 安全
        CPG["ClientPacketGuard"]
    end
 
    subgraph 跨服
        CSS["CrossServerService"]
    end
 
    subgraph 存储
        SMI["StorageManagerImpl"]
    end
 
    BLM -->|"提供桥接接口"| MR
    CELM -->|"路由客户端事件"| MR
    CPG -->|"频率校验"| CPR
    MR --> MCL
    MR --> CR
    MR --> CPR
    MR --> GBF
    MR --> CSS
    MR --> SMI

子项目划分

ArcartXSuite/
├── axs-api/          公开 API 契约(模块仅依赖此)
├── axs-core/         宿主核心实现(含 ProGuard 混淆)
├── axs-placeholder/  PlaceholderAPI 桥接子模块
├── modules/          29 个可插拔模块(每个独立 jar)
├── proxy/            代理端插件(跨服传输)
│   ├── common/       共享代码
│   ├── bungee/      BungeeCord 插件
│   └── velocity/    Velocity 插件
├── native/           C/C++ 安全库(JNI)
├── proguard/         混淆规则
├── scripts/          Python 构建脚本
├── keys/             密钥版本目录
└── src/main/         宿主本体源码
    └── src/modern/   跨版本兼容代码(1.20.2+)

依赖关系

axs-api  ←  所有模块 compileOnly 依赖(模块编译时只见 API 接口)

axs-core  ←  实现 axs-api,含 SuiteCoreImpl(宿主核心)

modules/*  ←  compileOnly 依赖 axs-api + Spigot + 第三方插件
proxy/*    ←  独立构建,不依赖 axs-api

技术栈

项目版本/说明
Java17+
Minecraft1.20.1+(Spigot / Paper)
ArcartX 客户端 MOD必需
Gradle8.10.2(CI 锁定)
连接池HikariCP
跨服Redis + BungeeCord/Velocity 双后端
安全Native(C/C++ JNI)+ Ed25519 签名 + AES-GCM 加密

文档导航

本页目录