HMCL是一款Minecraft启动器,拥有上十万的用户,已于早期已GPL v3协议开源,很多人吐槽看不懂HMCL源代码,现特给出简单的代码结构示意。
HMC共用代码
org.jackhuang.hellominecraft.*(除launcher包以外)都是HMCSM和HMCL共用的工具类,包含:
~.logging 日志包,用于处理日志信息,HMCL除了Launcher以及CrashReporter类其他类均使用该包下的日志类输出调试信息。
~.tasks 任务包,包含任务窗口以及一些常用任务,譬如文件下载,Task类为任务基类,任何任务都会继承此类,ParallelTask用于执行并行任务,TaskList类维护一个任务窗口内的任务列表,遇到ParallelTask会简单地将所包含需要并行执行的任务专门新开线程执行,TaskWindow类为任务窗口类,包含UI代码。
~.utils 工具包,包含大部分工具类,包括IO操作,系统操作,网络操作等。
~.version 内含获取Minecraft版本列表代码。
~.views UI包,包括一些UI操作,UI组件,日志窗口。
~.lookandfeel UI包,包含HMCL以及HMCSM的界面外观代码,继承SynthLookAndFeel,以及一些UI组件。
rx.* 为RxJava 0.7.2,用于函数式编程。
HMCL代码
org.jackhuang.hellominecraft.launcher.*为HMCL主体代码,包含:
~.launch 启动包 内含主要的启动核心代码,~.settings.Profile为启动核心的配置类,GameLauncher用于启动获取到的启动代码或生成一键启动,MinecraftLoader与AbstractMinecraftLoader为主要启动代码生成类,LibraryDownloadTask为Minecraft库下载任务,内含Forge库的checksums与Forge库的xz解压。
~.settings 设置包 内含HMCL的设置文件处理
~.utils.assets 资源包 内含Minecraft资源文件下载类 AssetsMojangLoader为主要类
~.utils.auth 登录包 内含HMCL支持的几种登录模式,OfflineAuth为离线登陆,YggdrasilAuth为正版登录,SkinmeAuth为Skinme登录。
~.utils.download 下载包 内含分配游戏文件下载网络路径代码
~.utils.installers 安装包 内含Forge Optifine LiteLoader的自动安装代码
~.version 版本包 内含操作Minecraft游戏本体代码,版本操作,Mod操作,下载操作,资源分配,JSON解析
~.views UI包 内含HMCL本体界面代码,GameSettingsPanel为游戏设置页,MainFrame为主窗口,MainPagePanel为主页,LauncherSettingsPanel为启动器设置页
HMCSM代码
暂不介绍。