三葉Leaves Author

我是一个 Minecraft 模组服的服主,我的服务器经常更新。
而服务器更新的同时,玩家的客户端也需要更新(可能是更新模组,配置文件或者启动器配置)而每次玩家手动下载客户端文件并且手动找到对应的目录进行各种文件覆盖操作比较繁琐。所以我计划在下次发布客户端文件的时候,里面自带一个 updater.exe 程序能自动处理更新,这样以后每次再有更新,玩家只需要一键就能自动帮他们更新好客户端。

当前项目就是一个客户端实例,请你先仔细阅读客户端的文件夹结构,然后帮我设计并且完成这个程序,技术选型的时你应当选择可靠易用的方案。更新程序或脚本可能需要满足以下要求:

  • 需要能定位到并且修改 .minecraft/versions/启梦小镇/ 里的指定内容,因为 versions 文件夹可能包括多个实例,启梦小镇 是用来游玩我的服务器的,也可能出现其他的用户自己创建的单人存档实例,程序需要在复杂的文件夹结构中找到并且识别到指定文件夹。
  • 我每次需要更新的内容不是固定的,比如有时候需要更新 mods 文件夹内的内容,有时候可能需要更新 PCL 文件夹内的指定内容(这样用户就能看到自定义的启动器背景图或者背景音乐)。所以需要能联网获取此次需要更新的内容并且更新。
  • 最好每次用户启动 Plain Craft Launcher 2.exe 的时候,能自动检查当前客户端是不是最新版本,如果不是的话应该让用户选择是否更新。
  • 尽量简化玩家那边的操作和使用逻辑。

我计划做成一个单个文件 三叶更新器.exe,这个更新器集成了检查和更新客户端的功能,仅仅在更新成功以后才会启动 PCL 程序。
每次更新时,我只需要在服务器那边声明需要更新的文件和路径之类的以及当前版本号,玩家每次启动 三叶更新器.exe 之后会自动检查服务器那边的版本号,如果落后则提示用户选择是否更新。
关于此更新程序的源码,请你把 TMSU (Trileaf Minecraft Server Updater 的缩写,其中 trileaf 是我个人品牌的名称。如果有更合适的程序命名思路你也应当推荐) 作为项目的根目录输出到其中。最后打包出来的 exe 程序应当集成所有需要的功能或者依赖,如此一来以后发布整合包的时候我只需要加上这个 exe 程序即可,而无需带着 TMSU 文件夹内的源码。TMSU 文件夹内的源码我计划开源到 github 方便其他服主使用。
服务器那边尽量不做成程序,而是提供一个文件,用于给 updater 读取版本号以及更新信息,以及提供更新用到的文件。
最后,每次更新文件的过程应当方便,最好能支持文件夹的上传。因为MC模组动辄几百个,一个个取哈希然后编辑不现实。
你无需现在就帮我写程序,而是请你帮我想一个方案,并且详细论述在这方案下服主每次更新需要怎么做。如果我觉得可行,你再开始。

  • 标题:
  • 作者: 三葉Leaves
  • 创建于 : 2025-06-11 10:41:06
  • 更新于 : 2025-06-12 12:44:03
  • 链接: https://blog.oksanye.com/ce6c260ba6a2/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录