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代码

暂不介绍。

关于Hello Minecraft! Launcher源代码的简介相关推荐

  1. linux百度贴吧自动顶贴,[启动器]Hello Minecraft! Launcher 2 - Win/Mac/Linux

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求助 win8开不了 1.7.2 *** Hello Minecraft! Launcher 2.1.5 *** *** Invoking minecra ...

  2. 如何开发一款Minecraft Launcher

    如何开发一款Minecraft Launcher Minecraft文件介绍 Versions文件夹介绍 版本中的json介绍 Minecraft启动介绍 Libraries介绍 MC参数介绍 lib ...

  3. 精简版Win10/11系统无法登录Xbox及Minecraft Launcher解决方法,不需要重装系统

    对于已经安装了精简版Win10/11的用户来说,你们很幸运,因为无法登录Xbox的解决方法非常简单,而且还更好 1.解决方法,下载官方系统镜像,然后解压到U盘,双击U盘里的setup.exe,一直点下 ...

  4. [Themeda启动器]用Java编写的Minecraft启动器

    启动器全部由本人一人编写完成,作为练手的作品.编写过程磕磕绊绊,大多时间都在查阅各种网上资料. 现在写下这篇文章以供后来者参考. 本启动器预计实现以下内容 启动器预计实现的功能 是否完成 项目名称 功 ...

  5. 手机版java启动器,我的世界Launcher启动器

    我的世界Launcher启动器是一款我的世界的助手,在这个工具中你可以自由体验像素玩法,还可以免费加入其中的挑战,这样玩家就可以轻松感受各种高难度的比拼,而且游戏中有许多关卡,可以让你更好的体验冒险竞 ...

  6. 安德鲁斯Launcher得到的装在手机的应用程序列表

    Launcher最基本的是让所有的应用程序和入口图标的列表.有两种方法来获得,一般: PackageInfo ResolveInfo 执行获取全部APP的Launcher而且同意进行点击事件,进入到应 ...

  7. 好代码是管出来的——使用Git来管理源代码

    软件开发过程中一个重要的产出就是代码,软件的编码过程一般是由一个团队共同完成,它是一个并行活动,为了保证代码在多人开发中能够顺利完成,我们需要使用代码版本控制工具来对代码进行统一存储,并追踪每一份代码 ...

  8. ym——android源代码大放送(实战开发必备)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! 目录 PATH 列表 卷序列号为 000A-8F50 E:. │  javaapk.c ...

  9. Minecraft群组服开服

    Minecraft群组服简介 BungeeCord 是一个群组服务端,非普通 Minecraft 服务端,此服务端只作为一个转发作用,用于将多个子服连接在一起,并可以让玩家在不同的子服之间传送,启动方 ...

最新文章

  1. kafka配置公网IP访问
  2. LeetCode14 最长公共前缀
  3. 16位转8位 winhex_078期中4位2复式3码232,排列五第19079期爱我彩规
  4. 英特尔AIDC2018:神经计算棒二代从天而降,软硬生态合作圈尽露锋芒
  5. 平衡二叉树删除_自平衡二叉树实现及时间复杂度分析
  6. 写一个自己的javascript库
  7. figure字体 latex_LaTeX字体设置(一)
  8. 工作室流量卡如何做才能不封号?
  9. securecrt破解版64位
  10. 计算几何(二) by邓俊辉老师
  11. 【图像分割】基于模糊聚类算法FCM实现图像分割matlab代码
  12. Python生成汉字字符以及对应分辨率的图片
  13. 365值得吗 office_你可能是正版受害者?吐槽Office 365坑爹之处
  14. 易玩通总显示服务器没响应,《魔力宝贝》官方网站|经典魔力 新鲜乐趣
  15. Java Gui 简介
  16. Mac使用技巧之如何禁用独立显卡
  17. GPL协议,LGPL协议,MPL协议
  18. 发那科机器人示教盒复位键是哪个_发那科示教器专业维修 二手FANUC示教器销售...
  19. 【GO语言】棋牌游戏服务器
  20. MySQL初始化以及客户端工具的使用

热门文章

  1. 【闲谈】我为什么不想回答你的问题
  2. 感动世界的50首歌和他们背后的故事3
  3. 单片机学习记录:流水灯
  4. Faster RCNN训练FLIR红外线数据集
  5. 计算机为什么老是重启,电脑总是已计划自动重启怎么办 已计划自动重启怎么关闭...
  6. 学习discovery studio对对接结果进行分析
  7. Java删除Maven下的.lastUpdated文件
  8. Java基础 快速学习(一)
  9. 检查IP或端口是否被封
  10. C#SpinWait和volatile一点温习