必要项:
1. 能够下载并读取version_manifest_v2.json,以及各版本json、assets json。
2. 对于涉及的以下链接,必须将其下载,并备份到指定文件夹:
a) https://piston-meta.mojang.com/x/y/z.abc 或https://launchermeta.mojang.com/x/y/z.abc → ./net.minecraft.meta/x/y/z.abc
b) https://piston-data.mojang.com/x/y/z.abc 或 https://launcher.mojang.com/x/y/z.abc → ./net.minecraft.data/x/y/z.abc
c) 必须处理所有涉及的assets index.json,并将其中引用的assets 从(例如)https://resources.download.minecraft.net/ab/abcdefg 下载到 ./net.minecraft.assets/ab/abcdefg
d) 对于 https://libraries.minecraft.net/com/mojang 开头的所有链接,都应该按照其地址(如 /com/mojang/brigadier/1.14.514/brigadier-1.14.514.jar)下载到例如 ./com.mojang.libraries/com/mojang/brigadier/1.14.514/brigadier-1.14.514.jar,并且如果文件后缀是jar,应当尝试下载对应的sources.jar(brigadier-1.14.514-sources.jar)以及javadoc.jar(brigadier-1.14.514-javadoc.jar)。如果404不应该中止程序,而是在控制台和日志文件输出警告。
3. 尽量支持尽可能多的版本,支持最低版本的上限为正式版1.0.0。
4. 由于网络环境的不确定性,必须支持中止后继续下载,即如果下载因connection timeout中止,下次开始时,应该从中止的文件继续下载,已经下载的文件不要继续下载,不能落掉任何一个文件。思路:可以通过本地缓存文件的方式来保存下载栈的信息。(应该理解我指的『下载栈』是什么意思罢)
5. 程序应当为开源或自由软件。不强求上传至云git仓库,只要大家能阅览并编译源码即可。
加分项:
1. 对于能校验sha1码的文件,可以尝试从download.mcbbs.net等国内镜像源下载,但如果从镜像下载后校验不匹配或404,必须从源站重新下载。
2. 对于下载的每个文件,或者中止时未完成的文件(栈顶文件)进行SHA-1校验工作(if possible)
减分项:
1. 对某些版本的json文件不支持
2. 除以上所述文件还下载过多其他文件
3. 您的作品未指定开源许可证
如果金粒不够我可以加
1. 能够下载并读取version_manifest_v2.json,以及各版本json、assets json。
2. 对于涉及的以下链接,必须将其下载,并备份到指定文件夹:
a) https://piston-meta.mojang.com/x/y/z.abc 或https://launchermeta.mojang.com/x/y/z.abc → ./net.minecraft.meta/x/y/z.abc
b) https://piston-data.mojang.com/x/y/z.abc 或 https://launcher.mojang.com/x/y/z.abc → ./net.minecraft.data/x/y/z.abc
c) 必须处理所有涉及的assets index.json,并将其中引用的assets 从(例如)https://resources.download.minecraft.net/ab/abcdefg 下载到 ./net.minecraft.assets/ab/abcdefg
d) 对于 https://libraries.minecraft.net/com/mojang 开头的所有链接,都应该按照其地址(如 /com/mojang/brigadier/1.14.514/brigadier-1.14.514.jar)下载到例如 ./com.mojang.libraries/com/mojang/brigadier/1.14.514/brigadier-1.14.514.jar,并且如果文件后缀是jar,应当尝试下载对应的sources.jar(brigadier-1.14.514-sources.jar)以及javadoc.jar(brigadier-1.14.514-javadoc.jar)。如果404不应该中止程序,而是在控制台和日志文件输出警告。
3. 尽量支持尽可能多的版本,支持最低版本的上限为正式版1.0.0。
4. 由于网络环境的不确定性,必须支持中止后继续下载,即如果下载因connection timeout中止,下次开始时,应该从中止的文件继续下载,已经下载的文件不要继续下载,不能落掉任何一个文件。思路:可以通过本地缓存文件的方式来保存下载栈的信息。(应该理解我指的『下载栈』是什么意思罢)
5. 程序应当为开源或自由软件。不强求上传至云git仓库,只要大家能阅览并编译源码即可。
加分项:
1. 对于能校验sha1码的文件,可以尝试从download.mcbbs.net等国内镜像源下载,但如果从镜像下载后校验不匹配或404,必须从源站重新下载。
2. 对于下载的每个文件,或者中止时未完成的文件(栈顶文件)进行SHA-1校验工作(if possible)
减分项:
1. 对某些版本的json文件不支持
2. 除以上所述文件还下载过多其他文件
3. 您的作品未指定开源许可证
如果金粒不够我可以加
BrassiCold 发表于 2023-5-2 17:16
莫 搞了一个 但达不到你要求 寄了
刚看了,可取的部分很多
再改改?
美用的飞物 发表于 2023-5-2 18:46
刚看了,可取的部分很多
再改改?
我是需要下载几乎所有版本的()
已实现
修改后的
再次修改后的
BrassiCold 发表于 2023-5-2 20:31
已实现
修改后的 2.0
再次修改后的 3.0不要在意奇葩版本号
抱歉可能没说明白()
需要从version_manifest_v2.json中下载所有MC版本json(比1.6.3版本时间戳晚的)以及其中的所有的指定链接
可能需要了解一下version_manifest.json、version.json和assets.json的格式
不需要网页爬虫哈
BrassiCold 发表于 2023-5-2 20:31
已实现
修改后的 2.0
再次修改后的 3.0不要在意奇葩版本号
补充:v2思路很好!
美用的飞物 发表于 2023-5-2 21:07
抱歉可能没说明白()
需要从version_manifest_v2.json中下载所有MC版本json(比1.6.3版本时间戳晚的)以 ...
那寄了
再搓搓再搓搓
用法:安装nodejs环境;在程序目录下执行
- npm install;
没有实现的点,以及原因:
1.c:以https://piston-meta.mojang.com/v ... 5e94b0e/23w17a.json为例,它有个属性assetIndex,assetIndex的子属性url指向https://piston-meta.mojang.com/v ... 78a32fc72d98/5.json,里面有一些看起来像是资源文件的东西,但它不是完整url,我也不知道怎么给拼接成完整链接,所以就先跳过这一项了
4:程序会在下载文件前检查磁盘上是否存在该文件。没有下载完的文件是不会保存到硬盘的,所以不用担心重新下载后文件损坏的问题,而已经下载完的文件当然是跳过了,所以也不需要记录上次下载到哪了。关于下载超时的问题,目前是只要某个文件没有下载完成,就会持续下载下去。这当然不太好,但是考虑到不同大小的文件下载耗时有很大区别,所以应该先确定一个合理的超时时间。
加分项1:还没想好怎么实现,主要是感觉这块的逻辑不是很顺
加分项3:文件的sha1不仅存在于源json中,也存在于它的url path中,这就保证了它的path是唯一的,而path又被作为该文件的保存路径,因此不可能出现某一文件被更新了,需要替换的情况。(新的文件会被保存在新的路径)
破损的鞘翅 发表于 2023-5-3 20:01
用法:安装nodejs环境;在程序目录下执行
没有实现的点,以及原因:
"minecraft/lang/cy_gb.json": {"hash": "63e1cb5a8d914a3acb8ce5963e04ba6103a3d2aa", "size": 402097},
https://resources.download.minec ... 5963e04ba6103a3d2aa
asset 举个例子就是这样
破损的鞘翅 发表于 2023-5-3 20:01
已更新:
用法:安装nodejs环境;在程序目录下执行
一会来验收,感谢你的回答!
另:
加分项1:不妨反过来,如果bmclapi超时了,或者bmclapi的sha1不对,或者bmclapi它404了,再用官方源
(建议这一点设置一个配置项:A: 按照你帖子里说的优先官方源,B: 按照本回复优先bmclapi。如果添加了这一配置项,并且程序可用,我会往上加奖励。
美用的飞物 发表于 2023-5-4 18:33
一会来验收,感谢你的回答!
另:
加分项1:不妨反过来,如果bmclapi超时了,或者bmclapi的sha1不对,或 ...
配置如图所示:
就在index.js的最后,直接改就行。(懒得单独搞一个配置文件了
破损的鞘翅 发表于 2023-5-4 21:19
配置如图所示:
就在index.js的最后,直接改就行。(懒得单独搞一个配置文件了
所以这一版是优先使用镜像吗?如何在 A 与 B 之间切换?